摘要: 月收益40%伴随20%回撤,夏普比率约0.88,单月收益难以证明策略有效,需警惕过拟合与运气成分,稳健程序化交易应追求长期正期望。

月收益40%与最大回撤20%的数学关系

程序化交易账户在一个自然月内实现40%的净值增长,期间从峰值到谷底的最大回撤为20%。这两个数字放在一起,直接给出收益回撤比2:1。假设无风险利率忽略不计,月度夏普比率大约等于0.4除以0.2,得到2.0。年化夏普比率需要把月度数据乘以根号12,结果约为6.93。这个数值远远超过正常股票或期货策略的合理范围。正常趋势跟踪策略年化夏普比率0.5到1.5已经不错,高频做市策略可能达到3到5。月夏普2.0对应年化近7,只有两种可能:策略存在严重过拟合,或者当月行情恰好极度配合。

股票市场单月40%收益,通常需要满仓抓住连续涨停板或者重仓押注单一题材。期货市场由于杠杆效应,单月40%收益并不罕见。10倍杠杆下,标的价格波动4%就能带来40%的账户收益。最大回撤20%意味着在盈利过程中曾经出现过一次幅度为20%的净值回撤。如果使用10倍杠杆,对应标的价格反向波动2%。这个回撤幅度在期货日内交易中属于常态。

程序化交易一个月收益率40%最大回撤20%效果到底怎么样

程序化交易中回撤与收益的匹配逻辑

任何程序化交易策略的净值曲线都包含三个核心参数:收益率、最大回撤、收益回撤比。收益回撤比低于1的策略通常被认为风险收益不匹配。收益回撤比在2到3之间属于良好。超过5则极度可疑。月收益40%回撤20%的收益回撤比为2,表面上处于可接受区间。问题在于时间维度只有一个月。一个月的交易样本量对于股票策略可能只有20个交易日,对于期货日内策略可能有数百笔交易。20个交易日的股票策略信号次数可能不到10次。10次交易的结果完全可能是随机分布。用10次交易计算出的夏普比率和最大回撤,置信区间极宽。

假设策略真实年化夏普比率为1.0,月度夏普比率期望值为0.289。观测到月度夏普2.0的概率在正态分布下约为4%。这个概率不算极低,100个策略中大约有4个会在某个月表现出如此亮眼的业绩。如果同时测试了100个策略变体,挑选最好的那个展示,这就是典型的数据挖掘偏差。

股票与期货程序化交易的不同评估标准

股票程序化交易受限于T+1和涨跌停制度,单月40%收益通常需要集中持仓少数股票。这种策略的容量极小,资金规模超过500万就会显著影响冲击成本。期货程序化交易没有T+1限制,保证金交易允许更高换手率。商品期货主力合约的日波动率在1%到3%之间。一个使用2倍杠杆的期货策略,月收益40%对应标的月度收益20%。螺纹钢或原油期货在供需矛盾突出时完全可能月度波动20%。这种行情下,任何顺势策略都能获得高收益。问题在于这种行情持续时间很短。

评估期货程序化策略需要看滚动夏普比率和滚动最大回撤。单月数据没有统计意义。建议至少观察12个月,并且覆盖不同市场状态。股票策略需要观察24个月以上,因为股票市场牛熊周期更长。

代码演示:计算滚动夏普比率与回撤


import numpy as np

import pandas as pd

def rolling_sharpe(returns, window=252, risk_free=0.0):

    excess = returns - risk_free / window

    mean = excess.rolling(window).mean()

    std = excess.rolling(window).std()

    return np.sqrt(window) * mean / std

def max_drawdown(nav_series):

    peak = nav_series.expanding().max()

    drawdown = (nav_series - peak) / peak

    return drawdown.min()

# 假设日收益率序列

daily_returns = pd.Series(np.random.normal(0.001, 0.02, 500))

nav = (1 + daily_returns).cumprod()

print('年化夏普:', rolling_sharpe(daily_returns).iloc[-1])

print('最大回撤:', max_drawdown(nav))

这段代码展示如何从日收益率序列计算滚动夏普比率和最大回撤。月收益40%对应日收益率复利约为1.13%。日波动率如果为2%,月度夏普比率大约为1.13% / 2% * sqrt(20) = 2.53。与前面估算的2.0接近。

过拟合识别与样本外测试方法

程序化交易策略开发中最危险的陷阱是过拟合。月收益40%回撤20%的组合如果是在参数优化后得到,几乎可以确定是过拟合。识别方法包括:

  • 样本外测试:保留最近30%数据不参与优化,仅用于验证。

  • 参数敏感性:微调参数后收益是否剧烈变化。

  • 蒙特卡洛模拟:对交易顺序随机打乱,观察收益分布。

  • 前向滚动优化:每季度重新优化参数,观察实盘与回测差异。

期货程序化交易还需要考虑滑点和手续费。一个日频策略每月交易20次,每次滑点1个最小变动价位。螺纹钢最小变动价位1元/吨,一手10吨,滑点10元。手续费约5元。单次成本15元。如果每手盈利目标200元,成本占比7.5%。月收益40%的策略如果依赖高频交易,成本可能吃掉大部分利润。

从单月业绩到长期期望的转换条件

月收益40%最大回撤20%的效果评估,需要回答三个问题。策略的交易逻辑是否具有经济学基础。股票策略是否基于盈利惊喜或分析师修正。期货策略是否基于展期收益或库存周期。逻辑越坚实,单月高收益越可能持续。策略的换手率和容量是否支持资金规模。月收益40%的策略如果容量只有100万,管理1亿资金时收益会降到1%以下。策略是否经过严格样本外测试。没有样本外验证的业绩只能视为随机结果。

长期正期望的策略,月度收益分布通常呈现右偏。大部分月份小赚或小亏,少数月份大赚。月收益40%属于右尾事件。最大回撤20%属于正常波动。如果未来12个月中,有10个月收益在-5%到+5%之间,1个月收益30%,1个月收益-15%,那么整体年化收益约20%,最大回撤20%。这个结果已经优于多数公募基金。单月40%只是起点,不是常态。

程序化交易者应当把注意力从单月收益率转移到滚动12个月夏普比率和卡玛比率。卡玛比率等于年化收益除以最大回撤。月收益40%回撤20%如果持续12个月,年化收益480%,卡玛比率24。这个数值在真实市场中不存在。现实中的顶级对冲基金年化收益20%到40%,最大回撤10%到20%,卡玛比率1到3。任何声称月收益40%且长期稳定的策略,都需要用实盘跟踪记录验证。