A nimble options research and backtesting library for Python
| Files | Last commit | Last 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 |

一个灵活的期权策略回测与统计库。
Optopsy 是一款 Python 回测引擎,让您能够在几秒钟内从 "SPX 上 45 天到期的铁鹰策略,在 50% 止盈和 2 倍止损条件下与持有至到期相比表现如何?" 这样的问题,获得详细的业绩统计数据,无需依赖电子表格。
🤖 正在寻找 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 |
文档
- 快速入门 - 安装与首次回测
- 策略 - 全部 38 种策略详解
- 参数 - 配置选项参考
- 建仓信号 - 技术分析信号过滤器
- 数据管理 - 独立数据 CLI 与缓存
- 示例 - 常见用例与方法
- API 参考 - 完整函数文档
星标历史
免责声明
Optopsy 仅用于研究和教育目的。回测结果基于历史数据和简化假设,并未考虑所有现实因素,如流动性限制、执行滑点、行权风险或不断变化的市场条件。过往表现不代表未来结果。在做出任何交易决策前,请务必自行进行尽职调查。
许可证
本项目采用 GNU Affero General Public License v3.0 许可证 - 详情请参见 LICENSE 文件。
Introduction
一个为Python设计的灵活的期权回测库【此简介由AI生成】