Community编程与开发github.com

milesdeutscher/garch-method

波动率预测与仓位管理,基于滚动窗口GARCH(1,1)模型。用于回答'该投入多少',而非'该往哪个方向'。

garch-method 是什么?

该技能提供一套完整的波动率预测和仓位管理工具集,以GARCH(1,1)模型为核心。它包含三个Python脚本:`garch_forecast.py` 用于预测未来波动率,`vol_target.py` 根据目标波动率计算仓位乘数,`compare.py` 则对比固定仓位与波动率目标化策略的绩效。所有脚本支持JSON输出,便于AI代理程序集成。用户可通过yfinance代码或包含日期和收盘价的CSV文件提供数据,支持加密货币(365天/年)和股票(252天/年)两种默认周期。其独特价值在于将'方向'决策与'仓位'决策分离,可与任何方向判断策略叠加使用。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/milesdeutscher/garchmethod/tree/main/skills/garch

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

GARCH方法——波动率预测与仓位管理

该技能回答了散户从不问、但每家基金每天都会问的问题:投入多少?

它不预测方向。GARCH预测的是波动的幅度——明天的波动有多剧烈,而不是朝哪个方向。向用户展示结果时请务必说明这一点。

三个工具

所有脚本位于 scripts/ 目录下,通过 uv run 运行(依赖通过内联元数据自动解析,无需手动 pip 安装)。

1. garch_forecast.py —— 预测模块

滚动窗口GARCH(1,1),零前瞻偏差(每21天在扩展窗口上重新估计参数;两次重新拟合之间的递归仅使用过去数据进行滚动更新)。

uv run scripts/garch_forecast.py --csv prices.csv --json
uv run scripts/garch_forecast.py --ticker BTC-USD --json

输出:未来1日波动率预测(日度 + 年化)、过去一年波动率百分位数、市场状态(平静 / 正常 / 风暴)。

2. vol_target.py —— 仓位模块

核心思想:仓位 = 目标波动率 / 预测波动率,并在[0.25倍, 2.0倍]区间内截断。

uv run scripts/vol_target.py --csv prices.csv --target-vol 15 --json

输出:仓位乘数。“运行基线策略的0.6倍”——这就是答案。

3. compare.py —— 诚实回测

对同一信号分别运行固定仓位和波动率目标化两种方式,并排显示两条权益曲线及统计指标。内置EMA 9/21交叉示例;可通过 --signals mine.csv 接受任意策略(列:date, signal in {-1,0,1})。

uv run scripts/compare.py --csv prices.csv --target-vol 58 --chart equity.png --json
uv run scripts/compare.py --csv prices.csv --signals mine.csv

输出:两种方式的CAGR、年化波动率、夏普比率、最大回撤、最差月份、最终权益,以及带有风暴区域阴影的权益曲线图。

JSON合约

每个脚本都支持 --json 参数。核心输出结构如下:

{
  "as_of": "2026-05-23",
  "forecast_vol_annualized_pct": 41.2,
  "vol_percentile_1y": 78.0,
  "regime": "storm",
  "position_size_multiplier": 0.6,
  "note": "GARCH forecasts magnitude (volatility), not direction."
}

三种组合模式

A. 仓位覆盖层 —— 嵌入任何现有策略。你的策略决定是否开仓;该技能决定开多少。将策略信号乘以 position_size_multiplier,完成。

B. 风险限速器 —— 独立熔断开关。如果 regime == "storm",则无论信号如何,将所有风险敞口限制在该乘数以内。适用于任何管理仓位的代理。

C. 比较框架 —— 在信任任何策略之前,先通过 compare.py 运行,检查波动率目标化是否改善了该策略的夏普比率/回撤。如果仓位调整没有帮助,则该策略的边际优势可能太弱,无法在实际环境中生存。

与市场方向判断策略(如马尔可夫风格的牛熊分类器)干净组合:它们的输出回答往哪个方向,该技能回答投入多少。两者相乘即可。

默认值与约定

  • 加密货币:--periods-per-year 365(默认)。股票:--periods-per-year 252。
  • 目标波动率:15%是合理保守的默认值。为了与无杠杆策略进行风险匹配比较,请设置目标波动率接近该策略本身实现的波动率。
  • 数据:yfinance代码(需联网)或任何包含日期和收盘价列的CSV文件——可无缝接入用户已有的任意数据管道。
  • 最低历史数据量:首次预测前至少约510个日度观测值。

诚实原则(不可协商)

  1. 永远不要将GARCH输出呈现为方向预测。
  2. 报告比较结果时,永远不要隐藏回撤或最差月份数据。
  3. 如果波动率目标化没有改善用户的策略,请直说——该结果同样有价值。

相关技能