💡 요약 / TL;DR — 셀프 오딧 핵심 요약 (BLUF)
- 발단: 독자 한 명이 “그 상관, DCC-GARCH로 다시 보라"고 제안 → 2000–2026년 6,467 거래일 전면 재검증으로 확대됐습니다.
- 판정: 원글의 핵심 주장(5영업일 시차 음의 전이, r=−0.6355) 반박 — 풀샘플 변동성 크로스상관은 전 lag(±10)에서 +0.07~+0.09로 평평하고, lag-5 DCC는 상수 상관 ≈0.001로 퇴화합니다.
- 원인: 원글 표의 ‘GARCH’ 열은 log-선형 R² 0.99987의 순수 지수감쇠 — 쇼크 반응이 전혀 없는 파이프라인 오류였습니다.
- 소표본의 함정: 17일 윈도우 상관은 −0.95~+0.99를 오가며, 전체 윈도우의 **12.3%**가 우연만으로 원글 수준(≤−0.6355)에 도달합니다.
2026년 5월 25일, 우리는 나스닥-100 변동성 쇼크가 5영업일 시차를 두고 옥수수 선물로 음의 전이된다고 주장하는 분석(상관 −0.6355, N=11,149)을 발행했습니다. 발행 17일 뒤, 독자 한 명이 물었습니다. “그 상관, DCC-GARCH로 다시 보셨습니까?” 2000–2026년 6,467 거래일을 처음부터 다시 돌린 답: 그 구조는 실데이터에 존재하지 않습니다.
공교롭게도 원글의 핵심 증거 표가 정확히 17일짜리였습니다. 발행 후 17일, 표본도 17일. 이 글은 그 17일이 6,467일 앞에서 어떻게 무너졌는지에 대한 부검 기록입니다.
이 글은 변명이 아니라 부검 보고서입니다. 독자 지적 → 재검증 설계 → 3중 포렌식 증거 → 판정 → 교훈 순서로, 우리가 우리 자신의 글을 반박하는 과정을 수치 그대로 공개합니다. 원글은 이미 정정판으로 교체되어 있습니다.
독자의 한 줄 댓글이 왜 전면 재검증이 되었는가?
지적의 요지는 단순했습니다. “17개 데이터 포인트의 크로스상관으로 시차 구조를 주장하려면, 최소한 시변 상관을 직접 추정하는 DCC-GARCH로 교차 확인해야 하는 것 아닌가.” 옳은 지적이었습니다. 원글은 2026년 5월 한 달, 거래일 17행짜리 표 하나 위에 다음의 주장을 쌓아 올렸습니다.
- C1: NDX→ZC 변동성은 5영업일 시차에서 최대 음의 상관(r=−0.6355)으로 동기화된다.
- C2: 시장은 3개 변동성 레짐으로 구분되며 레짐별로 두 자산의 관계가 다르다.
- C3: 표의 GARCH(1,1) 추정치는 실제 모델 적합 결과다.
표본 크기를 확인하는 순간 첫 번째 균열이 보였습니다. 원글이 명시한 N=11,149 영업일은 약 44년 치인데, 사용 데이터 소스(yfinance ZC=F)의 이력은 2000년 7월 시작, 25.9년입니다. 소스가 물리적으로 제공할 수 없는 표본 크기 — 이 시점에서 부분 수정이 아니라 전면 재검증으로 방향을 잡았습니다.
우리 자신에게 유리한 결론을 막는 재검증은 어떻게 설계하는가?
자기 글을 재검증할 때 가장 큰 리스크는 “살릴 수 있는 만큼만 검증하려는” 유인입니다. 그래서 각 단계가 기준 미달이면 다음 단계로 넘어가지 못하는 Phase-Gate 구조에, 데이터가 기준에 못 미치면 즉시 중단하는 fail-fast 원칙을 결합했습니다. 그리고 검증 파이프라인 자체가 틀렸다면 부검 결과도 무의미하므로, DCC 추정 참조 구현(Stage 1–2)을 파라미터를 알고 있는 합성 데이터로 사전 검증한 뒤에야 실데이터에 투입했습니다.
| Phase | Gate 통과 기준 | 결과 |
|---|---|---|
| Phase 0 — 데이터 무결성 | 공통 이력 ≥ 5년(fail-fast), 이상치는 크기가 아닌 사유로 분류 | 통과 — 공통 거래일 6,472 → 정제 후 6,467 |
| Phase 1 — 단변량 GARCH(1,1) 재적합 | Ljung-Box(표준화 잔차²) 전 구간 p>0.05 | 통과 — NDX p=0.090/0.061, ZC p=0.354/0.641 (lag10/20) |
| Phase 2 — DCC 추정 + 주장 검증 | 수렴 유효성 + 미래 참조(룩어헤드) 점검 | 통과 — lag-0 ρₜ 평균 +0.06, lag-5는 CCC 퇴화 |
Phase 0의 정제가 이번 설계의 핵심이었습니다. MAD robust-z 스크리닝(z>6)에 걸린 7일을 롤 캘린더·USDA 발표 일정과 하나씩 대조해, 7월물→9월물 롤오버 스프레드 인공물 5일은 제거하고(예: 2013-07-15 −26.86%, robust-z 19.1), USDA 곡물 재고·경작 면적 보고서 발표일의 실제 쇼크 2일(2010·2011-06-30)은 보존했습니다. 큰 수익률을 기계적으로 잘라내면 진짜 변동성 쇼크까지 지워지기 때문에, 제거는 전부 사유 기반입니다. 제거 영향: ZC 일수익률 표준편차 0.01786 → 0.01708(−4.38%).
룩어헤드 점검도 명시적으로 통과시켰습니다. 5영업일 lag는 달력일이 아니라 정렬된 공통 거래일 인덱스 위 .shift(5)로 정의하고, 주 비교는 eps_ndx.shift(5) ↔ eps_zc — 과거 NDX만 참조합니다. K-Means와 DCC는 in-sample 기술 통계로만 사용했습니다.
이렇게 잠근 파이프라인이 내놓은 증거가 세 건입니다. 하나씩 보겠습니다.
증거 1 — 표의 ‘GARCH’ 열은 왜 GARCH 산출물이 아닌가?
GARCH(1,1)의 조건부 분산은 $\sigma_t^2 = \omega + \alpha,\varepsilon_{t-1}^2 + \beta,\sigma_{t-1}^2$ 입니다. 이 식에서 $\alpha,\varepsilon_{t-1}^2$ 항은 협상의 여지가 없습니다. 변동성 쇼크가 입력되면 조건부 분산은 반드시 상승합니다. 그런데 원글 표의 ‘GARCH(1,1) 분산’ 열은 17행 내내 한 번도 오르지 않고 감소만 합니다.

원인: 쇼크 항이 한 번도 반영되지 않았다
원글 열을 log 변환해 시간축에 선형 적합하면 R²가 0.99987(NDX) / 0.99849(ZC) 입니다. 즉 이 열은 $x_t = x_0 \cdot r^t$ 형태의 순수 지수감쇠이고, 스텝당 감쇠 인자는 0.898 / 0.901입니다. 원글 표 자체에 찍혀 있는 입력 피크(NDX_Vol 5/12의 25.33, ZC_Vol 5/18의 31.45)조차 ‘GARCH’ 열에 아무 흔적을 남기지 않습니다. 자기 입력 변동성과의 상관은 −0.269(NDX) / −0.687(ZC) — 쇼크가 반영됐다면 양(+)이어야 할 값입니다.
결과: 단위와 캘린더까지 연쇄적으로 어긋났다
같은 표에서 두 가지 불일치가 더 확인됐습니다. 첫째, ‘분산’ 열의 초기값(22.10, 27.20)이 변동성 레벨과 동일합니다 — 분산이라면 변동성의 제곱 스케일이어야 합니다. 둘째, 표의 2026-05-25 행은 메모리얼데이(미 증시·CME 휴장) 로, 실데이터에 해당 거래일이 없습니다(5월 실거래 16일). 휴장일에 수치가 존재하는 표는 실측 데이터에서 나올 수 없습니다.
실제 재적합 결과는 전혀 다르게 움직입니다: NDX ω=0.0290, α=0.0985, β=0.8889 / ZC ω=0.0496, α=0.0603, β=0.9233 (α+β 각각 0.9875 / 0.9835). 같은 5월 구간의 실제 조건부 변동성(연율%)은 NDX 17.5→21.0→18.3 등락, ZC 16.9→28.4 상승 — 쇼크에 정상적으로 반응합니다. 원글이 FAQ에 적었던 α=0.15, β=0.80 역시 실제 적합과 불일치합니다.
한 줄로 정리하면
원글의 ‘GARCH’ 열은 유효한 GARCH 산출물이 아니라 쇼크 항이 누락된 파이프라인 오류의 산물입니다. 어느 코드 줄이 문제였는지의 역추적은 하지 않았습니다 — 현 증거만으로 판정을 닫기에 충분합니다.
증거 2 — ±5 시차에 같은 상관값이 찍히는 일이 왜 일어날 수 없는가?
원글의 시차별 상관 목록은 lag −5와 +5에 동일한 값(−0.6355), lag −3과 +3에도 동일한 값(−0.0777)을 제시했습니다. 우리는 이것을 ‘거울 대칭 상관’의 적신호라고 부릅니다. 리드-래그 크로스상관은 본질적으로 비대칭입니다 — $\mathrm{corr}(x_{t-k}, y_t)$와 $\mathrm{corr}(x_{t+k}, y_t)$는 서로 다른 인과 방향을 재는 서로 다른 통계량이고, 둘이 정확히 일치할 이유가 없습니다. 대칭은 자기상관(ACF)의 성질이지 크로스상관(CCF)의 성질이 아닙니다.
그래서 원글의 17일 표를 그대로 가져다 크로스상관을 직접 재계산했습니다. 결과: lag +5 = +0.698, lag −5 = −0.805. 뚜렷이 비대칭이며, 원글이 인쇄한 ±5 동일값 −0.6355는 원글 자신의 표로도 재현되지 않습니다.

덧붙여 원글의 lag-0 값 +0.2728은 17일 표로는 재현됩니다(+0.273) — 그러나 풀샘플 실데이터의 lag-0 상관은 +0.084입니다. 즉 원글의 상관 목록은 “자기 표로 재현되는 값"과 “자기 표로도 재현되지 않는 값"이 섞여 있고, 어느 쪽도 실측과 일치하지 않습니다.
한 줄 정리: ±lag에 같은 상관값이 찍힌 표를 보면 계산 과정을 의심하십시오. 그 형태 자체가 실측과 불일치하는 형태입니다.
증거 3 — 17일 표본은 6,467일 앞에서 어떻게 무너지는가?
이제 본 검증. 실제 GARCH 조건부 변동성으로 2000–2026년 풀샘플 크로스상관을 계산하면(NDX 선행 = k>0):
| k | −10 | −5 | −3 | 0 | +3 | +5 | +10 |
|---|---|---|---|---|---|---|---|
| 실데이터 (6,467일) | +0.072 | +0.079 | +0.080 | +0.084 | +0.087 | +0.086 | +0.078 |
| 원글 주장 (17일 표) | — | −0.6355 | −0.0777 | +0.2728 | −0.0777 | −0.6355 | — |
전 lag(±10)에서 +0.07~+0.09로 평평합니다. lag-5에 음의 골은 없습니다. DCC도 같은 결론입니다 — lag-0 DCC(1,1)는 a=0.0032, b=0.9938로 수렴하고 일별 ρₜ는 평균 +0.06(std 0.04, p5–p95 +0.006~+0.146)의 약한 양의 상관입니다. lag-5 DCC는 a=0 경계해로 CCC에 퇴화, 상수 ρ≈0.001 — 5일 시차에는 시변이든 상수든 의미 있는 상관 구조 자체가 없습니다.
그렇다면 −0.6355급의 숫자는 어떻게 세상에 나올 수 있었을까요. 17일이라는 표본 크기가 답입니다. 상관계수의 표준오차는 근사적으로 $1/\sqrt{N-3}$ 로, N=17에서는 우연의 진폭이 신호를 압도합니다. 산술 근사에 그치지 않고 실측했습니다: 6,467 거래일 위에서 17일 롤링 lag-5 상관을 전수 계산하면 값은 −0.95에서 +0.99까지 진동하고, 전체 윈도우의 12.3%가 순수한 우연만으로 원글 수준(≤−0.6355)에 도달합니다.

8개 윈도우 중 1개꼴로 “발견"되는 패턴은 발견이 아닙니다. 우리는 이것을 소표본 복권이라고 부릅니다 — 충분히 짧은 창을 충분히 많이 들여다보면, 어떤 극적인 상관이든 반드시 당첨됩니다.
한 줄 정리: 17일 상관은 −0.95와 +0.99 사이의 어떤 값도 만들어 낼 수 있습니다. 증거력은 0입니다.
판정 — 무엇이 반박되고 무엇이 살아남았는가?
한 줄 결론: 원글의 핵심 주장(5영업일 시차 음의 전이)은 2000–2026년 6,467 거래일 실데이터에 존재하지 않습니다. 표의 GARCH 열은 유효한 GARCH 산출물이 아니며, −0.6355는 17일 소표본과 산출 오류가 겹쳐 만든 숫자입니다.
| 주장 | 원글 서술 | 재검증 결과 | 판정 |
|---|---|---|---|
| C1 | NDX→ZC 변동성은 5영업일 시차에서 최대 음의 상관(r=−0.6355) | 풀샘플 크로스상관 전 lag +0.07~+0.09로 평평. lag-5 DCC는 상수 ρ≈0.001로 퇴화. −0.6355는 원글 17일 표로도 재현 불가(실계산 +0.698/−0.805) | 반박 |
| C2 | 시장은 3개 변동성 레짐으로 구분되며 레짐별 관계가 다르다 | 3-레짐 분리는 성립, Kruskal-Wallis p≈2×10⁻²⁹로 유의 — 그러나 레짐 간 Δρ≈0.02, 부호 불변(+0.05~+0.08) → 경제적으로 무의미 | 부분 확인 |
| C3 | 표의 GARCH(1,1) 추정치는 실제 적합 결과 | ‘GARCH’ 열은 log-선형 R²>0.998의 순수 지수감쇠, 쇼크 반응 없음. 실제 재적합(NDX α=0.0985/β=0.8889, ZC α=0.0603/β=0.9233)과 불일치 — 파이프라인 오류 | 반박 |
C2의 “부분 확인"은 정확히 읽어야 합니다. K-Means(K=3) 분류 자체는 성립합니다 — R0 곡물 변동 확대(n=1,688), R1 안정(n=4,016), R2 주식 스트레스(n=763). n≈6,400에서 p값은 사소한 차이도 유의로 잡아내므로, 통계적 구분 ≠ 경제적 의미입니다. 레짐이 바뀌어도 두 자산의 상관은 +0.05~+0.08 사이에서 부호 한 번 바뀌지 않습니다. “레짐별로 관계가 다르다"는 원글의 함의는 실용적 수준에서 지지되지 않습니다.
VXN 대조는 부분 일치였습니다. 원글의 NDX_Vol 열은 실제 ^VXN과 상관 +0.707, 평균 절대오차 0.62pt — 실제 VXN에서 파생된 것으로 보이나 일별 값은 불일치합니다. 결정적으로 25.33은 실제 2026년 5월 VXN 고점 레벨이 맞지만, 실제 기록일은 5/15입니다. 원글은 5/12로 기재했고, 그 날짜 위에 ‘5일 시차’ 서사가 세워져 있었습니다. 레벨은 진짜, 날짜는 실측과 불일치.
판정에 따라 정정판에서는 다음이 삭제됐습니다: Sharpe 1.15→1.84 개선 주장(전제 구조 부재), DTW 연산 서술(재현 불가), N=11,149(소스로 재현 불가), 2026-05-25 휴장일 행, 그리고 외부 검증에서 원문이 확인되지 않은 인용문 1건. 정정 전문은 정정판 본문에 있습니다.
같은 사고를 막는 3분 포렌식 코드
이번 부검의 증거 1을 그대로 함수화한 검증 구현입니다. 게시된 ‘GARCH’ 열 하나와 그 입력 변동성 열만 있으면 어느 표에든 적용할 수 있습니다. 마지막 두 줄은 증거 3의 12.3% 수치를 만든 측정 코드입니다.
import numpy as np
import pandas as pd
def garch_column_forensics(published: pd.Series, own_input_vol: pd.Series) -> dict:
"""게시된 'GARCH' 열이 진짜 GARCH(1,1) 산출물인지 판별하는 3중 포렌식.
적신호 셋 중 하나라도 켜지면 그 열은 조건부 분산이 아니다."""
x = published.to_numpy(dtype=float)
v = own_input_vol.to_numpy(dtype=float)
# 적신호 1 — 전 구간 단조 감소.
# 진짜 GARCH(1,1): sigma^2_t = omega + alpha*eps^2_{t-1} + beta*sigma^2_{t-1}
# alpha*eps^2 항 때문에 쇼크 직후 반드시 상승한다. 17행 연속 감소는 구조적으로 불가능.
flag_monotone = bool(np.all(np.diff(x) < 0))
# 적신호 2 — 순수 지수감쇠. log(x_t)가 직선이면 x_t = x_0 * r^t 일 뿐이다.
# 이번 부검 실측: R^2 = 0.99987(NDX) / 0.99849(ZC), r = 0.898 / 0.901
t = np.arange(len(x))
slope, _ = np.polyfit(t, np.log(x), 1)
r2 = float(np.corrcoef(t, np.log(x))[0, 1] ** 2)
decay_per_step = float(np.exp(slope))
# 적신호 3 — 자기 입력과의 상관. 쇼크가 반영됐다면 양(+)이어야 한다.
# 이번 부검 실측: -0.269(NDX) / -0.687(ZC) — 입력을 전혀 보지 않았다는 뜻.
corr_input = float(np.corrcoef(x, v)[0, 1])
return {
"monotone_decreasing": flag_monotone, # True면 적신호
"log_linear_r2": r2, # > 0.99이면 적신호
"decay_factor_per_step": decay_per_step,
"corr_with_own_input": corr_input, # <= 0이면 적신호
}
# 12.3% 실측: 원글의 17일 lag-5 윈도우를 6,467일 전체에 굴려
# 우연만으로 도달한 비율을 센다.
roll_corr = vol_ndx.shift(5).rolling(17).corr(vol_zc).dropna()
print(f"{(roll_corr <= -0.6355).mean():.1%}") # 12.3%
추가로 단위 검산 한 줄: ‘분산’ 열의 레벨이 변동성 열과 같은 자릿수라면 그 열은 분산이 아닙니다. 분산은 변동성의 제곱 스케일($\sigma^2$)이어야 합니다.
이번 셀프 부검이 남긴 세 가지 교훈은 무엇인가?
교훈 1: 소표본 상관은 주장의 근거가 될 수 없다
상관 주장에는 표본 크기·기간·롤링 분포를 함께 요구하십시오. N=17의 −0.6355는 N=6,467 위에서 12.3% 확률로 우연히 나오는 값이었습니다. 상관계수를 인용하는 글이 N을 밝히지 않거나, N이 30 미만인데 |r|이 0.6을 넘는다면 — 그 숫자는 발견이 아니라 추첨 결과일 가능성을 먼저 검토해야 합니다.
교훈 2: GARCH 산출물에는 정형화된 적신호가 있다
이번 사고의 탐지에는 고급 기법이 필요 없었습니다. 단조 감소 확인, log-선형 적합, 입력과의 상관 — 세 줄짜리 검사면 충분했습니다. 발행 전 점검 표로 정리하면:
| 결함 | 증상 | 처방 |
|---|---|---|
| 쇼크 미반영 ‘GARCH’ 열 | 입력 피크를 통과하며 전 구간 단조 감소 | corr(산출, 입력) > 0 요구 — garch_column_forensics() 3중 검사, α·ε² 반응이 없으면 산출물 폐기 후 재적합 |
| 순수 지수감쇠 | log-선형 적합 R² > 0.99, 스텝당 감쇠 인자 일정 | log σₜ를 t에 회귀 — 거의 완전한 직선이면 데이터를 한 번도 읽지 않은 산출 |
| ±lag 거울 대칭 크로스상관 | lag ±k에 동일 값 | CCF는 본질적으로 비대칭 — 원자료로 직접 재계산해 대조 |
| 소표본 상관 | N<30에서 |r|>0.6 | 풀샘플 롤링 분포와 대조해 우연 도달률 산출 |
| 분산-변동성 단위 혼동 | ‘분산’ 열이 변동성과 같은 자릿수 | 분산 = 변동성² 스케일인지 검산 |
| 휴장일 데이터 행 | 거래소 휴장일에 수치 존재 | 거래소 캘린더와 행 단위 대조 |
| 재현 불가 N | 데이터 소스 이력보다 큰 표본 | 소스 시작일 × 연간 거래일수로 상한 검산 |
교훈 3: 음의 결과는 실패가 아니라 완결된 결론이다
이번 재검증이 지지하는 것: NDX–ZC 변동성 상관은 전 시차에서 +0.07~+0.09의 약한 양의 값이고, 일별 ρₜ는 +0.06±0.04로 안정적이며, 3-레짐 분류는 통계적으로 성립한다. 이번 재검증이 기각하는 것: 5영업일 시차의 음의 전이, 그 시차를 이용한 헷징 타이밍, 그리고 레짐별 관계 차이의 경제적 활용 가능성. “무엇이 지지되고 무엇이 기각되는가"를 이 해상도로 말할 수 있게 된 것이 6,467 거래일이 산 결론입니다.
FAQ: 셀프 오딧과 음의 결과에 관한 자주 묻는 질문
DCC-GARCH 모델이 무엇이고, 왜 이 재검증의 도구로 선택했나요?
DCC(Dynamic Conditional Correlation)-GARCH는 2단계 다변량 변동성 모델입니다. 1단계에서 자산별 GARCH(1,1)로 조건부 변동성을 적합하고, 2단계에서 표준화 잔차의 재귀식 $Q_t = (1-a-b),\bar{Q} + a,z_{t-1}z_{t-1}^{\top} + b,Q_{t-1}$ 로 시변 상관 ρₜ를 추정합니다. 원글의 주장이 “특정 시차에 상관 구조가 존재한다"였기 때문에, 상관의 시간 변화를 일별로 직접 추정하는 이 모델이 가장 정면의 검증 도구였습니다. lag-5에서 a=0 경계해로 퇴화했다는 결과는 그 시차에 추적할 시변 상관 자체가 없다는 뜻입니다.
음의 결과를 별도 글로 발행하는 이유는 무엇인가요?
같은 신호를 믿고 포지션을 잡을 독자가 있기 때문입니다. “5일 시차 음의 전이가 6,467 거래일에 존재하지 않는다"는 결론은 그 자체로 손실을 막는 정보이며, 정정판 본문에 묻어 두는 것보다 검증 과정 전체를 공개하는 편이 재발 방지에 유효합니다. rollbrains는 작동하지 않는 것을 아는 일이 작동하는 것을 아는 일만큼 가치 있다는 입장을 유지합니다.
원글에서 살아남은 결론은 무엇인가요?
세 가지입니다. VXN 25.33이 2026년 5월의 실제 고점 레벨이라는 사실(날짜는 5/15로 정정), K=3 레짐 분류가 통계적으로 성립한다는 사실(단 Δρ≈0.02로 경제적 활용 가치는 없음), 그리고 GARCH(1,1)·K-Means라는 방법론 프레임 자체입니다. 도구는 유효했고, 그 도구가 만들어 냈다고 제시된 산출물이 유효하지 않았습니다.
12.3%라는 수치는 무엇을 의미하나요?
6,467 거래일 위에서 원글과 동일한 17일 롤링 lag-5 상관을 전수 계산했을 때, 전체 윈도우의 12.3%가 순수한 우연만으로 원글 수준인 −0.6355 이하에 도달했다는 측정값입니다. 상관계수의 표준오차는 근사적으로 $1/\sqrt{N-3}$ 이어서 N=17에서는 우연의 진폭이 신호를 압도하고, 실제 롤링 값은 −0.95~+0.99를 진동했습니다. 8개 중 1개꼴로 나오는 패턴은 발견이 아니며, 17일 상관의 증거력은 0입니다.
단조 감소만 하는 ‘GARCH’ 열이 왜 결정적 적신호인가요?
GARCH(1,1) 재귀식 $\sigma_t^2 = \omega + \alpha\varepsilon_{t-1}^2 + \beta\sigma_{t-1}^2$ 은 α>0인 한 큰 쇼크 직후 조건부 분산이 반드시 상승하도록 보장합니다 — 실제 금융 데이터에서 α=0 추정은 그 자체가 적합 실패입니다. 두 입력 변동성 피크를 그대로 통과하는 17행 연속 감소는 경계선 패턴이 아니며, log-선형 R² 0.99987과 결합하면 데이터를 한 번도 읽지 않은 결정론적 감쇠로 확정됩니다.
추천 연관 리서치
- 이 부검의 대상 — 정정판 원글: 주식 폭락할 때 옥수수 선물 사면 안전할까? 통계적 헷징 시점 분석 — 본 오딧의 판정을 반영해 전면 수정된 정정판입니다.
- 전체 그림 — 허브 가이드부터: 백테스트가 거짓말하는 7가지 방법 (이론이 아닌 측정된 데이터) — 7가지 구조적 실패 패턴을 한곳에서 측정해 정리하고, 각 실험으로 연결합니다.
- 백테스트 부검 시리즈:
- 백테스트 부검 #1. 진입가가 엣지를 만든다: 동일 방향 예측 세션에서 체결 가격 차이가 누적 수익에 미치는 실측 연구입니다.
- ChatGPT가 절대 못 잡는 미래 참조 편향(Look-Ahead Bias) 디버깅: 데이터 누수를 차단하고 시계열 인과율을 복구하는 핵심 퀀트 기술입니다.
- 슬리피지 시뮬레이션: 체결 오차와 실전 자산 파산 경로의 실측: 백테스트 성과를 실전에 맞추는 슬리피지 모델링 가이드입니다.
- 타임프레임을 바꾸면 백테스트 결과가 달라지는 이유: OHLC 캔들의 장내 모호성을 1분봉으로 전수 검증한 실측 연구입니다.
- 상관관계와 방향성(Correlation is not Directional): 퀀트 투자에서 다중 자산 상관 수렴의 오판을 파헤친 통계적 실증 분석입니다.
데이터·재현: yfinance ^NDX·ZC=F 일봉(공통 거래일 2000-07-18~2026-06-10), 2단계 DCC-GARCH(arch·scikit-learn), 합성 데이터로 사전 검증된 참조 구현 Stage 1–2 재사용. 본문 전체 수치는 2026-06-11 검증 보고서 기준입니다.
최종 검증: 2026년 6월
마지막으로 한 문장. 백테스트의 교정 비용이 가장 싼 시점은 발행 전이고, 두 번째로 싼 시점은 독자가 지적한 직후입니다 — 세 번째는 없습니다. 지금 당신의 글에서 단조 감소하는 ‘GARCH’ 열부터 찾으십시오.
실측 핵심 수치
자주 묻는 질문
DCC-GARCH 모델이 무엇인가요?
음의 결과(negative result)를 왜 별도 글로 발행하나요?
이번 오딧에서 살아남은 결론은 무엇인가요?
12.3%라는 수치는 무엇을 의미하나요?
단조 감소만 하는 'GARCH' 열이 왜 적신호인가요?
출처 및 1차 자료
교육용 콘텐츠이며 투자 권유나 금융 조언이 아닙니다. 데이터·가격·도구 사양은 바뀔 수 있으니, 실거래 전 직접 검증하고 페이퍼 트레이딩으로 확인하시기 바랍니다.
