关于 Canli Quant
Canli Quant 是本地运行的量化金融 MCP 服务,通过可搜索的 235 个工具和 399 个策略袖套,为研究者和 Agent 提供计算能力。它用独立实现核对计算结果,并拒绝计算产生的 NaN 或 Infinity,而不将其作为成功结果。
主要功能
- 01235 个量化金融工具
- 02399 个策略袖套
- 03按需搜索和运行工具
- 04独立参考实现核验
- 05拒绝计算产生的 NaN 和 Infinity
- 06提供带哈希的计算回执
适用场景
- 01分析投资组合表现与风险
- 02定价期权和固定收益产品
- 03考虑多次试验后检验策略
- 04标注市场数据并生成机器学习标签
MCP 相关
服务向 MCP 客户端提供可搜索工具、工具参数模式、工作流提示词和目录资源。它通过本地 stdio 运行,不发起网络请求;计算使用客户端提供的数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 4 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 默认值为 8。 |
| query | string | 是 | 用通俗语言描述你的需求。 |
| toolset | enum | 否 | 仅限此工具集。performance | options | indicators | econometrics | exotics | rates | risk | returns | portfolio | execution | sizing | crypto_fx | strategies | sleeves | data_checks | labeling | tvm | valuation |
详细介绍
canli-quant-mcp
遇到计算结果为 NaN 或 Infinity 时,工具会报错并指出受影响的字段。 这些值不会变成无法解释的 null,也不会收到成功回执。请检查输入的量级 和计算的定义域。普通的有限结果和预热阶段的 null 位置会保留。
一个 MCP 服务中包含 235 个量化金融工具:绩效与风险、期权与奇异期权、固定收益、 投资组合构建、计量经济学、技术指标、执行、仓位规模、加密货币与外汇、 估值、策略回测、包含 399 个策略子组合的库、数据检查,以及数据注释 和 ML 标注。每个工具 都会根据你发送的数据进行计算,并且每个工具的结果都会在测试套件中与 独立实现(QuantLib、statsmodels、arch、TA-Lib、numpy-financial、scikit-learn、 empyrical、scipy、pandas、dcor)进行核对:465 个参考用例,以及针对数据检查的植入缺陷测试。
本地 stdio,无需密钥、账号,也不会发起网络调用:你的数据不会离开你的机器(参见 隐私,并由测试强制确保)。
上下文中只列出 3 个工具,背后还有 235 个
直接列出 238 个工具会在每次请求中消耗 83,944 个上下文 token(o200k)。默认情况下, 此服务只列出 3 个,共 680 个 token:
| 工具 | 功能 |
|---|---|
find_tool | 用日常语言搜索目录(“cornish fisher var”“barrier option”“kpss”)。 |
describe_tool | 查看某个工具的说明和精确输入架构。 |
run_tool | 按名称运行任意工具。receipt: true 会添加计算回执。 |
find_tool 使用 BM25,根据每个工具的名称、标题、关键词和说明进行排序,并支持词干提取
和金融缩写(cvar、npv、irr、ytm……)。在 110 个测试请求中,它有 94% 的几率将正确工具排在首位,
有 99% 的几率排在前三位(test/search.test.mjs),因此模型很少需要再次搜索。run_tool 接受
digits 参数(3–10 位有效数字;默认值为 10),在不需要完整精度时可减少输出 token:在我们测得的结果中,
保留 4–6 位数字可减少 9%–19% 的 token。
在 Apple 芯片笔记本电脑上测得(Node 24):连接并初始化需 140 ms;通过 stdio 调用一个典型工具的
中位耗时为 0.26 ms;find_tool 耗时 1 ms;对 1,200 天、六种资产的数据运行完整的 399 子组合
锦标赛,耗时约 2 s。
每次启动时,工具列表的字节内容完全相同,因此服务提供商可以缓存它。若要直接列出工具集,
可将 CANLI_TOOLSETS 设置为逗号分隔的列表(例如 performance,options,仅 performance 就需要 8,053
个 token),或设置为 all。
快速开始
npx -y canli-quant-mcp
Claude Code:
claude mcp add canli-quant -- npx -y canli-quant-mcp
Claude Desktop、Cursor 或任何 MCP 客户端:
{ "mcpServers": { "canli-quant": { "command": "npx", "args": ["-y", "canli-quant-mcp"] } } }
然后可以这样提问:
- “这是我的策略每日收益。我尝试了 40 种变体。经过绩效膨胀校正后,这种优势还存在吗?”
- “为 6 个月期向下敲出看涨期权定价,行权价为 100、障碍价为 90、波动率为 25%,并与普通期权比较。”
- “这个价差是否均值回归?运行 ADF、KPSS 和方差比检验,然后计入成本进行回测。”
- “在我据此拟合波动率曲面之前,先检查这条期权链是否存在套利。”
- “对这些 ETF 价格进行尝试所有策略后的校正后,399 个子组合中哪些表现稳健?”
- “当前市场处于平静还是动荡状态?各种状态会持续多久?”
工具集
| 工具集 | 工具数 | 对照验证对象 |
|---|---|---|
performance | 23 | numpy、scipy、statsmodels 和 empyrical-reloaded |
options | 12 | QuantLib(解析引擎;美式期权采用有限差分);独立实现的 CBOE VIX 方法;Breeden-Litzenberger 的对数正态密度 |
indicators | 30 | TA-Lib 的 C 库,逐根柱线对照;TA-Lib 缺少的指标则使用 pandas |
econometrics | 27 | statsmodels(OLS、HAC、ADF、KPSS、Engle-Granger 和 Johansen 协整、Granger、ARCH LM、马尔可夫切换、递归最小二乘和 CUSUM)、arch(GARCH、方差比)、scipy 和 dcor(秩相关和距离相关) |
exotics | 9 | QuantLib(障碍、亚洲、Heston、SABR、Kirk、Margrabe、回望和择优期权引擎) |
rates | 15 | QuantLib 债券和短期利率模型;numpy 和 scipy 用于曲线和掉期;scipy fsolve 用于 Merton |
risk | 7 | numpy 和 scipy 的重新推导;scipy 的 EVT 广义帕累托似然 |
returns | 4 | pandas 重采样和闭式解 |
portfolio | 15 | numpy 闭式解、scipy SLSQP、scikit-learn Ledoit-Wolf、HRP 论文中的代码 |
execution | 7 | 闭式解(Almgren-Chriss kappa 通过数值方法求解)、statsmodels OLS |
sizing | 7 | scipy 和闭式解 |
crypto_fx | 9 | 闭式解和模拟的池储备 |
strategies | 20 | 对每个方案及成本引擎的独立 pandas 实现 |
sleeves | 8 | 对每个方案和引擎的独立 numpy 与 pandas 移植;arch 的 Reality Check,以及基于相同自助抽样的独立重新学生化 SPA 和 StepM;scipy 平均连接法;numpy CSCV;以及对每个 sleeve 进行的前视偏差和预热检查 |
data_checks | 10 | 人为植入缺陷的测试:每项检查都必须找到植入的缺陷,并且对干净数据保持静默 |
labeling | 7 | 将《Advances in Financial Machine Learning》中的代码片段移植到 pandas(ewm 波动率、CUSUM 筛选器、三重障碍、唯一性、purged k-fold),以及 statsmodels OLS t 值 |
tvm | 15 | numpy-financial 和闭式解 |
valuation | 10 | 独立重新推导的已发表公式 |
工作流(提示词)
提示词会串联工具以完成常见任务:analyze_strategy、audit_backtest、value_company、
price_option、test_mean_reversion、build_portfolio、analyze_trade_log、sleeve_tournament、
build_sleeve_book、label_dataset、check_dataset。
资源:canli-quant://catalog(所有工具)、canli-quant://methods(各工具集的对照验证对象)、canli-quant://tools/{name}(单个工具的 schema)、canli-quant://sleeves(sleeve 库)、canli-quant://sleeves/{id}(单个 sleeve 的规格)和 canli-quant://privacy。
策略模块库
18 个策略系列,共 399 个策略模块;每个都是已发表的思路,并按常见参数在简单网格上进行遍历:移动平均线交叉、时间序列动量、多周期趋势、通道突破、MACD、z-score 和 RSI 均值回归、波动率目标、横截面动量、双重动量、风险平价、等权重、最小方差、低波动、短期反转、趋势过滤配置、52 周高点动量和配对策略。每个策略模块都有固定规则、明确的预热期、参考资料、已知风险,以及其规格的 SHA-256 哈希。没有任何一个是因为回测表现良好才被选中的:它们只是定义,而非业绩记录。
同时运行许多策略并保留表现最佳者,正是回测过拟合的成因,因此可同时运行多个策略模块的工具会对此进行校正:
| 工具 | 解答的问题 |
|---|---|
sleeve_tournament | 哪些策略模块在你的价格数据上领先?表现最佳者能否通过 deflated Sharpe ratio(计入所有策略模块以及有效独立策略的数量)、White's Reality Check、Hansen's SPA test、Romano-Wolf StepM(每次重采样都重新学生化)以及 backtest overfitting 概率(CSCV)的检验? |
sleeve_walk_forward | 如果你一直按滞后 Sharpe 选出表现最佳的策略模块,样本外收益会是多少?它们样本内 Sharpe 中有多少只是运气? |
sleeve_clusters | 在这些数据上,这些策略模块实际做出了多少种不同的押注? |
sleeve_regime_map | 哪些策略模块在平静、动荡、上涨和下跌的市场中表现稳健? |
combine_sleeves | 由选定策略模块组成的投资组合会是什么样?截至最近收盘,它希望采用哪些资产权重? |
测试会检查没有策略模块存在前视偏差(重写未来价格不会改变更早的目标权重)、不会在预热期之前交易,并验证锦标赛统计结果与 arch 的 Reality Check,以及在同一组 bootstrap 抽样上独立实现的、重新学生化的 SPA 和 StepM、scipy 的聚类结果和独立的 numpy CSCV 相匹配。run_sleeve 和 combine_sleeves 会按证券代码返回 target_weights,canli-paper-trading-mcp 之类的模拟交易券商可据此进行再平衡。
数据标注与 ML 标签
labeling 工具集可为你自己的数据添加注释并生成训练标签,且不会造成数据泄漏:
| 工具 | 功能 |
|---|---|
annotate_price_series | 为每个周期添加标签:异常波动、过时价格、回撤阶段、新高、因果波动率状态。 |
cusum_filter_events | 选出值得标注的周期(对数价格上的 CUSUM 筛选器)。 |
triple_barrier_labels | 根据波动率缩放的止盈、止损或时间限制中最先触发的条件生成标签;提供方向后,还会生成元标签。 |
fixed_horizon_labels | 根据未来某个周期的收益生成标签,并采用固定或按波动率缩放的无效区间。 |
trend_scanning_labels | 根据最强未来趋势的 t 统计量生成标签。 |
sample_weights | 为重叠标签生成唯一性权重、收益归因权重和时间衰减权重。 |
purged_cv_splits | 执行 K 折拆分,剔除重叠标签,并对每个测试折之后的周期设置隔离期。 |
每个标签都会说明其使用了哪些未来周期,因此可以精确执行剔除和隔离。相关方法遵循 Lopez de Prado 的 Advances in Financial Machine Learning,并与其代码的 pandas 移植版本进行了核对。
隐私
你的数据会保留在本机。该服务是本地 stdio 进程,不包含网络代码,不写入磁盘、不记录日志、不启动进程,并且只在调用期间保留参数。test/privacy.test.mjs 通过静态扫描每个源文件,并在 Node 权限模型下运行该服务来维护这些保障;读取范围仅限其自身软件包,并禁止写入、子进程和 worker。要在实际使用中启用相同的锁定:
npm i -g canli-quant-mcp
node --permission --allow-fs-read="$(npm root -g)/canli-quant-mcp" "$(npm root -g)/canli-quant-mcp/src/server.mjs"
canli-quant://privacy 会在服务内部说明这些保障。计算凭据只包含哈希,绝不包含数据。
计算凭证
run_tool 使用 receipt: true 时,会返回工具名称和参数的 SHA-256、结果的 SHA-256,以及服务版本。任何人都可以使用相同版本,以相同参数运行同一工具,并比较输出哈希值。结果具有确定性:不使用时钟或网络,唯一的随机性来自根据给定种子抽取的袖珍组合自助法。
约定
- 收益率使用简单小数(0.01 = 1%),按时间从早到晚排列。工具会拒绝 -100% 或更低的收益率,以及看起来像百分数的序列。
- 利率按年计;期权使用连续复利;债券收益率按票息频率复利。
- 结果四舍五入至 10 位有效数字。
- 策略回测在第 t 期收盘时确定权重,并获得第 t+1 期的收益;权重会在再平衡间漂移,并按换手率计收成本。
所有工具
performance:业绩与风险(23)
| 工具 | 作用 | |---|---| | `return_stats` | 汇总收益率序列:期数、年化几何收益率(CAGR)和波动率、夏普比率、最大回撤、偏度、超额峰度、最佳和最差期间、正收益占比。 | | `sharpe_ratio` | 计算年化夏普比率及其标准误和 95% 区间,分别基于独立同分布正态收益(Lo 2002)和允许偏度及厚尾的收益(Mertens 2002)。如需计算在多次试验中胜过随机结果的概率,请使用 canli-validation-mcp。 | | `sortino_ratio` | 计算年化索提诺比率:高于目标的平均收益除以低于目标的下行偏差,并同时给出下行偏差本身。 | | `max_drawdown` | 找出最大回撤和最严重的回撤阶段:深度、峰值、谷值、恢复情况和期数,以及水下时间。 | | `calmar_ratio` | 计算卡玛比率:年化几何收益率除以整个序列的最大回撤绝对值。 | | `omega_ratio` | 计算给定阈值下的欧米伽比率:高于阈值的收益总和除以低于阈值的损失总和。 | | `value_at_risk` | 将风险价值估算为正的损失比例:采用历史法、高斯法和 Cornish-Fisher 法(调整偏度和峰度),适用于一个或多个期间。 | | `expected_shortfall` | 估算预期损失(CVaR):超过风险价值的平均损失,采用历史法和高斯法,以正的损失比例表示。 | | `capm_regression` | 对超额收益与基准超额收益进行回归:给出 beta、alpha(年化)、它们的 t 统计量和 p 值、R 平方、相关性及残差(特质)波动率。 | | `information_ratio` | 计算策略相对于基准的主动收益、跟踪误差和信息比率,并进行年化。 | | `treynor_ratio` | 计算特雷诺比率:单位基准 beta 对应的年化超额收益。 | | `m2_measure` | 计算莫迪利亚尼 M 平方:策略按基准波动率加杠杆后本可获得的收益,以及该收益与基准收益的差值。 | | `capture_ratios` | 计算上行和下行市场捕获率:基准上涨期间和下跌期间策略的年化收益相对于基准的比率。 | | `ulcer_index` | 计算溃疡指数(回撤的均方根)、马丁比率(溃疡绩效比率),以及疼痛指数和疼痛比率(平均回撤)。 | | `drawdown_at_risk` | 估算风险回撤(各期间回撤的分位数)和条件风险回撤(超过该分位数的平均回撤),均以正比例表示。 | | `tail_ratio` | 计算尾部比率(第 95 百分位收益除以第 5 百分位收益的绝对值)和拉切夫比率(最佳尾部的平均收益除以最差尾部的平均损失)。 | | `gain_to_pain` | 计算施瓦格收益痛苦比率:收益总和除以亏损收益总和的绝对值。 | | `trade_stats` | 汇总已平仓交易结果:胜率、利润因子、盈亏比、期望收益、最大单笔盈利和亏损,以及最长连胜和连败。 | | `kelly_fraction` | 计算增长最优(凯利)比例:可根据收益率序列(连续型,(mean - rf) / variance)或胜率和盈亏赔率计算;同时给出半凯利比例。 | | `autocorrelation` | 检验收益率序列的序列相关性:给出各滞后的自相关,以及带 p 值的 Ljung-Box Q 统计量。 | | `normality_test` | 使用 Jarque-Bera 检验检验收益是否服从正态分布,并给出偏度和超额峰度。 | | `autocorrelation_adjusted_sharpe` | 在允许序列相关的情况下将夏普比率年化(Lo 2002):平滑或自相关收益会导致通常的 sqrt(time) 夏普比率被高估。 | | `rolling_sharpe` | 汇总窗口内滚动夏普比率:最新值、最小值、最大值、中位数和低于零的窗口占比;显示绩效是否稳定或正在衰退。 |期权:期权和衍生品(12)
| 工具 | 功能 | |---|---| | `black_scholes` | 使用 Black-Scholes-Merton 模型为欧式期权定价,并纳入股息率;计算 delta、gamma、vega、theta、rho、vanna、volga、charm、speed,以及到期时处于实值状态的风险中性概率。 | | `implied_volatility` | 根据欧式期权价格求解 Black-Scholes-Merton 隐含波动率;若价格超出无套利边界,则拒绝计算。 | | `black76` | 使用 Black-76 为期货或远期上的欧式期权定价,并计算 delta、gamma 和 vega;也适用于远期利率上的上限、下限和互换期权。 | | `bachelier` | 使用允许远期价格为负(利率、利差)的 Bachelier 正态模型为欧式期权定价,并计算 delta、gamma 和 vega。 | | `american_option` | 为含股息率的美式期权定价(采用 Richardson 外推的二叉 Black-Scholes 模型),并给出欧式价格和提前行权溢价。 | | `digital_option` | 使用 Black-Scholes-Merton 模型为欧式现金或无资产数字期权、资产或无现金数字期权定价,并计算 delta。 | | `put_call_parity` | 检验欧式看涨与看跌期权对的平价关系:计算平价差、隐含远期价格和隐含利率减股息率,以发现错误定价或过时报价。 | | `option_strategy_payoff` | 计算多腿期权头寸在到期时的表现(看涨期权、看跌期权、标的资产):净权利金、指定价格下的收益和利润、盈亏平衡点,以及最大利润和最大亏损。 | | `option_portfolio_greeks` | 汇总同一标的资产上多个期权头寸的 Black-Scholes-Merton Greeks:净 delta、gamma、vega、theta、rho,以及美元 delta 和 gamma。 | | `volatility_conversions` | 转换不同周期和形式的波动率:年化波动率转换为日、周或月波动率,计算某段时间内的预期变动,并将对数正态波动率转换为近似正态(基点)波动率。 | | `vix_style_index` | 使用 CBOE 方法,根据期权链计算类似 VIX 的模型无关隐含波动率:通过看涨看跌平价计算远期价格,筛选价外期权(采用双零买价截止规则),计算各到期日的方差,并插值至固定期限(默认为 30 天)。 | | `risk_neutral_density` | 根据不同行权价的看涨期权价格还原市场的风险中性分布(Breeden-Litzenberger):计算各行权价对应的密度和累积概率,以及均值、波动率、偏度和峰度;计算超过指定水平的概率,并找出密度为负的行权价(蝶式套利)。 |indicators:技术指标(30 个)
| 工具 | 功能 | |---|---| | `sma` | 计算回溯期内收盘价的简单移动平均。 | | `ema` | 计算指数移动平均(以简单平均值作为初始值,与 TA-Lib 的做法相同)。 | | `wma` | 计算线性加权移动平均(最新价格的权重最大)。 | | `dema` | 计算双重指数移动平均(2 EMA - EMA 的 EMA),其滞后程度低于 EMA。 | | `tema` | 计算三重指数移动平均(3 EMA - 3 EMA2 + EMA3)。 | | `hull_moving_average` | 计算赫尔移动平均线:WMA(2 WMA(n/2) - WMA(n), sqrt n),这是一条快速、平滑的趋势线。 | | `kama` | 计算考夫曼自适应移动平均线;趋势中加快,噪声中放缓(效率比,快线 2、慢线 30)。 | | `rsi` | 计算威尔德相对强弱指数(0-100):高于 70 通常视为超买,低于 30 则视为超卖。 | | `macd` | 计算 MACD(快速 EMA - 慢速 EMA)、信号线和柱状图,与 TA-Lib 的做法相同。 | | `bollinger_bands` | 计算布林带:以移动平均线为中线,上下轨分别为其上方和下方 k 倍总体标准差,并计算 %B 和带宽。 | | `stochastic` | 计算慢速随机振荡器:%K(收盘价在最高价-最低价区间中的平滑位置)和 %D。 | | `williams_r` | 计算威廉指标 %R(-100 到 0):显示收盘价在近期最高价-最低价区间中的位置。 | | `cci` | 计算商品通道指数:典型价格偏离其均值的距离,以平均绝对偏差为单位。 | | `atr` | 计算威尔德平均真实波幅及其占价格的百分比(NATR),这是用于设置止损和仓位规模的标准波动率指标。 | | `adx` | 计算威尔德 ADX 趋势强度,以及 +DI 和 -DI(采用 TA-Lib 的平滑方法):ADX 高于 25 通常表示市场处于趋势中。 | | `obv` | 计算能量潮指标,即根据收盘价变动方向赋予成交量正负后进行累加。 | | `money_flow_index` | 根据典型价格和成交量,计算资金流量指数(成交量加权 RSI,0-100)。 | | `rate_of_change` | 计算变动率(n 根 K 线内的百分比变化)和动量(n 根 K 线内的价格差)。 | | `trix` | 计算 TRIX,即三重平滑 EMA 的单根 K 线百分比变化,是一种经过滤波的动量振荡指标。 | | `aroon` | 计算 Aroon 上行和下行指标(0-100:距离最高价和最低价出现已过去多久)及 Aroon 振荡指标。 | | `chande_momentum` | 计算钱德动量振荡指标(-100 到 100),采用威尔德平滑方法,与 TA-Lib 的做法相同。 | | `ultimate_oscillator` | 计算威廉终极振荡指标,综合三个周期(默认 7、14、28)内的买入压力。 | | `accumulation_distribution` | 计算蔡金累积/派发线和蔡金振荡器(该线的快速 EMA - 慢速 EMA)。 | | `donchian_channels` | 计算唐奇安通道:回溯期内的最高价和最低价及其中点(用于突破系统)。 | | `keltner_channels` | 计算肯特纳通道:以收盘价的 EMA 为中线,上下轨分别为其上方和下方多个 ATR。 | | `vwap` | 根据典型价格计算累积成交量加权平均价格,或计算指定窗口内的滚动 VWAP。 | | `ichimoku_cloud` | 计算一目均衡表线:转换线(天线)、基准线(基线)、先行跨度 A 和 B(显示在计算它们的 K 线上,不向前平移)以及迟行线。 | | `rolling_zscore` | 根据滚动均值和样本标准差,计算每个价格的 z 分数,这是基本的均值回归信号。 | | `stochastic_rsi` | 计算随机 RSI:RSI 在其近期范围内的位置(%K,默认不平滑,与 TA-Lib 一致)及其移动平均 %D。 | | `parabolic_sar` | 计算威尔德抛物线转向指标追踪止损及其趋势方向(默认加速因子为 0.02,步长为 0.02,最大值为 0.2)。 |计量经济学:统计学和计量经济学(27)
| 工具 | 功能 | |---|---| | `linear_regression` | 对多个回归变量进行 y 的普通最小二乘拟合,提供经典标准误、异方差稳健(HC1)或 Newey-West HAC 标准误、R 平方、F 检验和 AIC。 | | `factor_regression` | 将策略超额收益对因子收益(如 Fama-French 市场、规模、价值、动量因子)进行回归,并使用 Newey-West 标准误:提供年化 alpha、其 t 统计量、因子 beta 和 R 平方。 | | `adf_test` | 使用增广 Dickey-Fuller 检验判断价格、价差或利率序列是否存在单位根(非平稳):提供统计量、MacKinnon p 值、临界值和由 AIC 选择的滞后阶数。 | | `kpss_test` | 使用 KPSS 检验(Hobijn 滞后阶规则)检验序列是否服从水平平稳或趋势平稳的原假设,作为 ADF 检验的补充;p 值在 0.01–0.10 范围内通过表格插值计算。 | | `variance_ratio_test` | 使用 Lo-MacKinlay 方差比检验,在一个或多个期限上检验价格的随机游走假设(重叠、去偏、异方差稳健):大于 1 表示趋势延续,小于 1 表示均值回归。 | | `cointegration_test` | 检验两个或多个价格序列是否协整(Engle-Granger):提供对冲比率、对残差价差进行 ADF 检验所得的 MacKinnon p 值和临界值,以及价差的半衰期。 | | `mean_reversion_fit` | 对价差或价格序列拟合 AR(1) / Ornstein-Uhlenbeck 模型:提供半衰期、均值、回归速度、均衡波动率和当前 z 分数。 | | `garch_volatility` | 使用最大似然法拟合均值为常数的 GARCH(1,1) 模型:提供 omega、alpha、beta、持久性、长期波动率、波动率半衰期和下一期波动率预测。 | | `ewma_volatility` | 计算指数加权波动率(默认采用 RiskMetrics,lambda 为 0.94):提供当前年化估计值,并可选返回完整序列。 | | `range_volatility` | 使用收盘到收盘、Parkinson、Garman-Klass、Rogers-Satchell 和 Yang-Zhang 估计量,根据开盘价、最高价、最低价和收盘价估算年化波动率。 | | `probabilistic_sharpe_ratio` | 根据业绩记录的长度、偏度和峰度,计算真实 Sharpe 比率超过基准值的概率(Bailey 和 López de Prado),以及所需的最短业绩记录长度。 | | `deflated_sharpe_ratio` | 根据尝试过的策略数量,对回测的 Sharpe 比率进行折减(Bailey 和 López de Prado,2014):计算原假设下的预期最大 Sharpe 比率,以及结果超过该值的概率。 | | `pca_factors` | 对资产收益运行主成分分析(相关矩阵或协方差矩阵):提供每个主成分的解释方差、累计占比和载荷。 | | `rolling_beta` | 计算收益相对于基准的滚动窗口 beta(及相关系数):提供最新值、平均值、最小值和最大值,并可选返回完整序列。 | | `granger_causality` | 检验 x 的历史值能否在 y 自身历史值之外帮助预测 y(Granger 因果关系),并对不超过最大值的每个滞后阶数进行 F 检验。 | | `arch_effects_test` | 使用 Engle ARCH 拉格朗日乘数检验,检验去均值后的收益是否存在波动聚集:提供 LM 统计量、卡方 p 值和 F 检验结果。 | | `mean_return_test` | 使用单样本 t 检验和对自相关稳健的 Newey-West t 统计量,检验策略的平均收益是否不同于零(或目标值)。 | | `compare_sharpe_ratios` | 使用相同时段的收益,检验两个策略的 Sharpe 比率是否存在差异(带有 Memmel 修正的 Jobson-Korkie 检验)。 | | `welch_t_test` | 检验两个样本(例如变化前后两个时期的收益)的均值是否不同,且不假设方差相等(Welch 检验)。 | | `markov_regime_switching` | 使用最大似然法拟合每个状态均有独立均值和波动率的 Hamilton 马尔可夫切换模型(2 或 3 个状态):提供各状态的均值和波动率、转移概率、预期持续时间、当前状态概率,以及各状态所占时间。 | | `johansen_cointegration` | 使用 Johansen 迹检验和最大特征值检验(采用 Osterwald-Lenum 临界值),检验多个价格序列之间存在多少个协整关系,并在 5% 显著性水平下确定秩和标准化协整向量。 | | `recursive_stability_test` | 检验回归系数是否随时间保持稳定:提供递归最小二乘系数路径,以及 Brown、Durbin 和 Evans 的 CUSUM 与 CUSUM 平方检验结果、5% 界限和各检验首次越界的时段。 | | `chow_break_test` | 使用 Chow F 检验回归在已知时段是否存在结构性突变;或扫描修剪范围内的每个候选突变点,找出 F 统计量最大的位置及其数值。 | | `har_rv_forecast` | 拟合 Corsi 异质自回归(HAR)模型,将已实现方差对其日、周、月均值进行回归,使用 Newey-West 标准误,并预测未来期限内的方差和波动率。 | | `realized_volatility_measures` | 根据每日的日内收益,计算已实现方差、双幂变差、跳跃分量、Barndorff-Nielsen-Shephard 跳跃检验(tripower 四次变差)、已实现半方差、已实现偏度和峰度,以及用于 HAR 预测的日序列。 | | `dependence_measures` | 衡量两个序列的共同变动情况:提供 Pearson、Spearman 和 Kendall 相关系数及其 p 值、距离相关(可捕捉非线性依赖)以及经验下尾和上尾依赖(它们是否会同时暴跌?)。 | | `bootstrap_confidence_interval` | 使用平稳区块自助法为绩效统计量(Sharpe、Sortino、CAGR、波动率、最大回撤、Calmar、均值)计算置信区间;该方法会保留自相关和波动聚集,还会给出自助法标准误以及重采样结果小于或等于零的比例。 |exotics:奇异期权和波动率模型(9)
| 工具 | 功能 |
|---|---|
barrier_option | 使用闭式解(Reiner-Rubinstein)为连续监测的单障碍期权(下障碍/上障碍、敲入/敲出、看涨/看跌,含返利)定价,并计算普通期权价格和障碍折扣。 |
asian_option_geometric | 使用闭式解(Kemna-Vorst)为连续平均几何平均价格亚式期权定价;可作为算术平均亚式期权的下界和控制变量。 |
heston_option | 使用特征函数的傅里叶积分,为 Heston 随机波动率模型下的欧式期权定价,并计算 delta、价内概率和 Feller 条件。 |
sabr_volatility | 根据 alpha、beta、nu 和 rho,计算 SABR 模型(Hagan 等人,2002 年)下某个执行价的 Black 隐含波动率;也可针对多个执行价计算波动率微笑。 |
spread_option | 使用 Kirk 近似为两个期货之间的价差(F1 - F2 - K)欧式期权定价,适用于裂解价差和火花价差。 |
exchange_option | 使用闭式解(Margrabe)为以一种资产交换另一种资产的期权定价,收益为 max(Q1 S1 - Q2 S2, 0),并考虑两种资产的股息收益率。 |
lookback_option | 为连续监测的浮动执行价回望期权(Goldman-Sosin-Gatto)定价:看涨期权的收益为最终价格减去最低价,看跌期权的收益为最高价减去最终价格。 |
chooser_option | 为简单选择权期权定价;持有人可在选择日决定将其作为看涨期权还是看跌期权,且执行价和到期日相同(Rubinstein)。 |
jump_diffusion_option | 使用按泊松分布加权的 Black-Scholes 价格之和,为 Merton 跳跃扩散模型(对数正态跳跃)下的欧式期权定价。 |
rates:固定收益和利率(15)
| 工具 | 功能 | |---|---| | `bond_price` | 根据收益率、实际日期和日计数规则,为固定利率债券定价:全价和净价、应计利息、麦考利久期和修正久期、凸性及 DV01。 | | `bond_yield` | 根据固定利率债券的净价求解到期收益率,并计算该收益率对应的久期、凸性及 DV01。 | | `zero_coupon_bond` | 在年度、定期或连续复利下,根据收益率为零息债券定价,或根据价格求解收益率,并计算久期和凸性。 | | `bootstrap_zero_curve` | 根据平价收益率引导计算贴现因子、零利率(连续复利和定期复利)及期间远期利率,并将平价收益率线性插值到付息网格上。 | | `forward_rate` | 根据两个期限的零利率,在连续复利、定期复利或单利下计算其隐含的远期利率及远期贴现因子。 | | `nelson_siegel_fit` | 使用最小二乘法将 Nelson-Siegel 曲线(水平、斜率、曲率、衰减 tau)拟合到观测收益率,并给出拟合收益率和 RMSE;若未指定 tau,则搜索该参数。 | | `interest_rate_swap` | 在零息曲线(单曲线)上为即期起息的固定对浮动利率互换估值:平价互换利率、固定利率支付方的价值、固定腿年金及 DV01。 | | `forward_rate_agreement` | 在零息曲线上为远期利率协议估值:该期间的单利远期利率,以及固定利率支付方的价值。 | | `z_spread` | 求解固定利率债券的 z 利差:在连续复利零息曲线上加上的恒定利差,使其现金流贴现价值等于市场全价。 | | `credit_hazard_rate` | 将信用利差和回收率换算为恒定违约强度(信用三角关系)、期限内的存活概率和违约概率,并可反向计算。 | | `short_rate_bond_price` | 使用 Vasicek 或 Cox-Ingersoll-Ross 短期利率模型的闭式解,为零息债券定价并计算其收益率。 | | `treasury_bill_yields` | 将国库券价格或银行贴现率换算为贴现收益率、债券等值(投资)收益率、货币市场收益率及有效年收益率。 | | `key_rate_durations` | 衡量固定利率债券对零息曲线各关键期限点的敏感度:将一个期限点上调 1 bp(三角形上调,中间线性变化)后重新估值,得出关键利率 DV01 和久期,其总和等于平行移动对应的数值。 | | `breakeven_inflation` | 根据相同期限的名义收益率和实际(通胀挂钩)收益率,精确计算(费雪公式)和近似计算盈亏平衡通胀率,并计算给定通胀预期所隐含的实际收益率。 | | `merton_credit_risk` | 使用 Merton 模型(将股权视为资产的看涨期权),根据公司股权价值和波动率反推出资产价值和资产波动率,继而计算违约距离、违约概率、隐含信用利差及债务价值。 |risk:投资组合风险与压力测试(7)
| 工具 | 功能 | |---|---| | `portfolio_var` | 根据资产收益历史数据,计算持仓组合的历史法和参数法(正态)风险价值及预期损失,并给出每个持仓的贡献和分散化效益。 | | `stress_test` | 将指定情景(对每个持仓施加收益冲击,或通过每个持仓的 beta 传导市场冲击)应用于投资组合,并报告每种情景的损益和表现最差的持仓。 | | `option_scenario_grid` | 在一系列现货价格变动和波动率变化下,对欧式期权和股票组成的组合进行重新估值(完整 Black-Scholes 重新估值),给出每个单元格的损益和组合当前的希腊值。 | | `exposure_and_hedge` | 汇总多空组合的总敞口、净敞口和 beta 调整后敞口,并确定指数对冲规模(期货合约或 ETF 份额),以中和 beta。 | | `concentration_metrics` | 衡量投资组合的集中程度:赫芬达尔指数、有效持仓数量、最大及前 k 大持仓占比,以及权重的基尼系数。 | | `liquidation_horizon` | 估算每个持仓按平均日成交量的最大占比退出所需的天数,并计算 1、5 和 20 天内可清算的组合规模。 | | `extreme_value_tail` | 使用极值理论对损失尾部建模:将广义帕累托分布拟合到高阈值以上的损失(超阈值峰值法),估算尾部深处的风险价值和预期损失,并给出 Hill 尾部指数。 |returns:收益转换与归因(4)
| 工具 | 功能 |
|---|---|
convert_returns | 在价格、简单收益率和对数收益率之间转换,或将价格序列重新基准化为从 100 开始;返回转换后的序列。 |
resample_returns | 根据日期,将周期收益率复合为日历周(ISO)、月、季度或年收益率。 |
monthly_returns_table | 根据周期收益率和日期,生成按年份和月份排列的收益率表,并列出每年的复合总收益率、最佳和最差月份,以及正收益月份的占比。 |
brinson_attribution | 根据投资组合和基准的权重及收益率,按分段将主动收益归因于配置、选股和交互效应(Brinson-Fachler)。 |
portfolio:投资组合构建与风险(15)
| 工具 | 功能 | |---|---| | `portfolio_risk` | 将投资组合的波动率分解到各项资产的风险贡献中,并计算边际风险、分散化比率、有效资产数量、参数 VaR,以及相对于基准的事前跟踪误差。 | | `min_variance_portfolio` | 求出完全投资的最小方差投资组合:仅做多,可选择权重上限(精确主动集解);或不设约束(闭式解)。 | | `max_sharpe_portfolio` | 求出夏普比率最高的投资组合:仅做多(精确解)或不设约束(闭式切点解),并提供其预期收益、波动率和夏普比率。 | | `mean_variance_portfolio` | 求出达到目标预期收益的最小方差投资组合,或风险厌恶程度给定时效用最大化的投资组合;支持仅做多或不设约束。 | | `risk_parity_portfolio` | 求出仅做多的权重,使每项资产对投资组合波动率的贡献相等(或符合给定预算),使用牛顿法求解。 | | `inverse_volatility_weights` | 按资产波动率(或方差)的倒数分配权重,这是一种简单的风险平衡启发式方法。 | | `hierarchical_risk_parity` | 使用 López de Prado 的层次风险平价方法进行配置:基于相关性距离进行单链接聚类、准对角排序和递归二分。 | | `efficient_frontier` | 描绘有效前沿:在从最小方差投资组合到收益最高的资产之间,按等间距目标收益计算最低波动率及对应权重。 | | `black_litterman` | 将市场隐含均衡收益与您的观点(绝对或相对,含置信度)结合,计算 Black-Litterman 后验收益和无约束最优权重。 | | `covariance_shrinkage` | 使用 Ledoit-Wolf 收缩法向缩放单位矩阵收缩,估算条件良好的协方差矩阵,并提供收缩强度以及收缩前后的条件数。 | | `correlation_matrix` | 计算资产间的 Pearson 或 Spearman 秩相关性,并提供平均两两相关性和最大特征值占比(即单一因子对整体的驱动程度)。 | | `rebalance_trades` | 将当前持仓和目标权重转换为用于调仓的股票交易数量,并提供换手率、可选的不交易区间和剩余现金。 | | `kelly_portfolio` | 计算跨资产的增长最优(Kelly)权重,即超额收益乘以协方差矩阵的逆,并提供半 Kelly 权重、隐含杠杆和增长率。 | | `max_diversification_portfolio` | 求出分散化比率最高的仅做多投资组合(加权平均波动率除以投资组合波动率),即 Choueifaty 和 Coignard 的最大分散化投资组合。 | | `index_tracking_portfolio` | 在一组资产中求出仅做多的权重,以最小化相对于基准权重的事前跟踪误差;可选设置单项资产上限。 |execution:执行与微观结构(7)
| 工具 | 作用 | |---|---| | `almgren_chriss_schedule` | 计算大额订单的 Almgren-Chriss 最优清算计划:每个时段的持仓和交易量,以及给定风险厌恶程度下的预期冲击成本及其标准差。 | | `market_impact_estimate` | 使用平方根冲击定律(成本 = Y x 波动率 x sqrt(订单量 / 日成交量))加上半个价差,估算订单成本,以基点和货币表示。 | | `implementation_shortfall` | 衡量已执行订单相对于决策价格的执行偏差,并拆分为延迟成本、执行成本(冲击)、未成交股数的机会成本和费用。 | | `execution_schedule` | 将订单均匀分配到各个时间段(TWAP),或按照预期成交量分布(VWAP)分配,并限制最大参与率,同时列出在期限内无法完成的部分。 | | `spread_estimators` | 在无法获取报价时,仅根据成交价格(Roll 1984)以及每日最高价和最低价(Corwin-Schultz 2012)估算有效买卖价差。 | | `liquidity_measures` | 衡量单位交易量的价格冲击:Amihud 非流动性(每单位货币交易额对应的 \|收益率\|)和 Kyle 的 lambda(通过回归计算每单位带符号成交量对应的价格变化)。 | | `order_book_analysis` | 分析订单簿快照:中间价、价差、微价格、深度不平衡,以及给定规模的市价单扫过订单簿时的平均成交价和滑点。 |sizing:头寸规模与交易风险(7)
| 工具 | 作用 |
|---|---|
position_size_from_stop | 设定止损触发时的亏损为权益的固定比例,据此计算交易规模:股数、名义金额、风险资本和杠杆;还可选择设置最大头寸权重上限。 |
volatility_target_size | 调整头寸,使其预期波动率达到目标:根据资产波动率计算权重(杠杆)和给定权益对应的股数,还可选择设置上限。 |
optimal_f | 根据一系列交易结果,找出每笔交易应承担的最大亏损比例 f,使终值财富最大化(Vince 的 optimal f),并给出几何平均值和基于 f 的头寸规模。 |
trade_expectancy | 计算交易规则扣除成本后的每笔交易期望值、对应盈亏比的盈亏平衡胜率,以及在该胜率下所需的盈亏比。 |
drawdown_probability | 估算具有给定收益率和波动率的策略在连续时间漂移布朗运动下,权益低于起始权益指定比例的概率,以及在给定期限内发生该情况的概率。 |
leverage_and_margin | 计算杠杆、初始保证金和维持保证金、可用保证金,以及杠杆头寸触发追加保证金通知的不利价格变动。 |
var_position_limit | 已知资产波动率,找出其单日(或 n 日)参数 VaR 不超过预算的最大头寸规模。 |
crypto_fx:加密货币与外汇(9)
| 工具 | 功能 | |---|---| | `funding_rate_carry` | 将永续期货资金费率年化(简单 APR 和复利 APY),并计算持仓期间支付或赚取的资金费;接受单个费率或历史数据。 | | `futures_basis` | 计算指定日期期货相对于现货的基差、年化持有收益(简单和复利)及隐含融资利率,适用于现金套利交易。 | | `liquidation_price` | 估算逐仓保证金下杠杆持仓的清算价格:初始保证金 = 1/杠杆倍数,当权益降至维持保证金率时清算(交易所的公式还会计入费用和档位)。 | | `fx_forward` | 根据即期汇率和两种货币的货币市场利率为外汇远期定价(利率平价,ACT/360 或 ACT/365),以点数表示远期点;也可根据报价的远期汇率反推隐含利率。 | | `fx_cross_rate` | 根据两种货币相对于同一共同货币的报价推导交叉汇率的买入价和卖出价(例如,根据 EURUSD 和 USDJPY 推导 EURJPY),并处理每一段报价方向的差异。 | | `triangular_arbitrage` | 扣除价差和费用后,检查三种货币(或加密货币)报价是否存在三角套利:计算沿三角路径两个方向的收益。 | | `pip_value` | 计算账户货币中一个标准点对手数的价值,以及根据止损点数对应的风险金额计算手数。 | | `carry_trade_return` | 将套息交易收益分解为利差和即期汇率变动,并计算高息货币的盈亏平衡贬值幅度。 | | `impermanent_loss` | 根据价格变动,计算恒定乘积池或集中流动性区间(Uniswap v3 风格)中流动性头寸相对于持有资产的无常损失(偏离损失)。 |strategies:策略回测(20)
| 工具 | 功能 | |---|---| | `backtest_ma_crossover` | 使用你的价格数据回测快慢移动平均线交叉策略,计入成本且不使用未来数据:计算 CAGR、夏普比率、回撤、换手率、成本拖累,并与买入并持有策略对比。 | | `backtest_time_series_momentum` | 回测时间序列(绝对)动量策略:当资产的过去收益为正时持有,也可选择目标波动率,并计入成本且不使用未来数据。 | | `backtest_breakout` | 回测唐奇安通道突破策略(类似海龟交易法则:创新高时入场,跌破较短周期低点时退出),计入成本且不使用未来数据。 | | `backtest_zscore_reversion` | 基于价格滚动 z-score 回测均值回归策略:买入大幅下跌的资产(并做空大幅上涨的资产),接近均值时退出,并计入成本。 | | `backtest_rsi_reversion` | 回测经典 RSI 超卖策略:RSI 低于阈值时买入,回升时卖出,计入成本且不使用未来数据。 | | `backtest_volatility_target` | 回测持有资产并根据过去的已实现波动率调整仓位,使波动率保持在固定目标水平;包含杠杆上限和再平衡频率设置。 | | `backtest_cross_sectional_momentum` | 在一组资产中回测横截面(相对)动量策略:定期持有过去收益排名靠前的资产(跳过最近一个月),也可选择做空排名靠后的资产。 | | `backtest_dual_momentum` | 回测双动量策略(Antonacci):当表现最佳的风险资产跑赢现金或安全资产时持有,否则转向安全资产。 | | `backtest_risk_parity_rebalance` | 回测定期再平衡的多资产逆波动率(朴素风险平价)投资组合,也可选择调整至目标波动率。 | | `backtest_trend_ensemble` | 回测多周期趋势信号:对多个回溯周期的时间序列动量符号取平均,也可选择目标波动率,并计入成本且不使用未来数据。 | | `backtest_macd_trend` | 回测 MACD 线与其信号线的交叉策略(高于信号线时做多,低于时空仓或做空),计入成本且不使用未来数据。 | | `backtest_equal_weight_rebalance` | 回测按固定计划再平衡的一组资产等权策略;这是 1/N 基准,优化后的投资组合应当超越该基准。 | | `backtest_min_variance_rebalance` | 回测仅做多的最小方差投资组合,按固定计划使用过去的样本协方差重新估算,并计入成本。 | | `backtest_low_volatility` | 回测持有一组资产中波动率最低的一部分,按计划重新排名,并计入成本且不使用未来数据。 | | `backtest_short_term_reversal` | 回测买入一组资产中近期跌幅最大的资产(也可选择做空涨幅最大的资产),按计划重新排名,并计入成本。 | | `backtest_trend_filter_allocation` | 回测战术资产配置策略:仅在资产价格高于其移动平均线时持有(Faber 风格),权重采用等权或逆波动率加权。 | | `backtest_high_proximity` | 回测持有交易价格最接近其过去高点的资产(George-Hwang 52 周高点动量策略),并按计划重新排名。 | | `backtest_pairs_trading` | 基于两条价格序列回测配对交易:滚动估算对冲比率,计算残差价差的 z-score,以市场中性方式入场和退出,并计入成本。 | | `backtest_weights` | 使用你自行设定的每期目标权重回测任意策略(在每次收盘时确定,并应用于下一期);采用相同的计入成本且考虑权重漂移的引擎;空值行表示持有。 | | `strategy_sweep` | 在参数网格上运行一个策略方案(最多 400 个变体),按夏普比率为变体排名,并根据尝试次数对最佳结果进行去膨胀处理,避免将运气误当成技巧。 |sleeves:策略子组合库(8)
| 工具 | 功能 | |---|---| | `list_sleeves` | 浏览包含 399 个预定义策略模块的库(18 个系列:趋势、动量、反转、波动率、配置、配对)。每个模块都是一条固定规则,带有规格哈希;可按系列、数据形状或关键词筛选。 | | `describe_sleeve` | 查看单个模块的确切规则、参数、预热期、原理、已发表的参考资料、已知风险和规格 SHA-256。 | | `run_sleeve` | 使用你的价格数据对库中的一个策略模块进行回测,计入成本且不使用前视数据:CAGR、夏普比率、回撤、换手率、成本拖累,以及截至最近收盘时的目标权重(可用于模拟调仓)。 | | `sleeve_tournament` | 在共同时间窗口内运行所有适用于你价格数据的策略模块(最多 399 个)并进行排名,然后校正搜索偏差:去膨胀夏普比率(原始试验次数和有效试验次数)、White 现实检验、重新学生化的 Hansen SPA 和针对基准的 Romano-Wolf StepM,以及回测过拟合概率(CSCV)。 | | `sleeve_walk_forward` | 检验选择流程本身:每次重新拟合时,按滚动夏普比率选出排名靠前的策略模块,并在下一个窗口持有,然后重复此过程。将样本外结果与选中策略在样本内的表现、持有所有策略模块的结果以及基准进行比较。 | | `combine_sleeves` | 将选定的策略模块(等权或按滚动逆波动率加权,不使用前视数据)组合成一个投资组合:显示其统计数据、各策略模块的统计数据、它们之间的相关性、分散化比率,以及截至最近收盘时该组合的综合资产目标权重。 | | `sleeve_clusters` | 根据收益相关性对在你价格数据上运行的策略模块进行分组(使用 sqrt((1 - rho) / 2) 的平均链接法),以了解该库在这些数据上提供了多少真正不同的押注,以及每组中表现最佳的策略模块。 | | `sleeve_regime_map` | 根据基准的不同市场状态,为每个适用于你价格数据的策略模块评分:低波动、正常波动和高波动(按滚动波动率三分位数划分),以及上涨或下跌趋势(高于或低于移动平均线)。找出在所有市场状态下都表现稳健的策略模块。 |data_checks:数据质量检查(10)
| 工具 | 功能 | |---|---| | `check_price_series` | 使用前检查价格序列是否存在错误:非正值或缺失值、未调整的拆股、异常值收益率、陈旧数据、重复、未排序或有间隔的时间戳。 | | `check_ohlc_bars` | 检查开盘价-最高价-最低价-收盘价-成交量数据是否存在不可能的值:最高价低于开盘价或收盘价、最低价高于开盘价或收盘价、负成交量、振幅为零的 K 线,以及极端的隔夜跳空。 | | `check_option_chain` | 检查期权链中一个到期日的数据:报价交叉或为负、价格超出无套利边界、不同执行价之间的价格非单调或非凸、看涨-看跌平价失效,以及无法计算隐含波动率的报价。 | | `check_yield_curve` | 检查零息曲线是否存在问题:期限未排序、贴现因子随期限延长而上升、隐含远期利率为负或波动剧烈,以及远离相邻点的曲线拐点。 | | `check_funding_rates` | 检查永续期货资金费率历史数据:间隔不规则、费率超出交易场所上限、异常值和长时间单向变动,并提供年化范围。 | | `check_cross_venue_prices` | 比较同一工具在不同交易场所的同期价格:各交易场所价格相对跨场所中位数的偏差、停止更新的交易场所,以及最大偏离。 | | `check_timestamps` | 检查一列时间戳:无法解析的值、重复项、行顺序错乱、时区偏移混杂、未来日期和周末条目,并提供间隔分布。 | | `check_returns_series` | 检查收益率序列中常见的错误:使用百分数而非小数、低于 -100% 的不可能简单收益率、恒定或填零的区段、极端值,以及平滑处理(滞后 1 阶自相关较高)。 | | `check_fundamentals` | 根据会计恒等式检查报告的基本面数据:资产 = 负债 + 权益、流动项不超过总额、毛利润 = 收入 - 营业成本、现金流各部分之和等于现金变动,以及每股收益 x 股数与净利润接近。 | | `check_corporate_actions` | 通过比较未复权和复权收盘价序列来检测拆股和股息:列出调整因子的每次变动,将其分类为拆股(比例)或股息(百分比),并标记不匹配项。 |标注:数据标注和 ML 标签(7)
| 工具 | 功能 | |---|---| | `cusum_filter_events` | 使用对数价格上的对称 CUSUM 滤波器,选出值得标注的时段:自上次事件以来,累计上涨或下跌幅度超过阈值时触发事件(阈值可以是固定值,也可以是近期波动率的倍数),使标签集中于有意义的变动,而非覆盖每根 K 线。 | | `triple_barrier_labels` | 使用三重屏障法为事件打标签:将止盈和止损设为近期波动率的倍数,并设置时间限制;每个标签表示最先触及的屏障(+1、-1,或时间限制到期时的符号),同时记录触及时段,以便剔除重叠标签。若每个时段都有对应的方向,则会生成元标签(1 = 该笔交易获利)。 | | `fixed_horizon_labels` | 根据固定期限内的远期收益为每个时段打标签:高于阈值时为 +1,低于阈值的负值时为 -1,两者之间为 0;阈值可以是固定值,也可以按近期波动率缩放。包含类别分布和每个标签覆盖的远期跨度。 | | `trend_scanning_labels` | 根据最强远期趋势为每个时段打标签:对给定范围内的每个远期窗口,将价格对时间进行回归,保留斜率 \|t 统计量\| 最大的窗口,并以其符号作为标签、以 t 统计量作为置信度(Lopez de Prado 的趋势扫描法)。 | | `sample_weights` | 对跨度重叠的标签加权,避免模型对同一信息重复计数:计算每个时段的并发度、每个标签的平均唯一性、收益归因权重,以及可选的时间衰减(Lopez de Prado,第 4 章)。 | | `purged_cv_splits` | 为跨越时间的标签构建 k 折交叉验证划分,避免数据泄漏:剔除跨度与测试折重叠的训练标签,并对测试折之后紧接着开始的标签进行隔离。报告每折移除了哪些内容,并可选择返回索引。 | | `annotate_price_series` | 为价格序列的每个时段添加注释,并列出重要时段:稳健 z 分数异常变动、陈旧(重复)价格、缺口(跨时段跳变)、包含峰值、谷值和恢复时点的回撤阶段、历史新高,以及因果波动率状态(平静、正常、动荡)。提供每时段标签,供你与自己的数据合并。 |tvm:货币时间价值与公司金融(15)
| 工具 | 功能 | |---|---| | `net_present_value` | 计算定期现金流(首笔发生在时间 0)的 NPV,以及盈利指数、折现回收期和存在时的 IRR。 | | `internal_rate_of_return` | 求解定期现金流的 IRR;当符号变化可能产生多个 IRR 时发出警告,并显示若干利率下的 NPV 曲线。 | | `modified_irr` | 计算 MIRR:负现金流按融资利率折现,正现金流按再投资利率复利,得出唯一明确的回报率。 | | `xnpv_xirr` | 计算不规则日期现金流的 NPV 和 IRR(从首个日期起按 ACT/365 计算),与电子表格的 XNPV 和 XIRR 一致。 | | `time_value_solver` | 已知利率、期数、付款额、现值或终值中的其他四项,求解任意一项(贷款、储蓄、年金);支持期末或期初付款。 | | `amortization_schedule` | 制定等额还款贷款计划:列出每期付款额、利息和本金、剩余余额以及总利息。 | | `rate_conversion` | 转换不同复利频率下的名义利率,计算有效年利率和连续复利利率,并扣除通胀(精确 Fisher 实际利率)。 | | `growing_annuity` | 计算增长年金(现值和终值)或增长永续年金的价值,首笔付款在一期后到账。 | | `payback_period` | 计算简单回收期和折现回收期,并在收回投资的期间内进行插值。 | | `equivalent_annual_annuity` | 将项目的 NPV 转换为等额年金,以比较寿命不同的项目。 | | `wacc` | 根据市场价值以及权益、债务和优先股成本计算 WACC,债务成本按税后计算;权益成本可通过 CAPM 得出。 | | `levered_beta` | 将观察到的权益贝塔去杠杆,得出资产贝塔;再按目标债务权益比重新加杠杆(Hamada),用于可比公司的权益成本计算。 | | `break_even` | 根据价格、单位变动成本和固定成本,计算盈亏平衡销量和收入、贡献毛利率、安全边际及经营杠杆系数。 | | `loan_true_cost` | 当预付费用减少实际到账金额时,计算贷款的真实年成本:根据费用推算付款额、名义 APR、有效年利率以及总成本。 | | `retirement_projection` | 预测储蓄余额:年度缴款随薪资增长,之后按通胀调整计算可持续提款;报告退休时余额、提款可持续时长以及安全支出水平。 |valuation:估值与基本面评分(10)
| 工具 | 功能 | |---|---| | `dcf_valuation` | 根据预测自由现金流进行企业估值,使用 Gordon 增长模型或退出倍数作为终值:企业价值和股权价值、每股价值,以及折现率与增长率敏感性网格。 | | `reverse_dcf` | 给定折现率和终值增长率,求出当前股价所隐含的预测期内自由现金流增长率。 | | `dividend_discount_model` | 使用 Gordon 增长、两阶段或 H-model 股利折现模型为股票估值,或反推出价格所隐含的必要回报率(Gordon 模型)。 | | `residual_income_valuation` | 以账面价值加上折现后的剩余收益(高于期初账面价值股权成本的收益)为股权估值,并采用清洁盈余账面价值和终值。 | | `enterprise_value_multiples` | 根据市值、债务、优先股、少数股东权益和现金计算企业价值,进而计算 EV/EBITDA、EV/EBIT、EV/销售额、P/E、P/B、盈利收益率和 FCF 收益率。 | | `altman_z_score` | 计算 Altman Z-score 破产预测指标(上市制造业企业的 Z、私营企业的 Z',或非制造业企业的 Z''),并给出五项比率和风险区间。 | | `piotroski_f_score` | 根据两年的报表,从盈利能力、杠杆和流动性、运营效率等方面评估公司的财务实力,得分为 0–9,并显示各项信号。 | | `beneish_m_score` | 根据两年的报表计算包含八个变量的 Beneish M-score 盈利操纵筛查指标,并列出每项指数;高于 -1.78 表示可能存在操纵。 | | `dupont_analysis` | 将股本回报率分解为利润率、资产周转率和杠杆(三步法),以及税负、利息负担、营业利润率、周转率和杠杆(五步法)。 | | `graham_valuation` | 计算 Benjamin Graham 的格雷厄姆数(sqrt 22.5 x EPS x 每股账面价值)及其修订版增长公式估值,并计算相对于股价的安全边际。 |结果无法证明什么
即使公式正确,只要输入数据有误,结果依然有误。处理陌生数据前,请先运行 data_checks 工具。如果尝试过许多参数组合,单一参数集的回测结果说明不了多少:请统计尝试次数,并使用 strategy_sweep、sleeve_tournament 或 deflated_sharpe_ratio。即使一个投资组合在同一段历史数据上经受住了所有修正,它依然只是回测:未来的结果才是证据。闭式模型(Black-Scholes、Heston、SABR、Kirk)都有各自的假设;结果中会注明所用模型。
开发
npm ci && npm test
参考数据由 scripts/reference/ 中的 Python 脚本重新生成(每个脚本的文档字符串都提供了确切的 uv run 命令)。测试不会调用 Python,而是将结果与已提交的参考数据进行比较。
相关项目
- canli-validation-mcp:回测过拟合测试(deflated Sharpe、CSCV/PBO、White's Reality Check、Hansen's SPA),并配有试验台账。
- canli-backtest-mcp:基于 SEC 文件进行时点因子回测。
MIT 许可协议。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。