使用说明
眼科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