第二十六节:基差交易中的资金曲线与绩效评估
做基差交易,光会开仓平仓可不够。
你得知道自己的策略到底行不行。
怎么判断?看资金曲线,做绩效评估。
这一节,我就跟你聊聊夏普比率、最大回撤、胜率、盈亏比这几个核心指标。嗯,都是实战中绕不开的东西。
一、资金曲线:你的交易成绩单
资金曲线,说白了就是你的账户净值随时间变化的折线图。
我每天收盘后都会看一眼。不是看赚了多少,而是看曲线的形态。
一条健康的资金曲线,应该是稳步向上的,回撤小,波动平缓。
如果曲线像过山车一样大起大落,那说明你的风控可能出了问题。
资金曲线的三个观察维度:
- 斜率:代表盈利能力。斜率越陡,赚钱越快,但也要警惕风险。
- 回撤深度:从高点跌下来的幅度。回撤超过20%,很多人的心态就崩了。
- 回撤时长:从回撤开始到创新高用了多久。超过3个月,策略可能失效了。
我个人习惯,每周五收盘后把资金曲线截图保存。时间久了,你就能看出自己的交易节奏。
二、夏普比率:收益与风险的平衡木
夏普比率,衡量的是每承担一单位风险,能换来多少超额收益。
公式很简单:
夏普比率 = (策略年化收益率 - 无风险利率) / 策略年化波动率
举个例子:
你的基差策略年化收益20%,无风险利率3%,年化波动率10%。
那夏普比率就是 (20% - 3%) / 10% = 1.7。
实战经验:
夏普比率大于1,策略算及格。大于2,很不错。大于3,那得好好珍惜。
我在做螺纹钢期现套利时,策略的夏普比率长期在1.5左右。后来加了跨品种对冲,提升到了2.1。
但要注意,夏普比率有个坑——它假设收益是正态分布的。而基差交易的收益分布,往往有肥尾特征。极端行情一来,夏普比率会瞬间变脸。
三、最大回撤:你的心理承受底线
最大回撤,就是从资金曲线最高点,跌到最低点的最大幅度。
这个指标,直接决定了你能不能拿住单子。
我曾经踩过的坑:
2018年做豆粕基差交易,策略回测夏普比率2.3,最大回撤只有8%。我信心满满地上了实盘。
结果遇到中美贸易摩擦,豆粕现货一天涨300点,期货跟涨不及,基差瞬间拉大。账户回撤直接干到15%。
那段时间我整夜睡不着,最后还是减了半仓才扛过去。
所以,回测的最大回撤,至少要打个7折作为你的心理预期。
最大回撤的接受度,因人而异。我个人建议:
- 保守型:最大回撤控制在10%以内
- 稳健型:10%-20%
- 激进型:20%-30%
超过30%,基本就是赌了。基差交易不该这么玩。
四、胜率与盈亏比:一对欢喜冤家
胜率,就是赚钱的交易次数占总交易次数的比例。
盈亏比,是平均每笔盈利除以平均每笔亏损。
这两个指标,天生就是矛盾的。
胜率高,盈亏比往往低。比如做高频的,胜率能到70%,但盈亏比可能只有1.2。
胜率低,盈亏比往往高。比如做趋势跟踪的,胜率30%,盈亏比能到3以上。
基差交易呢?我自己的经验是:
| 策略类型 | 典型胜率 | 典型盈亏比 |
|---|---|---|
| 期现套利(回归) | 55%-65% | 1.5-2.0 |
| 跨期套利 | 50%-60% | 1.8-2.5 |
| 基差趋势跟踪 | 35%-45% | 2.5-4.0 |
你看,没有绝对的好坏。关键看你的交易风格和资金体量。
一个实用的公式:
期望收益 = 胜率 × 盈亏比 - (1 - 胜率)
这个值必须大于0,策略才能长期赚钱。
比如胜率60%,盈亏比1.5:期望收益 = 0.6×1.5 - 0.4 = 0.5。正收益,可以干。
五、把这些指标串起来看
单独看一个指标,容易出问题。
我见过有人炫耀胜率80%,结果一看盈亏比0.5,亏得底裤都没了。
也有人吹夏普比率3.0,结果最大回撤40%,根本拿不住。
正确的做法是:
- 先看最大回撤,能不能接受
- 再看夏普比率,风险调整后收益好不好
- 最后看胜率和盈亏比,理解策略的盈利逻辑
这四个指标,就像汽车的四个轮子。缺一个,车就跑不稳。
六、知识体系结构图
下面这张图,把基差交易的绩效评估逻辑串起来了。你一看就明白。
七、实战中的几个小技巧
最后,分享几个我自己的习惯:
- 滚动评估:不要只看整个周期的数据。我习惯用最近60个交易日的滚动数据来算夏普比率和最大回撤。这样能及时发现策略退化。
- 分品种评估:如果你同时做多个品种的基差交易,一定要分开评估。螺纹钢和豆粕的资金曲线,波动特征完全不同。
- 记录交易日志:每次亏损,我都写一段反思。时间久了,你会发现自己的亏损模式。比如我,每次在基差回归到均值附近时加仓,往往就是回撤的开始。
一个小工具:
我写了个简单的Python脚本,每天自动计算资金曲线的各项指标。代码不长,核心就几行:
import numpy as np
# 假设 equity 是每日净值数组
returns = np.diff(equity) / equity[:-1]
sharpe = np.mean(returns) / np.std(returns) * np.sqrt(252)
max_dd = np.min(equity / np.maximum.accumulate(equity) - 1)
win_rate = np.sum(returns > 0) / len(returns)
profit_loss_ratio = np.mean(returns[returns>0]) / abs(np.mean(returns[returns<0]))
你拿去改改就能用。
嗯,这一节就聊到这儿。
记住,绩效评估不是为了炫耀,而是为了活下去。
你的资金曲线,就是你的交易人生。