optopsy:期权策略回测与统计分析库,支持38种策略及AI集成

A nimble options research and backtesting library for Python

Branch2Tags19
FilesLast commitLast update
6 months ago
5 months ago
6 months ago
5 months ago
6 months ago
6 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
5 months ago
6 months ago
5 months ago

Badge Badge CI PyPI version Python

Optopsy

一个灵活的期权策略回测与统计库。

Optopsy 是一款 Python 回测引擎,让您能够在几秒钟内从 "SPX 上 45 天到期的铁鹰策略,在 50% 止盈和 2 倍止损条件下与持有至到期相比表现如何?" 这样的问题,获得详细的业绩统计数据,无需依赖电子表格。

完整文档 | API 参考 | 示例

🤖 正在寻找 AI/LLM 集成?

optopsy-mcp 提供高性能 MCP 服务器,用于策略筛选和回测。它基于 Optopsy 引擎的完整 Rust 重写版本构建,专为与大型语言模型无缝交互而设计。

功能特点

  • 38 种内置策略 - 从简单的看涨/看跌期权到铁鹰、蝴蝶、秃鹰、比率价差、衣领、日历价差和对角价差等
  • 逐腿 Delta 目标设定 - 通过每条腿的 target, min, max 参数按 Delta 选择行权价
  • 交易模拟器 - 通过 simulate() 实现带资金跟踪、头寸限制和权益曲线的时间顺序模拟
  • 投资组合模拟 - 通过 simulate_portfolio() 进行加权多策略投资组合回测
  • 提前平仓 - 止损、止盈和最大持有天数规则,实现自动头寸管理
  • 佣金模型 - 支持按合约、基础费用和最低费用结构模拟券商佣金
  • 风险指标 - 通过 compute_risk_metrics() 计算夏普比率、索提诺比率、VaR、CVaR、卡尔玛比率、Omega 比率、尾部比率等
  • 80+ 入场信号 - 通过 pandas-ta-classic 使用技术分析指标(RSI、MACD、布林带、EMA、ATR、隐含波动率排名)筛选入场时机
  • 自定义信号 - 使用 custom_signal() 从任何带有布尔标志列的 DataFrame 生成入场信号
  • 滑点模型 - 支持中间价、点差、基于流动性或逐腿滑点的真实成交模拟
  • 实时数据提供商 - 直接从支持的数据源(如 EODHD)获取期权链和股票价格
  • 智能缓存 - 自动本地缓存已获取数据,并具备缺口检测功能,实现高效重新获取
  • 插件系统 - 通过入口点扩展自定义策略、信号和数据提供商

安装

# Core library only (latest stable release)
pip install optopsy

# With Data CLI (download & cache market data)
pip install optopsy[data]

要求: Python 3.12-3.13、Pandas 2.0+、NumPy 1.26+

数据管理

Optopsy 包含一个独立的数据 CLI,用于下载和缓存历史市场数据。

pip install optopsy[data]

# Download historical options data (requires EODHD_API_KEY)
optopsy-data download SPY
optopsy-data download SPY AAPL TSLA

# Download stock price history
optopsy-data download SPY --stocks

# List available symbols
optopsy-data symbols
optopsy-data symbols -q SPY

# Cache management
optopsy-data cache size
optopsy-data cache clear

数据以 Parquet 文件格式缓存在本地的 ~/.optopsy/cache/ 目录中。重新运行下载操作时,只会获取自上次下载以来的新数据。完整详情请参阅 数据管理文档

核心库快速入门

import optopsy as op

# Load your options data
data = op.csv_data(
    "options_data.csv",
    underlying_symbol=0,
    option_type=2,
    expiration=3,
    quote_date=4,
    strike=5,
    bid=6,
    ask=7,
)

# Backtest long calls and get performance statistics
results = op.long_calls(data)
print(results)

输出:

   dte_range   delta_range  count   mean    std    min    25%    50%    75%    max
0    (0, 7]   (0.2, 0.3]    505   0.64   1.03  -1.00   0.14   0.37   0.87   7.62
1    (0, 7]   (0.3, 0.4]    269   2.34   8.65  -1.00  -1.00  -0.89   1.16  68.00
2   (7, 14]   (0.2, 0.3]    404   1.02   0.68  -0.46   0.58   0.86   1.32   4.40
...

结果按 DTE(到期天数)和 delta 范围分组,展示了百分比收益的描述性统计数据。

模拟器

运行完整的逐笔交易模拟,包括资金跟踪、头寸限制和绩效指标:

result = op.simulate(
    data,
    op.long_calls,
    capital=100_000,
    quantity=1,
    max_positions=1,
    selector="nearest",       # "nearest", "highest_premium", "lowest_premium", or custom callable
    max_entry_dte=45,
    exit_dte=14,
)

print(result.summary)         # win rate, profit factor, max drawdown, etc.
print(result.trade_log)       # per-trade P&L, entry/exit dates, equity
print(result.equity_curve)    # portfolio value over time

该模拟器支持全部 38 种策略。它在每个建仓日选择一笔交易,执行并发头寸限制,并计算完整的权益曲线及相关指标,如胜率、盈利因子、最大回撤和平均持仓天数。

支持的策略

类别 策略
单腿期权 long_calls, short_calls, long_puts, short_puts
跨式/宽跨式期权 long_straddles, short_straddles, long_strangles, short_strangles
垂直价差 long_call_spread, short_call_spread, long_put_spread, short_put_spread
蝶式价差 long_call_butterfly, short_call_butterfly, long_put_butterfly, short_put_butterfly
比率价差 call_back_spread, put_back_spread, call_front_spread, put_front_spread
铁鹰价差 iron_condor, reverse_iron_condor
铁蝶式价差 iron_butterfly, reverse_iron_butterfly
秃鹰价差 long_call_condor, short_call_condor, long_put_condor, short_put_condor
备兑与衣领策略 covered_call, protective_put, collar, cash_secured_put(通过 yfinance 支持实际股票数据)
日历价差 long_call_calendar, short_call_calendar, long_put_calendar, short_put_calendar
对角价差 long_call_diagonal, short_call_diagonal, long_put_diagonal, short_put_diagonal

文档

星标历史

星标历史图表

免责声明

Optopsy 仅用于研究和教育目的。回测结果基于历史数据和简化假设,并未考虑所有现实因素,如流动性限制、执行滑点、行权风险或不断变化的市场条件。过往表现不代表未来结果。在做出任何交易决策前,请务必自行进行尽职调查。

许可证

本项目采用 GNU Affero General Public License v3.0 许可证 - 详情请参见 LICENSE 文件。