企业微信

夏普率高好还是低好?先搞懂它到底在量什么

夏普率这个指标,很多做股票和期货的人天天挂在嘴边。它到底是个啥?说白了,夏普率就是你每承担一单位波动风险,能换来多少超额收益。公式长这样:夏普率 = (策略年化收益率 - 无风险利率) / 策略年化波动率。无风险利率通常拿国债收益率代替,普通人直接理解成“钱存银行能拿到的利息”。

股票和期货交易里,波动就是风险。一只票一年涨了30%,但过程上蹿下跳,最大回撤40%,另一个策略一年也涨30%,但最大回撤只有10%。后者夏普率更高,因为它的收益更平滑,你晚上睡得着觉。

夏普率高好还是低好?答案是:在合理范围内,越高越好。可一旦高得离谱,你就得多个心眼。

夏普率高好还是低好?为什么高夏普策略反而让你赚不到钱?

高夏普率的诱惑与陷阱

假设你看到一个期货CTA策略,回测五年,年化收益25%,夏普率4.5。你第一反应是捡到宝了。先别急。夏普率超过3的策略,在实盘中几乎活不过一年。原因不复杂。

回测里能做出超高夏普,往往靠三种办法。第一是过拟合,把历史数据里的噪音当成规律,参数调到完美。第二是隐藏尾部风险,策略在大部分时间赚小钱,但某一天突然爆仓,回测区间刚好没包含那天。第三是数据窥探,反复测试同一段行情,直到找到夏普率最高的参数。

股票里有个经典例子。你写一个策略,每天买昨天跌得最惨的股票,第二天卖出。回测2019到2021年,夏普率能干到3以上。可2022年一用,直接腰斩。高夏普率来自那三年小盘股反复反弹的特定环境,环境一变,策略就废了。

期货更明显。一个螺纹钢日内策略,回测夏普率5.0,每天赚一点,回撤极小。你实盘跑三个月,某天交易所突然提高保证金,或者夜盘跳空,一天亏掉半年利润。夏普率算的是历史波动,没算这种跳空风险。

夏普率多少算正常

股票多头策略,长期夏普率能到0.8到1.2就算优秀。巴菲特长期夏普率大约0.8,因为他承受了较大回撤。期货CTA策略,因为可以多空双向、杠杆灵活,夏普率1.5到2.5是合理区间。高频策略夏普率会高一些,3左右常见,但容量小,普通人买不到。

夏普率低于0.5的策略,基本不用看。你承担了巨大波动,收益却没比国债高多少,不如直接买指数基金。

夏普率为负,说明策略跑不赢无风险利率,纯属亏钱买卖。

高夏普率不等于高收益

很多人把夏普率和收益率搞混。夏普率高,只说明风险调整后收益好,不代表绝对收益高。一个策略夏普率3.0,年化收益可能只有8%。另一个策略夏普率0.6,年化收益30%。你选哪个?取决于你能承受多大回撤。

期货市场里,杠杆会放大收益和波动。你用一个夏普率1.5的策略,加5倍杠杆,夏普率不变,但年化收益从15%变成75%,最大回撤也从10%变成50%。夏普率没告诉你杠杆后的痛苦。

真正该看的是夏普率、最大回撤、年化收益三个一起看。单独拎一个夏普率出来,容易被数字骗。

怎么用夏普率选股票和期货策略

第一步,算清楚策略的夏普率用的是日收益还是月收益。日收益年化夏普率通常比月收益高,因为日波动被平均掉了。对比两个策略,必须用同一频率。

第二步,看夏普率的稳定性。把回测区间切成四段,每段单独算夏普率。如果一段3.0,另一段0.2,说明策略靠某段行情吃饭,不可持续。

第三步,做压力测试。把最大回撤放大1.5倍,看夏普率变成多少。期货策略还要测试跳空、涨跌停、保证金提高这些极端情况。

第四步,实盘小资金跑三个月。回测夏普率和实盘夏普率差距超过30%,直接放弃。

量化代码里怎么算夏普率

用Python算夏普率很简单。下面这段代码读期货或股票的日收益率序列,算出年化夏普率。


import numpy as np

import pandas as pd

def sharpe_ratio(returns, risk_free=0.02, periods=252):

    excess = returns - risk_free / periods

    if excess.std() == 0:

        return np.nan

    return np.sqrt(periods) * excess.mean() / excess.std()

# 假设df有一列daily_return

df = pd.read_csv('daily_returns.csv')

sr = sharpe_ratio(df['daily_return'])

print(f'年化夏普率: {sr:.2f}')

这段代码里,periods=252是股票一年交易日数,期货夜盘也算进去可以调成244或250。risk_free传0.02代表2%无风险利率。注意,夏普率对收益率分布敏感,如果收益不服从正态分布,夏普率会高估策略质量。

夏普率高好还是低好,最终答案

夏普率高好,但别追求极端高。股票策略夏普率1左右就值得关注,期货策略1.5到2.5算健康。超过3的夏普率,先问三个问题:回测有没有过拟合?尾部风险藏在哪里?实盘滑点和手续费算了吗?

普通人做交易,夏普率是筛子,不是圣杯。用它排除烂策略,别用它迷信高收益。真正赚钱的策略,夏普率往往中等偏上,回撤可控,逻辑简单。那些夏普率5以上的神话,多半是回测软件里的幻觉。