期权股票回测引擎

optopsy-mcp 是一个高性能的期权和股票回测引擎,作为自托管的MCP服务器提供支持。用户可以通过自然语言描述策略,进行回测、参数优化和市场分析。

  • by goldspanlabs
  • Rust
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 goldspanlabs/optopsy-mcp

使用说明

眼科mcp

一个高性能的期权和股票回溯测试引擎,作为自托管引擎公开 主控程序 服务器。回溯策略,优化参数,并通过自然语言分析价格模式。

[!注意] 该项目正在积极开发中。API和配置的中断更改可能发生在次要版本之间。固定在特定的释放标签上以获得稳定性。

你能做什么

编写自定义策略

用简单的英语描述一个策略,克劳德会生成一个 其他 根据历史数据运行的脚本。在单个脚本中定义入口逻辑、出口规则、位置大小和有状态的多阶段策略,或者使用带有参数注入的内置轮策略脚本。

"Write a strategy that sells puts on SPY when VIX > 20 and RSI < 30, with a 50% stop loss"
"Build a custom mean-reversion strategy that buys QQQ on 3 consecutive down days and exits after a 2% gain or 5-day hold"
"Run the wheel script on SPY with 30-delta puts at 45 DTE and 25-delta calls at 30 DTE"

回测期权和股票

在32种内置期权策略中运行事件驱动的模拟——单期权、价差期权、铁秃鹰期权、蝴蝶期权、日历期权、对角线期权和股票组合期权。OHLCV数据的信号驱动股票回测。全仓管理,包括止损、止盈、最大持有退出和5种动态规模调整方法。

"Backtest an iron condor on SPY with $100k capital, 30-delta wings, and a 50% stop loss"
"Backtest buying SPY when RSI drops below 30 and selling when it crosses above 70"
"Run the wheel on SPY with 30-delta puts at 45 DTE and 30-delta calls at 30 DTE"

优化和验证

在增量、DTE、滑动和信号组合中进行网格搜索,并进行样本外验证。使用滚动列车/测试窗口进行向前分析。统计显著性置换检验。

"Sweep DTE and delta for short puts on SPY — find the best risk-adjusted setup"
"Run walk-forward on this strategy with 4 windows to check if it holds up over time"
"Is this backtest result statistically significant or just luck?"

分析市场

发现季节性、政权转变和价格模式。使用HMM机制检测门入口。交叉符号相关性、滚动度量和分布分析。

"Show me SPY's average return by day of week — are any statistically significant?"
"Only enter covered calls when SPY is in a bullish HMM regime"
"Detect volatility regimes in SPY and show when they shift"

MCP工具

工具 说明
回溯测试
backtest 在Rhai策略上运行一次回溯测试或网格/贝叶斯参数扫描
scripting_guide 返回完整的Rhai脚本API参考
统计
aggregate_prices 基于时间的聚合与显著性检验
distribution 正态性检验的分布分析
correlate 交叉符号或交叉度量相关矩阵
rolling_metric 滚动窗口计算(夏普、波动率、回报率等)
regime_detect 市场机制检测(波动性聚类、趋势状态、HMM)
generate_hypotheses 通过FDR校正自动扫描具有统计意义的图案
风险与投资组合
drawdown_analysis 具有事件跟踪和溃疡指数的完全下降分布
cointegration_test 配对/统计套利策略的Engle-Granger协整检验
monte_carlo 具有破产概率的块引导蒙特卡罗模拟
factor_attribution 多因素回归将回报分解为因素敞口
portfolio_optimize 通过风险平价、最小方差或最大夏普法获得最佳投资组合权重
benchmark_analysis 基准相对指标:alpha、beta、信息比率、捕获比率

快速开始

git clone https://github.com/goldspanlabs/optopsy-mcp.git
cd optopsy-mcp
cargo build --release

运行服务器

PORT=8000 cargo run --release

这将在以下位置通过StreamableHTTP启动MCP服务器 /mcp.

配置

将您的拼花数据文件放在 ~/.optopsy/cache/ 在第一次会议之前,请参阅 数据 下面的部分。

要更改缓存目录,请设置 DATA_ROOT:

DATA_ROOT=/your/custom/cache/dir PORT=8000 cargo run --release

关键能力

32种选择策略

单人、垂直、跨坐、勒颈、蝴蝶、秃鹰、铁秃鹰/蝴蝶、日历、对角线和股票腿策略(有盖看涨、保护性看跌)——支持日历和对角线点差的多次到期。

4种滑盖型号

中期、价差(最坏情况下的买卖)、基于流动性(按交易量缩放)和每段固定。

5种定位方法

固定数量、固定分数、每笔交易风险、凯利准则和波动率目标。

Rhai脚本引擎

将回溯测试写为 其他 使用回调驱动的API编写脚本。发动机提供 BarContext (ctx)对象可以访问OHLCV数据、预先计算的指标(SMA、EMA、RSI、ATR、MACD、布林带、随机、CCI、OBV)、期权链查找、投资组合状态和交叉符号数据。脚本完全沙盒化,没有文件或网络访问权限。

fn config() {
    #{ symbol: params.SYMBOL, capital: params.CAPITAL,
       data: #{ ohlcv: true, options: true, indicators: ["rsi:14", "sma:50"] } }
}

fn on_bar(ctx) {
    if ctx.position_count >= 3 { return []; }
    let spread = ctx.short_put(0.30, 45);
    if spread == () { return []; }
    [spread]
}

fn on_exit_check(ctx, pos) {
    if pos.dte <= 7 { return close_position("dte_exit"); }
    hold_position()
}

32个命名助手可用(bull_put_spread, iron_condor, short_strangle等)以及行动建设者(hold_position(), close_position(), buy_stock()).看 scripts/SCRIPTING_REFERENCE.md API完整版。

包含一个内置的轮策略脚本,并通过常量注入进行参数化。

67指示器和信号DSL

RSI、MACD、随机指标、布林带、Keltner通道、Supertrend、ATR、OBV、MFI、IV秩、HMM机制滤波器等。在Rhai脚本中作为预先计算的O(1)查找可用(ctx.rsi(14), ctx.sma(50))并作为内置回溯测试工具的公式DSL(rsi(close, 14) < 30 and VIX > 20).

数据

optopsy mcp从本地Parquet缓存中读取期权链和OHLCV价格。将您的Parquet文件直接放入缓存目录中——任何与预期模式匹配的文件都将被自动拾取。

默认缓存目录为 ~/.optopsy/cache/。要使用其他位置,请设置 DATA_ROOT 环境变量。

缓存布局

~/.optopsy/cache/
├── options/          # required — options chain data
│   ├── SPY.parquet
│   └── ...
└── <category>/       # any subfolder name works for OHLCV data
    ├── SPY.parquet
    └── ...

options/ 是选项链数据的固定文件夹。对于OHLCV价格数据,您可以将文件组织到您喜欢的任何子文件夹名称中(例如。 stocks/, etf/, futures/, indices/或你自己的)。引擎搜索所有非-options 在解析交易品种的价格数据时使用子目录。

拼花地板方案

选项数据(options/*.parquet)

列 类型 描述
datetime Datetime 报价时间戳(支持日内分辨率)
expiration 日期/日期时间 期权到期日期
strike Float64 执行价格
option_type 字符串 "call" 或 "put"
bid Float64 投标价格
ask Float64 要价
delta Float64 选项增量

注: 如果您的数据有 date (日期)栏代替 datetime,它将在加载时自动转换为15:59:00的Datetime。

价格数据(<category>/*.parquet)

列 类型 描述
datetime 日期时间 条形时间戳(支持日内分辨率)
open Float64 开盘价
high Float64 价格高
low Float64 价格优惠
close Float64 收盘价
volume Int64/Float64 体积

发展

克隆后,配置git以使用项目的共享钩子:

git config core.hooksPath .githooks

这使得 预推钩 运行 cargo fmt --check, cargo clippy --all-targets, cargo build,以及 cargo test 在每次推送之前,匹配CI检查。

cargo build --release        # Build
cargo test                   # Run all tests
cargo clippy --all-targets   # Lint
cargo fmt --check            # Check formatting
cargo run --release          # Run MCP server (stdio)
PORT=8000 cargo run --release # Run MCP + REST over HTTP

技术栈