自建美股期权新挂牌收益率监控:从选型到树莓派部署
记录一次从"随手问问"到"跑起来的树莓派服务"的完整过程:期权数据源怎么选、 期权价格构成和Delta/IV这些指标到底怎么用、新挂牌合约监控系统怎么设计、 上线后踩的几类坑(计算逻辑、产品设计、运行环境、部署运维)、一次真实 历史数据回测的探索过程(yfinance/IBKR碰壁,MarketData.app走通)、 从历史统计到"单持仓vs历史基准"对比工具、独立于通用筛选的重点关注清单, 以及完整的部署和日常运维步骤。附可直接照抄的配置和命令。
起点:一个简单的需求
最初的想法很朴素:卖美股期权(covered call / cash-secured put)的时候, 想要一个自动化的收益率追踪工具——输入股票代码、行权价、方向(卖put还是 卖call)、目标年化收益率,系统自动跟踪报价,一旦达到目标就发Telegram通知, 内容包括触发时间、当前报价、方向、收益率。
这个需求本身不复杂,年化收益率公式也很直接:
sell_put: annual_yield = premium / strike * (365 / days_to_expiry)
sell_call: annual_yield = premium / underlying_price * (365 / days_to_expiry)
(premium建议用bid价,不要用mid价——流动性差的合约mid价容易虚高, 后面会讲到为什么。)
真正花时间的地方,是把"数据从哪来"这件事想清楚。
数据源选型:一圈比较下来
选型过程大致是这样的排除法:
| 数据源 | 免费性 | 维护成本 | 结论 |
|---|---|---|---|
| IBKR API | 已有账户免费 | 需要TWS/Gateway常驻,运维重 | 数据最准,但网关断连要自己处理重连 |
| Tradier | 实盘账户免费拿实时数据 | REST接口,不需要常驻网关 | 免费层是sandbox 15分钟延迟,实盘账户才是真实时 |
| Alpaca Basic | $0,开paper账户即可 | WebSocket推送,维护成本最低 | 数据是indicative(非OPRA实时NBBO),仅供参考不能直接当挂单价 |
| Polygon.io(已更名Massive.com) | 免费层有限 | 按量付费 | 适合历史数据/回测,不建议做V1实时监控 |
| 富途OpenAPI | 期权行情需单独付费(约$60/月) | 需要常驻OpenD网关 | 对个人监控场景不划算 |
| 雪盈证券 | 开户送30天试用,之后要交易期权才持续免费 | 底层走IBKR清算 | 不适合"只监控不下单"的用法 |
| yfinance(非官方) | 完全免费,零注册 | 零维护,但随时可能被限流/改版 | 适合先验证逻辑,不建议长期依赖 |
最后选定的策略:先用yfinance把整套逻辑验证通,未来想长期稳定跑, 再迁移到Tradier或Alpaca。数据源在代码里做成了一个可替换的接口 (QuoteProvider),换源不用动上层业务逻辑。