
夏普比率衡量投资组合在承担单位风险下获得的超额收益,计算需先求组合日收益率、减去无风险利率得到超额收益,再计算超额收益的均值和标准差,公式为(组合平均超额收益)/(组合收益率的标准差)。
夏普比率(Sharpe Ratio)是衡量投资组合风险调整后收益效率的核心指标,核心逻辑是“收益与风险的权衡”。公式为:
[ \text{夏普比率} = \frac{R_p - R_f}{\sigma_p} ]
其中,(R_p) 是投资组合的日收益率均值,(R_f) 是无风险利率(如1年期国债收益率),(\sigma_p) 是组合日收益率的样本标准差(衡量收益波动性/风险)。
类比:就像“每跑1公里消耗的卡路里”,夏普比率是“每承担1单位风险获得的超额收益”,能更客观比较不同组合的收益效率(比如基金、股票组合)。
| 指标 | 定义 | 计算方式 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 夏普比率 | 风险调整后超额收益 | (组合均值 - 无风险利率)/标准差 | 比较不同组合的收益效率(如基金、股票组合) | 需匹配无风险利率的时点(如日利率对应日数据) |
| 特雷诺比率 | 基于贝塔的风险调整收益 | (组合均值 - 无风险利率)/贝塔 | 侧重系统风险(贝塔)的影响 | 需已知市场指数收益率 |
| 詹森Alpha | 超额收益的绝对值 | 组合均值 - [无风险利率 + 贝塔×市场超额收益] | 衡量组合是否跑赢市场(超越贝塔贡献) | 需市场指数收益率 |
假设输入数据:
df 包含列:'stock1', 'stock2', 'stock3'(各股票日收益率),以及 'risk_free'(无风险利率,日值)。计算步骤(伪代码):
import pandas as pd
# 假设数据(日收益率)
data = {
'stock1': [0.01, -0.02, 0.03], # 日收益率
'stock2': [0.005, 0.01, -0.01],
'stock3': [-0.01, 0.02, 0.00],
'risk_free': [0.002, 0.002, 0.002] # 无风险利率(日值)
}
df = pd.DataFrame(data)
# 1. 计算组合日收益率(等权重加权)
portfolio_return = (df[['stock1', 'stock2', 'stock3']].sum(axis=1)) / 3
# 2. 计算平均超额收益(组合均值 - 无风险利率均值)
avg_excess = portfolio_return.mean() - df['risk_free'].mean()
# 3. 计算组合收益率的标准差(波动率)
std_dev = portfolio_return.std()
# 4. 计算夏普比率(日数据,若需年化乘以√252)
sharpe_ratio = avg_excess / std_dev
print(f"夏普比率: {sharpe_ratio:.4f}")
“夏普比率是衡量投资组合风险调整后收益的指标,核心公式是(组合平均日收益率减去无风险利率)除以组合日收益率的标准差。计算步骤第一步,先计算组合日收益率,比如用等权重加权各股票日收益率,得到组合的每日收益;第二步,计算这个组合收益率的平均值,然后减去无风险利率(比如1年期国债的日收益率),得到超额收益的均值;第三步,计算组合收益率的样本标准差,即波动率;最后用超额收益均值除以标准差,就是夏普比率。比如假设有一个包含三只股票的组合,各股票日收益率和1年期国债日利率,通过pandas计算组合收益,再按上述步骤算出夏普比率,就能评估这个组合的收益效率。”
df.fillna(method='ffill'))或均值填充,避免计算时出错。portfolio_return = df[stock_cols] * weight_vector.sum(axis=1),再按上述步骤计算。