VibeTradingVibeTrading
返回博客
Also available inEnglish
TutorialsJuly 19, 202611 min read

Lumibot 新手指南:回测股票与期权策略

本文入门 Lumibot,一个专为股票与期权算法交易设计的 Python 框架,支持事件驱动回测、实盘交易与真实券商模拟。演示简单股票策略与期权策略的回测流程,以及何时使用 Lumibot,是股票期权自动化交易者的重要工具指南,并介绍如何将回测结果与实盘券商模拟对接。

#lumibot#python#backtesting#options#stocks#open source
Risk Disclaimer: This content is for educational purposes only. Trading involves significant risk of loss. Past performance does not guarantee future results. Always do your own research before using any trading tool or strategy.

大多数开源交易框架聚焦加密或期货。Lumibot 不同,它专为股票和期权构建,是想要自动化和回测股票期权策略的股票交易者的宝贵工具。

本文向新手介绍 Lumibot 并演示一次简单回测。

Lumibot 是什么

Lumibot 是一个用于股票和期权算法交易的 Python 框架。它提供:

  • 事件驱动回测
  • 真实券商模拟
  • 支持券商的实盘交易
  • 期权链支持
  • 调度和生命周期管理

它对想要测试期权策略又不想购买昂贵机构软件的交易者特别有用。

快速对比

特性LumibotbacktraderQuantConnect Lean
资产重点股票、期权通用多资产
期权支持有限
易用性新手友好中等陡峭
实盘交易支持通过集成支持
数据源Yahoo、Polygon、AlpacaYahooQuantConnect 数据

安装

在虚拟环境中安装 Lumibot:

python -m venv lumibot-env
source lumibot-env/bin/activate
pip install lumibot

期权数据你可能需要 Polygon API key。基础股票回测可用 Yahoo Finance 免费数据。

简单股票策略

下面是一个 Lumibot 均线交叉策略:

from lumibot.strategies import Strategy
from lumibot.traders import Trader
from lumibot.backtesting import YahooDataBacktesting
from datetime import datetime
 
class SmaCross(Strategy):
    def initialize(self):
        self.symbols = ["AAPL"]
        self.sleeptime = "1D"
 
    def on_trading_iteration(self):
        symbol = self.symbols[0]
        historical_prices = self.get_historical_prices(symbol, 30, "day")
        prices = historical_prices.df["close"]
        sma20 = prices.rolling(20).mean().iloc[-1]
        sma50 = prices.rolling(50).mean().iloc[-1]
 
        if sma20 > sma50 and not self.get_position(symbol):
            self.buy_stock(symbol)
        elif sma20 < sma50 and self.get_position(symbol):
            self.sell_all()

代码可读性强,生命周期方法清晰分离。

回测

用历史数据运行回测:

backtesting_start = datetime(2020, 1, 1)
backtesting_end = datetime(2023, 1, 1)
 
strategy = SmaCross
result = strategy.backtest(
    YahooDataBacktesting,
    backtesting_start,
    backtesting_end,
    parameters={}
)

Lumibot 生成包含收益、回撤和交易历史的报告。

期权策略

Lumibot 在期权方面表现出色。你可以:

  • 加载期权链
  • 按到期日和行权价筛选
  • 买入看涨、看跌和价差
  • 处理行权和指派

期权回测需要特别注意数据质量。免费数据通常不包含完整期权链,严肃的期权研究一般需要 Polygon 等付费数据商。

实盘交易

Lumibot 可连接 Alpaca、Interactive Brokers 等券商。回测中使用的策略代码只需少量改动即可实盘。

实盘前:

  • 充分回测验证
  • 如券商支持,先模拟交易
  • 设置仓位大小限制
  • 监控日志和券商对账单

什么时候用 Lumibot

  • 你交易美股或期权
  • 想要新手友好的 Python 框架
  • 需要期权专用功能
  • 偏好事件驱动模拟

限制

  • 加密和外汇支持有限
  • 免费期权数据不完整
  • 性能对散户足够,但不如机构平台
  • 高级执行功能有限

总结

Lumibot 填补了散户交易者用 Python 回测和自动化股票期权策略的重要空白。它比机构框架更易学,同时提供真实模拟。如果你聚焦美股和期权,Lumibot 是最好的开源起点之一。


相关阅读: 第一个 AI 交易机器人:Alpaca EMA 交叉 | backtrader vs vectorbt | Top AI Trading GitHub 开源项目