Community코딩 & 개발github.com

milesdeutscher/garch-method

GARCH(1,1) 기반 변동성 예측 및 포지션 사이징. 사용자가 변동성 예측, 포지션 사이징, '얼마를 투자해야 하나', 변동성 타겟팅, 리스크 조절, 폭풍/안정 국면에 대해 묻거나 기존 전략에 변동성 기반 사이징이 도움이 되는지 테스트하려 할 때 사용합니다. 모든 티커(yfinance) 또는 날짜+종가 열이 있는 CSV 파일에서 작동합니다. '얼마나'에 답하고 '어느 방향'은 절대 답하지 않습니다.

garch-method란 무엇인가요?

이 스킬은 개인 투자자가 거의 묻지 않고 모든 펀드가 매일 묻는 질문인 '얼마나?'에 답합니다. 방향을 예측하지 않고 변동성의 크기, 즉 내일 움직임이 얼마나 격렬할지를 예측합니다. `garch_forecast.py`는 21일마다 확장 창에서 매개변수를 재추정하여 선견지명 없는 워크포워드 GARCH(1,1) 예측을 제공하고, `vol_target.py`는 `size = target_vol / forecast_vol` 공식을 사용하여 포지션 배수를 계산하며, `compare.py`는 고정 사이징과 변동성 타겟 사이징을 정직하게 비교합니다. 이 스킬은 Claude Code, Cursor, Codex 등 어떤 AI 에이전트와도 호환되며, JSON 출력을 통해 다른 스킬이나 전략에 쉽게 연결할 수 있습니다. 또한 위험 조절 스로틀 역할을 하거나 독립형 비교 도구로 사용되어 포트폴리오의 변동성 기반 의사 결정을 지원합니다.

지원 대상~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에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

GARCH Method — 변동성 예측 + 포지션 사이징

이 스킬은 개인 투자자가 거의 묻지 않고 모든 펀드가 매일 묻는 질문에 답합니다: 얼마나?

방향을 예측하지 않습니다. 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일 선행 변동성 예측 (일별 + 연간), 최근 1년 대비 변동성 백분위수, 국면 (안정 / 정상 / 폭풍).

2. vol_target.py — 사이즈

핵심 아이디어: size = target_vol / forecast_vol, [0.25배, 2.0배]로 제한.

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

출력: 포지션 사이즈 배수. "기준의 0.6배 실행" — 이것이 답입니다.

3. compare.py — 정직한 테스트

동일한 신호를 두 번 실행합니다 — 고정 사이즈 vs 변동성 타겟 — 두 가지의 자본 곡선과 통계를 나란히 보여줍니다. 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를 통해 실행하고 변동성 타겟팅이 샤프 비율/낙폭을 개선하는지 확인하세요. 사이징이 도움이 되지 않으면 전략의 엣지가 실제 조건에서 버티기에는 너무 약할 수 있습니다.

국면 방향 스킬(예: Markov 방식의 강세/약세 분류기)과 깔끔하게 결합: 그들의 출력은 어느 방향에 답하고, 이 스킬은 얼마나에 답합니다. 둘을 곱하면 됩니다.

기본값 및 규칙

  • 암호화폐: --periods-per-year 365 (기본값). 주식: --periods-per-year 252.
  • 목표 변동성: 15%는 합리적인 보수적 기본값입니다. 레버리지 없는 전략과 위험 조정 비교를 위해 목표 변동성을 전략 자체의 실현 변동성과 거의 동일하게 설정하세요.
  • 데이터: yfinance 티커 (인터넷 필요) 또는 날짜+종가 열이 있는 모든 CSV — 사용자가 이미 실행 중인 파이프라인에 통합됩니다.
  • 최소 이력: 첫 예측 전 약 510일의 일일 관측치.

정직 규칙 (협상 불가)

  1. GARCH 출력을 방향 예측으로 절대 제시하지 마십시오.
  2. 비교를 보고할 때 낙폭이나 최악의 월 수치를 절대 숨기지 마십시오.
  3. 변동성 타겟팅이 사용자의 전략을 개선하지 않는 경우, 그 결과도 똑같이 가치가 있다는 점을 분명히 말하십시오.

관련 스킬