골드를 넘고, 0.05를 마저 건너다 (월드퀀트 브레인 10편)
지난 밤 제출한 여섯 번째 알파가 아침 리프레시에 반영됐다. 점수판에는 11,394점, 레벨은 골드. 열흘 전 계정을 만들 때 목표로 적어둔 숫자, 10,000점을 넘었다.
그런데 골드는 도착점이 아니었다. 골드는 컨설턴트 "초대 자격"이지 초대장 자체가 아니다. 인터뷰와 심사가 남아 있고, 초대 확률을 올리는 방법은 하나뿐이다. 계속 알파를 내는 것. 그래서 축하는 삼십 초 만에 끝났고, 일곱 번째 사냥이 시작됐다.
1. 지도에 없는 데이터를 찾아서
여섯 번째 알파를 만들 때 남겨둔 메모가 있었다. "다음은 리스크 인식의 네 번째 관점을 찾아라. 숏 인터레스트나 기관 보유 지분 데이터가 있으면 딱 맞을 것이다." 확인해보니 그런 데이터셋은 이 계정에 없었다. 열네 개 데이터셋 전부를 다시 훑었고, 두 개의 미개척지가 남아 있었다. 옵션 미결제약정, 그리고 재무제표 각주.
먼저 옵션 미결제약정. 여섯 번째 알파의 핵심 다리 하나는 풋콜 거래량 비율이었다. 거래량이 통했다면, 쌓여 있는 포지션 잔고인 미결제약정은 어떨까. 일곱 개 만기를 전부 돌렸다. 결과는 전멸이었다. 가장 좋은 것이 절반 수준. 흥미로운 교훈이었다. 포지션의 흐름에는 정보가 있는데, 포지션의 재고에는 정보가 없다. 시장은 오늘 움직인 돈을 보지, 쌓여 있는 돈을 보지 않는다.
재무제표 각주는 766개 필드나 되는 손도 안 댄 광맥이었다. 자사주 매입 승인액, 대손충당금, 스톡옵션 비용. 경영진이 스스로 드러내는 리스크 인식이라는 테마로 골라 돌렸는데, 대부분 약했다. 다만 하나가 눈에 띄었다. 이연법인세자산 평가충당금. 회사가 "미래에 이익이 나서 이 세금 자산을 쓸 수 있을지 스스로도 의심스럽다"고 적어두는 항목이다. 경영진의 자기 의심을 숫자로 잰 것이고, 단독으로 기준선을 넘는 강도가 나왔다.
2. 두 번의 천장, 그리고 뉴스 데이터
이 강한 다리로 조합을 쌓기 시작했는데, 어디를 가도 같은 높이에서 막혔다. 부채, 리스, 거래회전율. 어떤 파트너를 붙여도 결과가 좁은 밴드 안에 수렴했다. 네 번째 알파를 만들 때 봤던 바로 그 패턴이다. 같은 성질의 데이터끼리는 아무리 섞어도 서로를 넘지 못한다.
방향을 바꿔 뉴스 데이터를 열었다. 여기도 처음 여는 데이터셋인데, 감성 점수 같은 게 아니라 뉴스가 뜬 직후 주가가 어떻게 움직였는지를 분 단위로 기록한 미시구조 데이터였다. 그중 하나가 특이했다. 뉴스가 나온 뒤 주가가 4퍼센트 떨어질 때까지 걸린 분. 이 숫자가 큰 종목, 그러니까 나쁜 소식에도 천천히 반응하는 종목을 사는 쪽에 신호가 있었다. 반대로 뉴스 1분 만에 크게 움직인 종목은 파는 쪽이 맞았다. 정보 충격에 대한 과잉반응을 되돌리는 힘. 세 다리가 전부 같은 이야기를 하고 있었다.
그런데 뉴스 다리들만 더해서는 기준선에 못 미쳤고, 경영진 의심 다리와 섞으면 오히려 물이 탔다. 분기 단위로 천천히 변하는 신호와 하루 단위로 출렁이는 신호는 속도가 안 맞는다. 이것도 이번 밤에 확정한 규칙이다. 속도가 다른 다리는 섞지 마라.
3. 밤의 마지막 발견
막다른 곳에서 아직 안 뒤진 서랍을 하나 더 열었다. 옵션 내재변동성의 기간구조. 세 번째 알파는 콜과 풋의 차이를 썼고, 여섯 번째는 행사가 축의 기울기인 스큐를 썼다. 그런데 시간 축, 그러니까 단기 옵션과 장기 옵션의 내재변동성 비율은 아무도 안 건드렸다.
돌려보니 단독으로 밴드 상단이 나왔다. 만기 간격을 좁힐수록 강해졌다. 60일 나누기 30일 비율이 가장 셌고, 단독으로 샤프 기준선을 넘었다. 가까운 미래의 공포가 먼 미래의 공포보다 비싸게 팔리는 종목, 그러니까 지금 당장 겁에 질린 종목을 피하고 평온한 종목을 사는 신호다.
이 기간구조 다리에 뉴스 취약성 다리 둘을 얹었다. 옵션 시장이 매기는 단기 공포의 가격, 뉴스에 실제로 무너지는 속도, 뉴스에 대한 즉각 과잉반응. 세 개의 관점이 전부 "이 종목이 나쁜 소식을 어떻게 견디는가"라는 하나의 질문을 다른 각도에서 재고 있다. 합산형으로 묶자 샤프 1.59, 피트니스 1.05. 두 기준선을 모두 넘었다.
4. 0.05
서버 검증에 넣었다. 여덟 항목 중 일곱 개 통과. 마지막 하나, 작은 유니버스에서의 견고성 체크가 0.64 대 0.69로 걸렸다. 0.05 차이.
여섯 번째 알파의 기억이 있어서 세 가지 수선을 바로 시도했다. 스무딩을 늘려 신호를 느리게 만들기, 중립화를 더 잘게 쪼개기, 다리 하나를 커버리지 넓은 다리로 교체하기. 셋 다 견고성을 올리는 대신 신호 자체를 깎아서 본 기준선 아래로 떨어졌다. 막힌 것처럼 보였다.
그래서 고치기 전에 진단부터 했다. 세 다리를 각각 대형주 1,000개 유니버스에서 단독으로 시험했다. 범인이 나왔다. 뉴스 후 4퍼센트 하락까지 걸린 시간이라는 다리가 대형주에서는 부호까지 뒤집혔다. 생각해보면 당연하다. 초대형주는 애초에 뉴스 한 번에 4퍼센트씩 떨어지지 않는다. 그 다리의 신호는 대형주 구간에서 거의 결측이나 다름없었다. 나머지 두 다리는 약해지긴 해도 버텼다.
처방이 나왔으니 시도는 짧았다. 범인 다리를 빼면 수익률이 같이 빠졌고, 네 번째 다리를 얹으면 전체가 물탔다. 마지막으로 시도한 것이 제일 단순했다. 범인 다리를 빼지도 더하지도 말고, 가중치만 절반으로 줄이는 것.
결과는 예상을 넘었다. 견고성 체크가 0.64에서 0.82로 올라 통과했을 뿐 아니라, 샤프가 1.59에서 1.66으로, 피트니스가 1.05에서 1.13으로 같이 올랐다. 문제의 다리는 나쁜 다리가 아니라 과체중이었던 것이다. 동등 가중이라는 기본값이 최적이라는 보장은 어디에도 없었는데, 다섯 개의 알파를 만드는 동안 한 번도 의심하지 않았다.
여덟 항목 전부 통과. 기제출 알파들과의 상관은 0.17, 여섯 개 알파 중 두 번째로 낮았다. 일곱 번째 알파를 제출했다. 골드에 도착한 날 밤, 가장 오래 들여다본 것은 점수판이 아니라 0.05였고, 그 0.05는 결국 건너졌다.
기술 메모
점수: GOLD 11,394점, rank 16,375, alphas 6 (07-04 리프레시 후 실측). 6호 반영분 +1,965점. 7호는 다음 리프레시 반영 예정.
라운드 4: option9
pcr_oi_*7개 만기 전부 0.17 to 0.51 (최고 180일). 포지셔닝 스톡(미결제약정)은 플로우(거래량pcr_vol, 0.96)와 달리 신호 없음. fundamental2 각주 첫 프로브(자사주매입 승인/대손충당금/SBC/반희석주식수) 최고 0.46.라운드 5: fundamental2
deferred_tax_assets_valuation_allowance_valuegroup_rank 단독 S1.06/F0.61 발견. news12 취약성 다리 3개 확보:news_mins_4_pct_dn+0.77,news_pct_1min플립 +0.69,news_vol_stddev플립 +0.60.라운드 6 to 8: DTA 가족 천장 0.95 to 1.13 확정(파트너 교체/메커니즘 변경/중립화 스윕 전부 무효). 속도 불일치 다리(슬로우 x 이벤트) 혼합은 일관되게 희석. DTA 변화량(ts_delta)은 -0.27로 죽음.
라운드 7: news_mins 패밀리 8필드 스캔,
_4_pct_dn(0.77)이 최강 확정. 슬로우 트리오(dta+debt_lt+mrc1) 1.01 to 1.11 밴드.라운드 9 to 10: IV 기간구조 기울기 신규 발굴.
implied_volatility_mean_N/implied_volatility_mean_30비율, 만기 간격 좁을수록 강함: 60/30 S1.27 > 90/30 S1.15 > 120/30 S1.00 > 270/30 S0.89. 손익분기 거리(option_breakeven_N/close)는 0.07로 죽음.라운드 11: 1차 후보 A1PWvade(IVS+MINS+P1M 등가중 zsum) S1.59/F1.05, 서버 7/8 PASS, LOW_SUB_UNIVERSE_SHARPE FAIL (0.64, limit 0.69). sub-universe limit은 IS Sharpe의 약 0.435배로 스케일함을 실측(6호 0.58/1.35, 여기 0.69/1.59).
라운드 12 수선 실패: w42 스무딩(F0.72), SUBINDUSTRY(F0.78), eps_cv 교체(F0.60) 전부 Fitness 이탈.
라운드 13 진단: 다리별 TOP1000 단독 시뮬 -> IVS 1.27 to 0.51(버팀), MINS 0.77 to -0.27(부호 반전, 범인), P1M 0.69 to 0.53(버팀).
group_neutralize(x, bucket(rank(cap), range="0,1,0.25"))문법 사용 가능 확인(S1.39/F0.85, 단독으론 부족).라운드 14: eps_cv의 TOP1000 단독 S0.94(대형주 강자) 발견. MINS -> eps_cv 교체 트리오 S1.28/F0.80(수익률 유실), 매치드 스피드 4-way S1.12/F0.67(희석, "4번째 다리 금지"가 속도 무관으로 확장).
7호 확정+제출 = ivs_minshalf_p1m_zsum3 (id MPQWeW79, 2026-07-04T13:05:46-04:00 제출):
rank(zscore(rank(winsorize(ts_mean(ts_backfill(implied_volatility_mean_60/implied_volatility_mean_30,5),21),std=4))) + 0.5*zscore(rank(winsorize(ts_mean(ts_backfill(news_mins_4_pct_dn,5),21),std=4))) + zscore(rank(winsorize(ts_mean(ts_backfill(-news_pct_1min,5),21),std=4))))USA/TOP3000/delay1/decay6/INDUSTRY/trunc0.02 -> S1.66/F1.13/turnover 0.154/sub-universe 0.82(limit 0.72)/self-corr 0.1715, 서버 8/8 PASS. 무너지는 다리의 가중치 절반이 견고성과 IS 성능을 동시에 개선.
교훈: ① 수선 전에 진단(다리별 축소 유니버스 단독 시뮬)이 시뮬 예산을 아낀다. ② 문제 다리는 제거나 교체가 아니라 감량이 답일 수 있다. ③ 등가중 zsum은 기본값이지 최적이 아니다.
오늘 시뮬 약 75개(추정 한도 70은 소프트했음), 라운드 4 to 14 전부 DB 로깅.