# Python: Example 3.3 import numpy as np import pandas as pd import pandas_datareader as pdr ticker=['AAPL','DIS','EBAY','FB'] # Position setting investment=np.array([0.35, 0.3, 0.25, 0.1]) # Alternatively: try the following three lines # Total investment as 1 million weight=np.array([0.35,0.3,0.25,0.1]) # We set the weight investment=total*weight # We have the same position data=pdr.data.get_data_yahoo(ticker, start="2018-01-01", end="2020-07-18")['Adj Close'] returns=data.pct_change() # percentage returns cov_matrix=returns.cov() var_portfolio=investment.T.dot(cov_matrix).dot(investment)} # var-cov matrix in dollar term stdev_portfolio=np.sqrt(var_portfolio)} #volatility in dollar term var=2.33*stdev_portfolio # An alternative way for the last line mean_portfolio=returns.mean().dot(weight) mean_investment=(1+mean_portfolio)*total from scipy.stats import norm cutoff=norm.ppf(0.01,mean_investment,stdev_portfolio)} # normality assumption kicks in var=total-cutoff