Quantitative Risk Management in Python
Dr. Jamsheed Shorish
Computational Economist
Pandas
data analysis libraryprices
.pct_change()
method.dot()
method of returns
prices = pandas.read_csv("portfolio.csv")
returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
.cov()
DataFrame method of returns
and annualize
covariance = returns.cov()*252
print(covariance)
.cov()
DataFrame method of returns
and annualizecovariance
is individual asset variances
covariance = returns.cov()*252
print(covariance)
.cov()
DataFrame method of returns
and annualizecovariance
is individual asset variancescovariance
are covariances between assetscovariance = returns.cov()*252
print(covariance)
weights
in portfolio@
operator in Pythonweights = [0.25, 0.25, 0.25, 0.25] # Assumes four assets in portfolio
portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Series.rolling()
creates a windowwindowed = portfolio_returns.rolling(30)
volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standard Deviation...")
Quantitative Risk Management in Python