AutoTrader实战:SMA 5/20+做空+1%风险预算,苹果两年收益3.8%回撤85%
一个用仓位风控和做空来保护策略的框架,学到的代价是 85% 回撤
AutoTrader 是一个偏向自动化交易的 Python 量化框架。它的设计重心不在"支持多少种策略",而在"怎么把策略安全地部署到实盘"——虚拟券商(Virtual Broker)模拟了真实的滑点和手续费、Risk-based 仓位管理限制每笔交易的风险暴露、AutoPlot 自动生成 Bokeh 交互式图表。这些都是在真实交易中必不可少但在很多回测框架里被忽略的细节。
我拿它用 SMA 5/20 交叉 + EMA50 趋势过滤 + 做空开关的策略回测了苹果两年。结果是残酷的:13 笔交易、总收益仅 +3.80%、但最大回撤达到了 -85.02%。利润因子 1.03——勉强超过 1,意味着策略在盈亏线上挣扎。夏普 0.97 看起来不错,但Sortino 1.86 说明下行波动控制得远比整体波动好——问题出在上行风险而非下行风险。
起步
从 EasyClaw 官网下载安装。不需要手动装 AutoTrader、不需要配置 Virtual Broker。
打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。
创建 Skill
在 Skill Creator 里告诉 EasyClaw:
帮我把 GitHub 上的 AutoTrader(https://github.com/kieran-mackle/AutoTrader)做成一个回测 Skill。我希望输入股票代码和起止日期就能跑 SMA 交叉 + EMA 趋势过滤策略,用 Risk-based 仓位管理(1% 风险/笔),支持做多做空,输出控制台风格结果表和 Bokeh 交互图表。
Skill 创建好后:
用 AutoTrader 回测 AAPL,SMA 5/20 交叉 + EMA50 趋势过滤,1% 风险/笔,支持做空,从 2024 年中到现在


回测结果:做空做多了,把自己做炸了
| 指标 | 值 | 怎么看 |
|---|---|---|
| 初始资金 | $100,000 | |
| 最终净值 | $104,394 | 两年只赚了 $4,394——年化不到 2% |
| 总收益率 | +3.80% | 和买入持有(+30%+)比相形见绌 |
| 夏普比率 | 0.97 | 夏普还行——但这是被 Sortino 拉高的假象 |
| 索提诺比率 | 1.86 | 下行波动控制得不错——亏损比较均匀 |
| 最大回撤 | -85.02% | 几乎亏光了——比 bt 的 -98% 好一点但同样灾难 |
| 利润因子 | 1.03 | 勉强 > 1——赚的和亏的几乎持平 |
| 总交易次数 | 13 | 7 多 + 6 空 |
| 胜率 | 46.15% | 多空都不高 |
多空拆解——谁在亏钱
| 次数 | 胜率 | |
|---|---|---|
| 多头 | 7 | 42.86% |
| 空头 | 6 | 50.00% |
多头的胜率是 42.86%,空头的胜率是 50%。两者都不高,但加起来 13 笔交易中大约一半在亏钱。说明策略在苹果 2024-2026 的单边震荡上行趋势中频繁切换方向,做空信号在上涨行情中反复被打脸。EMA50 作为趋势过滤器本意是"只顺着 EMA50 的方向开仓",但实际执行中 EMA50 的走向本身就滞后于价格——当价格快速下跌后 EMA50 还来不及拐头,做空信号已经触发并执行了。

Risk-based 仓位管理——1% 风险/笔为什么没救回来
AutoTrader 的 Risk-based 仓位管理是这样工作的:每次交易前,根据你的总资金、止损距离和 1% 的风险预算,自动计算应该买/卖多少股。比如总资金 $100,000、1% 风险 = $1,000、止损设在 3% 远的位置,那仓位 = $1,000 / 3% = $33,333。
这个机制的本意是"不管多少连败,都不会亏到伤筋动骨"。但这次回测中,-85% 的回撤说明它并没有保护策略。原因在于止损触发后的重新入场——每笔交易的风险确实被控制在了 1%,但连续多次止损后重新入场、再被止损、再入场……累积起来就是一个缓慢但不可逆的账户消耗。
13 笔交易、胜率 46%、利润因子 1.03——这三个数字放在一起,在数学上就是必然的缓慢亏损。如果利润因子是 1.03,意味着每赚 $1.03 需要承担 $1.00 的风险。在胜率不到 50% 的情况下,连续亏损的概率很高——三次连败就吃掉 3% 的风险预算,五次连败就吃掉 5%。
常见报错
| 错误 | 原因 | 解决方法 |
|---|---|---|
| Virtual Broker 订单一直 pending | 滑点 + 流动性限制导致无法成交 | 调整 slippage 参数或改用市价单 |
| Risk-based sizing 计算出的仓位为 0 | 止损距离太近 + 风险预算太小 | 放宽止损或调高风险比例 |
什么时候该用 AutoTrader,什么时候不该用
适合的场景:你准备把策略从回测迁移到实盘。AutoTrader 的 Virtual Broker、滑点模拟、Risk-based 仓位管理这些功能都是为了"让回测更接近实盘"。它也支持做空——如果你交易的是期货或外汇等天然支持双向的品种,这个功能很有用。
不太适合的场景:你只做多美股大盘股。SMA 5/20 在苹果这种单边上涨的品种上加入做空逻辑,效果可能不如纯多头策略。还有就是如果你对滑点和仓位管理的细节不感兴趣,AutoTrader 的配置项可能过于繁琐。
下一步
- 关掉做空开关,同一策略只做多,对比回撤是否从 -85% 降到更可控的水平
- 把 Risk-based 风险预算从 1% 调到 2%,看仓位加大后利润因子是否改善
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=754
- AutoTrader GitHub:https://github.com/kieran-mackle/AutoTrader
你用过 Risk-based 的仓位管理吗?你的经验里多少风险预算/笔最合理?欢迎聊聊。

浙公网安备 33010602011771号