6个快速了解投资组合的指标,附python 计算代码
投资组合管理学中有6个简单且重要的指标用来给投资者评估现时的收益和风险比例,本文结尾附上python 的代码,使用python 的原因是已有程序库计算这些指标,不用自己实现。
以下是6个指标的简介
1. Sharpe ratio
2. Correlation matrix
3. Max Drawdown
4. Volatility
5. Beta
6. Calmar ratio
夏普比率:基金投资人最爱,任可投资组合或基金都钟爱突出高值夏普比率。这个值描绘了资产回报对投资者所承受的风险补偿程度,值越高越好。
确定投资组合收益率(Rp)确定无风险收益率(Rf)计算投资组合收益率的标准差(σp)
相关性:展示投资组合中每个资产之间的相关性,数值高代表两个资产之间相关性高。即上升/下降时高机率一起上升/下降
Cov(X,Y) 是 XX 和 YY 的协方差,σXσX 是 XX 的标准差,σYσY 是 YY 的标准差。
最大回撤:衡量投资组合某特定时间段内从峰值下降至谷值的最大损失
Peak Value:投资组合或资产在特定时间内的最高价值。Trough Value:在达到最高价值后,投资组合或资产的最低价值。
波动率:某特别时间段投资组合价值的变化幅度
σ 是收益率的标准差,TT 是年化因子(例如,日收益率 T=252T=252,月收益率 T=12T=12)。
贝他值:衡量投资组合相对于市场系统性风险的波动系数。 大于1意味投资组合的波动幅度大于市场
Ra:资产或投资组合的收益率,Rm:市场组合的收益率,Cov(Ra,Rm):资产收益率与市场收益率的协方差,Var(Rm):市场收益率的方差。
卡玛比率: 衡量投资组合和最大回撤之间的关系,数值越高代表投资组口在承受风险越大的情况下回报会越高,公式和夏普比率相似,就是把分母由波动率转为最大回撤值
Annualized Return:投资组合的年化收益率。Maximum Drawdown:投资组合的最大回撤(以绝对值表示,例如20%表示为0.20)。
我将选取英伟达和特斯拉两个股票构成投资组合,时间由2020年-2024年。 以上某些投资指标将使用Quanstat程式库计算
代码如下:
import pandas as pd
import yfinance as yf
import numpy as np
from quantstats import stats
tickers = ['NVDA', 'TSLA']
start_date = '2020-01-01'
end_date = '2024-12-31'
# Download the stock data
stock_data = yf.download(tickers, start=start_date, end=end_date)['Adj Close']
stock_data.count()
#compose 50-50 portfolio and calculate Sharpe Ratio
stock_data['Porfolio'] = 0.5 * stock_data['NVDA'] + 0.5 * stock_data['TSLA']
sharpe_ratio = stats.sharpe(stock_data['Porfolio'].pct_change(), 0.02)
sharpe_ratio
#calcuate Correlation between nvida and tesla
correlation = stock_data['NVDA'].corr(stock_data['TSLA'])
correlation
stock_data['Porfolio'] = 0.5 * stock_data['NVDA'] + 0.5 * stock_data['TSLA']
max_drawdown = stats.max_drawdown(stock_data['Porfolio'])
max_drawdown
#calculate daily Volatility
volatility = stock_data['Porfolio'].pct_change().std()
volatility
#calcualte Beta
sp500_df = yf.download('^GSPC', start=start_date, end=end_date)['Adj Close'].pct_change()
cov = np.cov(stock_data['Porfolio'].pct_change().dropna(), sp500_df.dropna())
beta = cov[0,1] / cov[1,1]
beta
#calculate Calmar ratio
calmar_ratio = stats.calmar(stock_data['Porfolio'].pct_change())
calmar_ratio
投资指标种类很大,计算的数值又因年化或月化有所不同而产生偏差,但以上是最常见的指标,谨供参考。