Lumibot实战:SMA 10/30在苹果上17笔交易有赚有赔,短周期信号的真实面目
一个写完策略能直接挂到券商实盘的框架
Lumibot 是一个支持回测和实盘无缝切换的 Python 量化交易库——你在回测里写的策略代码,不改一行就能挂到 Alpaca、Interactive Brokers、TD Ameritrade 上实盘运行。从安装到跑通第一个双均线回测,手动操作需要 1-2 小时(装库、配数据源、写策略类、处理交易日志)。本文用自然语言驱动的方式把它压缩到几分钟——不需要手动写策略类、不需要配券商接口、不需要手动整理交易数据。最终产出是一份 quantstats-lumi Tearsheet、一份每日净值 CSV 和一份逐笔交易日志。
起步
从 EasyClaw 官网下载安装。不需要手动装 Lumibot、不需要注册券商。
打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。
创建 Skill
在 Skill Creator 里告诉 EasyClaw:
帮我把 GitHub 上的 Lumibot(https://github.com/Lumiwealth/lumibot)做成一个回测 Skill。我希望输入股票代码、起止日期和 SMA 参数就能跑双均线策略,用 Yahoo Finance 数据源,输出完整的绩效指标和交易日志。
Skill 创建好后:
用 Lumibot 回测 AAPL,SMA 快线 10 慢线 30,从 2024 年中到现在

回测结果:17 笔交易,有赢有亏
| 指标 | 值 | 怎么看 |
|---|---|---|
| 最终净值 | $125,587(+25.59%) | 两年赚了四分之一 |
| CAGR | 13.02% | 年化收益可观 |
| 夏普比率 | 0.649 | 中等水平——承担了一定波动 |
| 索提诺 | 0.893 | 下行风险控制尚可 |
| 最大回撤 | -24.84% | 最长持续了 191 天——半年在水下 |
| 总交易次数 | 17 | 9 买 8 卖,频率中等 |
| 胜率 | ~50% | 有赚有赔,真实感强 |
部分交易明细
| # | 日期 | 动作 | 价格 | 数量 | 金额 |
|---|---|---|---|---|---|
| 1 | 2024-08-13 | BUY | $229.22 | 436 | $100,000 |
| 2 | 2024-09-04 | SELL | $224.04 | 436 | $97,682 |
| 3 | 2024-09-30 | BUY | $247.32 | 395 | $97,682 |
| 4 | 2024-11-14 | SELL | $240.13 | 395 | $94,882 |
前四笔交易就亏了两次。8 月买入后 9 月初就遇到死叉信号被迫卖出,亏了约 2.3%。9 月底再次金叉买入,11 月又被死叉踢出来,又亏了 3%。SMA 10/30 的短周期参数在震荡行情中就是这样——信号频繁切换、假突破多、小亏不断。但后面几笔长趋势中的交易逐渐覆盖了前期的亏损,最终靠大赢交易拉回了正收益。
输出文件
LUMIBOT_AAPL_output/
├── tearsheet.html ← Bokeh 交互式报告(累计收益/回撤/月度热图/滚动夏普)
├── ️ tearsheet.png ← Matplotlib 四面板静态图表
├── stats.csv ← 每日净值 + 收益率序列
├── trades.csv ← 逐笔交易日志
├── metrics.json ← 机器可读 JSON 指标
└── report.md ← 完整 Markdown 报告

Lumibot 的策略基类——on_trading_iteration
Lumibot 的策略逻辑不是写在 next() 里,也不是写在 price_event() 里,而是写在一个叫 on_trading_iteration() 的方法里。这个方法在每个时间步(回测中每天、实盘中按 sleeptime 间隔)执行一次。每次执行时,策略检查均线交叉信号、获取当前持仓状态、然后决定买入、卖出还是什么都不做:
| API | 作用 |
|---|---|
| get_last_price() | 获取当前价格——策略的眼睛 |
| get_position() | 查询当前持仓状态 |
| create_order() + submit_order() | 创建并提交订单——回测和实盘完全一样 |
| sell_all() | 一键清仓 |
这种设计的核心优势在于回测和实盘的代码是同一份。你在回测中验证了策略逻辑后,把数据源从 Yahoo Finance 换成 Alpaca 或 Interactive Brokers 的实时行情,策略就能直接挂到实盘上跑。不需要重写交易逻辑、不需要适配券商 API——Lumibot 已经封装好了。
常见报错
| 错误 | 原因 | 解决方法 |
|---|---|---|
| Yahoo 数据拉取超时 | Yahoo Finance API 临时不可用 | 等待片刻重试 |
| 回测中 buy 信号但未成交 | 资金不足以覆盖手续费 | 调高初始资金或降低手续费率 |
什么时候该用 Lumibot
最适合的场景:你已经有 Interactive Brokers、Alpaca 或 TD Ameritrade 的账户,想把自己写的美股策略从回测直接切到实盘。Lumibot 对这些传统券商的支持是目前开源框架中最全面的。
不太适合的场景:你只做 A 股。Lumibot 的数据源和券商接口主要覆盖美股市场,对 A 股的原生支持有限。另外,SMA 10/30 这种短周期参数在波动大但趋势弱的标的上表现会比较挣扎——就像这次回测中频繁的小亏。
下一步
- 把 SMA 参数从 10/30 换成 50/200——信号数量从 17 笔大幅减少,看收益和回撤如何变化
- 如果已经有 IB 或 Alpaca 账户,把 Skill 生成的策略代码直接挂到实盘上跑一周
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=752
- Lumibot GitHub:https://github.com/Lumiwealth/lumibot
你愿意用更频繁的交易换取灵活性,还是偏好低频但确定性更高的策略?欢迎聊聊。

浙公网安备 33010602011771号