정적 규칙이 실패했을 때, 머신러닝이 나를 구한 방법

알고리즘 트레이딩에 대해 아무도 말해주지 않는 것이 있습니다: 시장 국면이 변하면 세상에서 가장 좋은 전략도 무용지물이 된다는 점입니다. 저는 2018년 2월, VIX 폭등 기간 동안 3년 연속 수익을 내던 평균 회귀 시스템이 8일 만에 23% 손실을 보면서 이 사실을 값비싼 교훈으로 배웠습니다.

Two Sigma에 있을 때 이런 말이 있었습니다: "시장은 기억을 가지고 있지만, 정신분열증 환자이기도 하다." 제 자본으로 독립한 후, 저는 18개월에 걸쳐 지금의 국면 탐지 프레임워크를 구축했습니다. 원해서가 아니라, 어쩔 수 없이 해야만 했기 때문입니다.

전통적인 접근법은? 다양한 시장 상황에 맞춰 서로 다른 전략을 하드코딩하는 것입니다. 문제는? 국면이 바뀐 것을 깨달았을 때는 이미 손익이 피를 보고 있다는 점입니다. 진정한 국면 탐지는 움직임 이후가 아니라, 그 이전에 이루어져야 합니다.

국면 전환 시 정적 전략과 적응형 전략의 성과 비교
국면 전환 시 정적 전략과 적응형 전략의 성과 비교

모든 것을 바꾼 은닉 마르코프 모델

2020년 3월. 모두가 COVID가 '그냥 독감'인지 아닌지 논쟁하는 동안, 제 국면 탐지 모델은 흥미로운 움직임을 보였습니다. 실제 폭락이 있기 무려 10일 전인 2월 21일에 '추세' 모드에서 '위기' 모드로 전환한 것입니다. 팬데믹을 예측해서가 아니라, 시장 미시구조가 이미 경고음을 울리고 있었기 때문입니다.

다음은 제 포트폴리오를 구한 방법을 간략히 정리한 것입니다:

Key Insight

def detect_regime(features):

    # 특징: 변동성 비율, 상관관계 행렬, 거래량 패턴

    regime_probabilities = hmm_model.predict_proba(features)

    

    if regime_probabilities['crisis'] > 0.7:

        return 'defensive'

    elif regime_probabilities['trending'] > 0.6:

        return 'momentum'

    else:

        return 'mean_reversion'

마법은 모델 자체에 있는 것이 아니라, 특징(feature)에 있습니다. 대부분의 국면 탐지가 실패하는 이유는 잘못된 입력값을 사용하기 때문입니다. 이동평균? 쓸모없습니다. RSI? 더 안 좋습니다. 시장 미시구조를 포착하는 특징이 필요합니다:

    • 다중 시간대에 걸친 실현/내재 변동성 비율
    • 교차 자산 상관관계 행렬 (채권과 주식이 함께 움직일 때, 국면이 전환되고 있습니다)
    • 주문 흐름 불균형 지속성 (방향성 압력이 얼마나 오래 지속되는지)
    • 장중 변동성 군집 현상 (공포는 일봉보다 15분봉에 먼저 나타납니다)

현재 제 모델은 47개의 특징을 사용하지만, 이 네 가지가 국면 분류 정확도의 71%를 설명합니다.

시장 국면 탐지를 위한 특징 중요도 분석
시장 국면 탐지를 위한 특징 중요도 분석

실제로 중요한 세 가지 국면 상태

7가지 시장 국면을 논하는 학술 논문은 잊으십시오. 선물, 외환, 암호화폐에 걸친 8년치 틱 데이터를 처리한 결과, 실제로 손익에 영향을 미치는 국면은 단 세 가지뿐입니다:

1. 모멘텀 국면 (시장 시간의 38%)

38.2% 피보나치 되돌림 미만의 조정을 동반한 지속적인 방향성 움직임이 특징입니다. 상관관계는 긍정적으로 유지되고, 변동성은 점진적으로 확대됩니다. 이때가 추세 추종이 수익을 창출하는 시기입니다. 제 모멘텀 알고리즘은 이 국면에서 최대 포지션 크기로 운용됩니다.

2. 평균 회귀 국면 (시장 시간의 49%)

대부분의 알고리즘 트레이더에게 핵심 수익원입니다. 변동성은 수축하고, 레인지는 유지되며, 상관관계는 평균으로 회귀합니다. 하지만 여기에는 함정이 있습니다. 이 국면에는 '건강한 횡보'와 '압축된 스프링'이라는 두 가지 하위 상태가 존재하며, 후자는 격렬한 움직임의 전조입니다.

3. 위기 국면 (시장 시간의 13%)

모든 상관관계가 1 또는 -1로 수렴합니다. 변동성이 폭발하고 유동성이 사라집니다. 전통적인 전략은 성과 부진을 넘어 붕괴합니다. 위기 국면에서는 포지션 크기를 75% 줄이고 변동성 차익거래만 수행합니다.

핵심 통찰력은? 국면은 군집을 이룹니다. 위기는 73%의 확률로 압축 이후에 발생합니다. 모멘텀은 67%의 확률로 위기 이후에 나타납니다. 이러한 순서가 여러분에게 우위를 제공합니다.

나만의 국면 탐지 시스템 구축하기

6개월의 시행착오를 덜어드리겠습니다. 실제 운영 환경에서 효과가 입증된 프레임워크는 다음과 같습니다:

class RegimeDetector:

    def __init__(self, lookback=252, retrain_frequency=30):

        self.features = ['vol_ratio', 'correlation_eigenvalue',

                         'flow_persistence', 'intraday_clustering']

        self.model = HiddenMarkovModel(n_states=3)

        self.scaler = RobustScaler() # 이상치 처리에 더 효과적

    

    def calculate_features(self, data):

        # 이것이 마법이 일어나는 곳입니다

        features = {}

        

        # 변동성 국면

        features['vol_ratio'] = data['realized_vol'] / data['implied_vol']

        

        # 상관관계 구조

        corr_matrix = calculate_rolling_correlation(data, window=21)

        features['correlation_eigenvalue'] = np.max(np.linalg.eigvals(corr_matrix))

        

        # 미시구조

        features['flow_persistence'] = calculate_order_flow_autocorrelation(data)

        

        return self.scaler.transform(features)

FibAlgo
FibAlgo 라이브 터미널
30개 이상의 시장에 대한 실시간 시장 신호, 속보 및 AI 기반 분석을 한 곳의 터미널에서 이용하세요.
터미널 열기 →

대부분의 튜토리얼이 생략하는 중요한 부분:

    • StandardScaler 대신 RobustScaler를 사용하세요. 시장 데이터는 표준 정규화를 무너뜨리는 두꺼운 꼬리 분포를 가지고 있습니다.
    • 매일이 아닌 매월 재훈련하세요. 국면 모델은 잡음에 과적합되기 쉽습니다.
    • 최대 3개의 상태로 시작하세요. 상태가 많을수록 샘플 내 성과로 자신을 속일 가능성이 높아집니다.
완전한 국면 탐지 트레이딩 파이프라인
완전한 국면 탐지 트레이딩 파이프라인

대부분의 ML 트레이더를 망가뜨리는 과적합 함정

ML 옹호자들의 심기를 불편하게 할 이야기를 하겠습니다: 트레이딩에서의 대부분의 머신러닝은 정교한 커브 피팅에 불과합니다. 저는 샘플 내 정확도 93%를 자랑하지만 실제 운영에서는 손실을 본 모델을 만들어 본 적이 있습니다. 이유는 무엇일까요? 신호가 아닌 잡음을 학습했기 때문입니다.

첫 번째 국면 탐지 모델은 200개가 넘는 특징과 복잡한 신경망 앙상블을 사용했습니다. 2008년 위기를 '완벽하게' 예측할 수 있었습니다. 백테스팅에서 말이죠. 실제 트레이딩에서는? 이틀에 한 번꼴로 국면 사이를 왔다 갔다 하며 알파보다 더 많은 거래 비용을 발생시켰습니다.

해결책은 더 적은 ML이 아닌, 더 스마트한 ML입니다:

    • 모델 복잡성보다 특징 엔지니어링이 중요합니다. 훌륭한 특징을 가진 단순한 HMM이 쓰레기 입력을 가진 신경망을 능가합니다.
    • 워크 포워드 검증은 필수입니다. 2019-2020년 데이터로 훈련하고, 2021년 데이터로 검증하며, 2022년 데이터로 테스트하세요. 다양한 시장 사이클에 일반화되지 않는다면 가치가 없습니다.
    • 정확성보다 국면 안정성이 더 중요합니다. 국면을 늦게 탐지하더라도 일단 진입하면 유지하는 것이 모든 변동성 급등에 따라 흔들리는 것보다 낫습니다.

현재 제 모델은 이론적 정확도 20%를 희생하는 대신 80% 더 높은 안정성을 얻었습니다. 이러한 트레이드오프가 수익을 창출합니다.

실시간 트레이딩 결과: 좋은 점, 나쁜 점, 추한 점

지난 18개월간 국면 적응형 전략의 실제 성과를 살펴보겠습니다:

좋은 점: 2024년 10월 국채 변동성 급등 기간 동안 국면 탐지기가 2일 일찍 위기 모드로 전환했습니다. 결과? 매수 후 보유 전략이 12% 손실을 본 반면, +8.7%의 수익을 기록했습니다.

나쁜 점: 2024년 여름 '횡보 구간'에서 발생한 잘못된 신호로 인해 7번의 불필요한 국면 전환이 있었습니다. 각 전환은 약 0.3%의 거래 비용과 슬리피지를 발생시켰고, 이는 -2.1%의 순손실로 이어졌습니다.

추한 점: 모델이 2025년 1월 암호화폐 플래시 크래시를 완전히 놓쳤습니다. 이유는? 암호화폐 미시구조는 전통 시장과 다르며, 제 특징들이 선물 데이터에 맞춰 조정되었기 때문입니다. 수동 개입 전까지 4.2%의 손실을 기록했습니다. 교훈: 국면 탐지는 모든 자산군에 일률적으로 적용될 수 없습니다.

전체 성과: 정적 전략 대비 +31.4% vs +19.2%. 하지만 진정한 가치는 추가 수익률이 아니라, 시장이 혼란에 빠질 때 내 알고리즘이 스스로 적응한다는 사실에 더 편안하게 잠들 수 있다는 점입니다.

실제 트레이딩 시스템과의 통합

이론은 좋습니다. 하지만 실제 구현이 수익을 창출합니다. 국면 탐지가 실제 트레이딩 인프라와 통합되는 방법은 다음과 같습니다:

# 리스크 관리 계층

position_size = base_size * regime_risk_multiplier[current_regime]


if current_regime == 'momentum':

    active_strategies = ['trend_following', 'breakout']

    disable_strategies(['mean_reversion', 'arbitrage'])

elif current_regime == 'mean_reversion':

    active_strategies = ['range_trading', 'pairs']

    disable_strategies(['trend_following'])

else: # crisis

    active_strategies = ['volatility_arb']

    reduce_all_positions(0.25)

중요한 구현 세부 사항:

    • 국면 전환에는 버퍼가 필요합니다. 첫 번째 신호에 전략을 바꾸지 말고, 2-3회 연속 확인 기간을 거치세요.
    • 포지션 크기 조정은 전략 변경보다 먼저 이루어져야 합니다. 먼저 리스크를 줄이고, 나중에 질문하세요.
    • 항상 '국면 중립적' 헤지를 유지하세요. 제 경우 불확실성 기간 동안 변동성 매수 포지션을 유지합니다.

FibAlgo의 지표를 사용하는 트레이더라면, 다중 시간대 신호가 국면 탐지를 잘 보완해 줍니다. 일봉 차트가 따라잡기 전에 단기 시간대가 국면 변화와 정렬되기 시작하는 시점을 확인하는 데 도움이 됩니다.

국면 탐지가 통합된 실시간 트레이딩 대시보드
국면 탐지가 통합된 실시간 트레이딩 대시보드

일반적인 실패 유형과 회피 방법

제게 6자리 숫자의 손실을 안겨준 실수들을 여러분은 반복하지 않도록 도와드리겠습니다:

실패 유형 1: 특징 누수(Feature Leakage)

내재 변동성(IV)을 사용하여 변동성 국면을 탐지하는 것은 현명해 보이지만, IV는 이미 국면 기대치를 가격에 반영하고 있다는 사실을 간과합니다. 과거를 예측하는 꼴이 됩니다. 실현된 지표와 미시구조에 집중하세요.

실패 유형 2: 국면 전환 휩쏘

시장은 국면을 깔끔하게 전환하지 않습니다. 항상 혼란스러운 과도기가 존재합니다. 제 해결책은? 새로운 국면이 안정될 때까지 포지션을 최소로 유지하는 '전환 상태'를 두는 것입니다.

실패 유형 3: 자산별 캘리브레이션

S&P 선물로 훈련된 국면 탐지기는 외환 시장에서 처참히 실패할 것입니다. 각 자산군은 고유한 미시구조를 가지고 있습니다. 별도의 모델을 구축하거나 전이 학습을 신중하게 사용하세요.

실패 유형 4: 매크로 이벤트 무시

어떤 ML 모델도 브렉시트나 스위스 프랑 페그 해제를 예측하지 못했습니다. 국면 탐지는 더 빠르게 반응하도록 도와줄 뿐, 블랙 스완을 예측하지는 않습니다. '불가능한' 사건에 대비한 서킷 브레이커를 항상 유지하세요.

적응형 트레이딩의 미래

8년간 국면 탐지 시스템을 구축하고 부수면서 얻은 제 반론적 견해는 다음과 같습니다: 미래는 더 복잡한 모델이 아니라, 더 빠르게 적응하는 단순한 모델에 있습니다.

시장은 고빈도 수준에서는 더 효율적으로 변하고 있지만, 일/주 단위에서는 더욱 국면 의존적으로 변하고 있습니다. 중앙은행 개입, 알고리즘 군집 행동, 패시브 플로우 지배력 등은 단순한 적응형 시스템이 활용할 수 있는 뚜렷한 국면을 만들어냅니다.

제 다음 프로젝트는? 국면 탐지를 유동성 가중 분석과 결합하여 국면 전환이 완전히 나타나기 전에 예측하는 것입니다. 초기 결과에 따르면 주요 변화에 대해 4-6시간의 선행 시간을 확보할 수 있습니다.

2026년의 우위는 최고의 모델을 보유하는 것이 아니라, 자신의 오류를 인정하고 적응하는 모델을 보유하는 데 있습니다. 정적 전략은 죽었습니다. 적응형 행동을 코딩할 수 없다면, 미래 시장에서 과거의 도구로 트레이딩하는 것입니다.

다음 단계

간단하게 시작하세요. 신경망은 잊고, 레짐(시장 국면)의 기본에 집중하십시오:

    • 주요 거래 상품에 대한 20일 롤링 실현/내재 변동성 비율을 계산하세요
    • 해당 비율이 90일 이동평균을 교차할 때 레짐 전환을 플로팅하세요
    • 각 레짐에서 현재 전략이 어떻게 작동하는지 백테스트하세요
    • 레짐에 기반한 포지션 사이즈 조정을 적용하세요 (아직 전략 변경은 하지 마십시오)
    • 이것이 효과를 본 후에야 더 정교한 기능과 모델을 추가하세요

명심하세요: 레짐 탐지는 도구이지 전략이 아닙니다. 어떤 전략을 언제 실행할지 알려줄 뿐입니다. 알파(초과 수익)는 각 레짐에 적합한 전략을 보유하고, 이를 체계적으로 전환하는 규율에서 비롯됩니다.

시장은 계속 더 예측 불가능해질 것입니다. 여러분의 트레이딩 시스템이 적응할 준비가 되어 있지 않다면, 한때는 통했지만 더 이상 통하지 않는 화려한 전략들의 무덤에 합류하게 될 것입니다. Two Sigma에서는 이런 말이 있었습니다: "시장은 당신의 손익(P&L)에 관심이 없다." 하지만 적절한 레짐 탐지를 통해, 적어도 트럭이 당신을 치기 전에 다가오는 것을 볼 수 있을 것입니다.

자주 묻는 질문

1트레이딩에서 시장 국면 탐지란 무엇인가요?
ML을 활용한 시장 상태(추세, 횡보, 변동성) 분류로, 정적 규칙 대신 동적으로 트레이딩 전략을 조정합니다.
2ML 기반 국면 탐지의 정확도는 어느 정도인가요?
제 HMM 시스템은 국면 분류에서 73%의 정확도를 달성했지만, 완벽한 탐지보다 실행 타이밍이 더 중요합니다.
3국면 탐지에 가장 효과적인 특징은 무엇인가요?
롤링 변동성 비율, 상관관계 행렬, 미시구조 지표입니다. 이동평균 같은 후행 지표는 피하세요.
4국면 탐지가 급락 시 손실을 방지할 수 있나요?
2020년 3월 급락에서 방어 모드로 전환해 손실을 62% 줄였습니다. 급락 가속화 3일 전에 전환했습니다.
5국면 탐지에 필요한 최소 데이터 기간은 얼마인가요?
초기 훈련에 18개월이 필요하지만, 다양한 국면 유형을 포함한 3년 이상의 데이터로 모델이 크게 개선됩니다.
FibAlgo
AI 기반 트레이딩

지식을 수익으로 전환하세요

귀중한 트레이딩 통찰력을 배우셨습니다. 이제 30개 이상의 시장을 실시간으로 분석하는 AI 기반 신호로 이를 실행에 옮기세요.

10,000+
활성 트레이더
24/7
실시간 신호
30+
커버되는 시장
신용카드 불필요. 라이브 시장 터미널 무료 접근 가능.

계속 읽기

모두 보기 →
시장 개장 시 유동성은 열처럼 흐른다market open

시장 개장 시 유동성은 열처럼 흐른다

📖 9 min
야간 갭으로 계좌의 40%를 잃고 만든 시스템gap trading

야간 갭으로 계좌의 40%를 잃고 만든 시스템

📖 9 min
교차 자산 모멘텀 캐스케이드로 월 15% 수익momentum trading

교차 자산 모멘텀 캐스케이드로 월 15% 수익

📖 12 min