多空价差收益序列汇总统计是一个典型的金融绩效统计工具。
核心逻辑基于收益率的矩估计与年化缩放,并计算了夏普比率、最大回撤和胜率。
这里基于网络资料,探索其统计有效性依赖于收益率独立同分布、零无风险利率等假设。
并结合实例代码对各阶段结算过程假设的合理性进行分析和探索。
1 基础理论
1.1 年化
假设每期收益独立同分布,在此基础上定义年华收益率、年化波动。
1)年化收益率
年化收益率的线性缩放来源于期望的线性性质,计算公式如下
2)年化波动
年化波动率的平方根法则来源于方差的可加性,
计算公式如下
当且仅当各期收益不相关(或独立)时,该公式成立。
参考方差和标准差之间的关系,标准差可以表示为:
需要注意的是金融数据常存在自相关、波动率聚集(ARCH/GARCH 效应)、厚尾等。
此时平方根法则可能失效,年化波动率会被高估或低估。
1.2 夏普比率
夏普比率由 William Sharpe 于 1966 年提出,1994 年进一步阐述。
其定义为:
其中
为组合收益
为无风险利率
为组合收益标准差
若使用单期超额收益,年化夏普比率通常乘以。
如果未减去无风险利率,因此是零无风险利率假设下的夏普比率。
需要注意的是,该假设对于短期或低利率环境,该近似可接受;
但在高利率环境或精确评估中,应使用超额收益。
1.3 最大回撤
最大回撤是路径依赖的极端风险度量,不是简单的收益分布分位数。
它衡量的是净值从峰到谷的最大相对跌幅。其统计推断比波动率复杂得多。
Magdon-Ismail & Atiya (2004) 对最大回撤的分布进行了研究,指出最大回撤的期望值依赖于收益的均值、方差以及观测时间长度,且随观测时间增长而增大。
由于它是极值统计量,其样本分布往往右偏,且估计标准误较大。
1.4 胜率
胜率是二项分布参数的估计量。
若每期盈利概率为,则在
个样本中,胜率的方差为:
样本量越大,胜率估计越精确。
但胜率本身不包含盈亏幅度,因此需要与平均盈利/平均亏损等指标结合使用。
2 代码示例
2.1 代码示例
这里示例compute_spread_summary 用于计算多空价差收益序列的汇总统计量。
输入是一个pandas Series,每个元素是某持有期下的收益率,简单收益率,例如 0.01 表示 1%。
horizon表示每个收益观测的持有期(交易日数),默认 1 表示日频收益。
函数返回以下指标:
mean_daily:样本平均每期收益
annualized:年化收益
vol_annual:年化波动率
sharpe:夏普比率(年化收益 / 年化波动率,未扣除无风险利率)
max_drawdown:最大回撤
win_rate:正收益占比
n_periods:有效样本量
def compute_spread_summary(spread_series: pd.Series, horizon: int = 1) -> Dict[str, float]:
"""
Summary stats for long-short spread returns.
Parameters
----------
horizon : holding period of each forward-return observation in trading
days. Annualization uses periods_per_year = 252 / horizon.
"""
s = spread_series.dropna()
if len(s) < 10:
return {k: np.nan for k in [
"mean_daily", "annualized", "sharpe", "vol_annual",
"max_drawdown", "win_rate", "n_periods"
]}
periods_per_year = 252.0 / max(horizon, 1)
mean_d = s.mean()
vol_d = s.std()
ann_ret = mean_d * periods_per_year
ann_vol = vol_d * np.sqrt(periods_per_year)
sharpe = ann_ret / (ann_vol + 1e-10)
# Max drawdown from cumulative
cum = (1 + s).cumprod()
running_max = cum.cummax()
dd = (cum - running_max) / running_max
max_dd = dd.min()
win_rate = (s > 0).sum() / len(s)
return {
"mean_daily": mean_d,
"annualized": ann_ret,
"sharpe": sharpe,
"vol_annual": ann_vol,
"max_drawdown": max_dd,
"win_rate": win_rate,
"n_periods": len(s),
}
2.2 逐阶段分析
1)缺失值与样本量
缺失值与样本量处理代码片段如下
s = spread_series.dropna()
if len(s) < 10:
return {k: np.nan for k in [...]}
首先删除缺失值,避免NaN污染统计量。
若有效样本量少于 10,直接返回所有指标为NaN,表示数据不足以可靠估计统计量。
阈值10是人为设定,并不具有严格统计含义,仅防止极小样本导致荒谬结果。
2)年化因子
年化因子计算如下
periods_per_year = 252.0 / max(horizon, 1)
252 是一年中的交易日数量(常见于美股等市场),用于将日频收益年化。
horizon表示每个收益观测覆盖多少个交易日。例如:
horizon=1 → 年化因子 = 252,表示日收益放大 252 倍得到年化收益;
horizon=5 → 年化因子 = 252/5 = 50.4,表示 5 日收益放大 50.4 倍得到年化收益;
horizon=21(约一个月)→ 年化因子 = 12,表示月收益放大 12 倍。
3)年化
年化收益与年化波动率计算如下
mean_d = s.mean()
vol_d = s.std()
ann_ret = mean_d * periods_per_year
ann_vol = vol_d * np.sqrt(periods_per_year)
s.mean()和s.std()分别是样本均值和样本标准差,默认 ddof=1,即无偏估计。
年化收益使用线性缩放:
其中。
年化波动率使用平方根法则:
这一处理基于独立同分布(i.i.d.)收益率假设:
若每期收益相互独立且方差相同,则
期收益方差等于单期方差的
倍。
因此标准差随
缩放。
4)夏普比率
夏普比率计算代码如下
sharpe = ann_ret / (ann_vol + 1e-10)
夏普比率 = 年化超额收益 / 年化波动率。
这里没有扣除无风险利率,因此严格说是零无风险利率下的夏普比率。
分母加1e-10为防止波动率为零时除零错误。
夏普比率衡量单位总风险所获得的超额收益,是风险调整后收益的核心指标。
5)最大回撤
最大回撤计算代码示例如下
cum = (1 + s).cumprod()
running_max = cum.cummax()
dd = (cum - running_max) / running_max
max_dd = dd.min()
其中:
(1 + s).cumprod()构造净值曲线(初始值为 1),表示复利累积收益。
running_max是历史最高净值。
回撤定义为当前净值相对历史最高净值的相对下跌:
max_dd = dd.min()取所有回撤中的最小值(即最大回撤,通常为负值)。
例如 -0.25 表示最大回撤为 25%。
最大回撤刻画了策略历史上最糟糕的峰谷跌幅,是衡量尾部风险和路径依赖的重要指标。
6)胜率
胜率计算代码片段如下
win_rate = (s > 0).sum() / len(s)
胜率是正收益样本的比例,即收益率为正的次数除以总样本数。
这是二项分布的点估计,不包含盈亏幅度信息,因此单独使用时可能误导,高胜率但平均亏损大。
2.3 假设与局限性
结合以上分析过程,可以得出该函数在以下假设下才具有良好统计意义。
1)收益率独立同分布
年化收益率和波动率的缩放严格依赖于独立性。
实际金融数据存在自相关和波动率聚集,可能导致偏差。
2)零无风险利率
夏普比率未扣除无风险利率,在利率显著不为零时应调整。
3)收益率以小数表示:
(1 + s).cumprod()要求s是小数(如 0.01)。
若传入百分数(如 1.0 表示 1%),净值曲线会严重错误。
4)历史样本代表未来
所有统计量均为样本估计,存在抽样误差,不能直接推断未来。
5)最大回撤的样本敏感性
最大回撤对样本区间非常敏感,延长或缩短时间窗口可能得到完全不同的结果。
样本量不足 10 的处理简单,阈值设定主观,实际应根据数据特征确定最小样本量。
6)波动率年化的平方根法则
如果收益分布厚尾或存在跳跃,平方根法则可能低估极端风险。
reference
- **Sharpe, W. F. (1966).** Mutual Fund Performance. *Journal of Business*, 39(1), 119--138.
------ 夏普比率的最初提出。
- **Sharpe, W. F. (1994).** The Sharpe Ratio. *Journal of Portfolio Management*, 21(1), 49--58.
------ 夏普比率的完整定义与解释。
- **Lo, A. W. (2002).** The Statistics of Sharpe Ratios. *Financial Analysts Journal*, 58(4), 36--52.
------ 夏普比率的统计性质、标准误与假设检验。
- **Magdon-Ismail, M., & Atiya, A. F. (2004).** Maximum Drawdown. *Risk Magazine*, 17(10), 99--102.
------ 最大回撤的分布理论与统计推断。
- **Tsay, R. S. (2010).** *Analysis of Financial Time Series* (3rd ed.). Wiley.
------ 年化波动率、自相关、波动率聚集等时间序列概念。
- **Campbell, J. Y., Lo, A. W., & MacKinlay, A. C. (1997).** *The Econometrics of Financial Markets*. Princeton University Press.
------ 收益分布、随机游走假设与金融计量基础。
- **Bodie, Z., Kane, A., & Marcus, A. J. (2013).** *Investments* (10th ed.). McGraw-Hill.
------ 年化收益、夏普比率、最大回撤等绩效指标的实务解释。