← 기사 목록으로
July 31, 2026
5분 소요

인식론적 vs 알레아토리: 수익 모델이 모르는 것 측정하기

인식론적 vs 알레아토리: 수익 모델이 모르는 것 측정하기
#bayesian
#uncertainty
#neural-network
#risk
#position-sizing

이 블로그의 모든 포지션 사이징 규칙은 불확실성을 단일 스칼라로 압축한다. 켈리 기준는 분산으로 나눈다. 컨포멀 예측는 구간 폭으로 나눈다. 변동성 타겟팅는 GARCH 예측으로 나눈다. 셋 다 정확하지만, 트레이딩에 중요한 구분을 버린다: 시끄러운 시장과 무지한 모델의 차이다.

이는 같은 리스크가 아니다. 시장 노이즈는 가격이 매겨져 있다——그것을 부담하는 것에 대해 보상을 받기 때문이다. 모델 무지는 가격이 매겨져 있지 않고, 보상도 받지 않으며, 정확히 엣지 추정이 가장 신뢰할 수 없는 상태다. 둘을 동등하게 페널티하는 사이징 규칙은 테이블 위에 무언가를 남기는 셈이다.

이 포스트는 그 분할을 측정 가능하게 만드는 것에 관한 것이다. 구체적으로:

σeff2=σalea2+λσepi2,λ>1\sigma^2_{\text{eff}} = \sigma^2_{\text{alea}} + \lambda \cdot \sigma^2_{\text{epi}}, \qquad \lambda > 1

이것을 켈리 분모에 전체 분산 대신 넣으라. 나머지 기사는 두 구성 요소를 추정하는 방법(MC 드롭아웃, 딥 앙상블)과 실제 데이터에서 분할이 어떻게 보이는지에 관한 것이다.

테제: 두 불확실성, 두 가지 반응

인식론적 알레아토리
출처 제한된 데이터 / 모델 데이터 내재 노이즈
감소 가능? 예 (더 많은 데이터가 도움) 아니오
트레이딩 행동 포지션 축소 또는 abstain 스톱 완화, 레버리지 축소
시그널 "이 레짐을 본 적 없다" "이 시장은 지금 시끄럽다"

"트레이딩 행동" 행의 비대칭성이 전체 논점이다. 높은 알레아토리 분산은 알려진 미지: 그것에 대해 사이징하고, 헷지하고, 보유하며 리스크 프리미엄을 받을 것으로 기대할 수 있다. 높은 인식론적 불확실성은 알려지지 않은 미지: 모델은 외삽하고 있으며, 평균 추정치 μ\mu는 분산 추정치만큼 의심스럽고, 자신의 파라미터에 대해 틀리는 것에 부착된 프리미엄이 없다.

둘을 혼동하는 모델은 낯선 레짐에서 과도하게 트레이딩하거나(인식론적 불확실성 무시), 익숙하지만 시끄러운 레짐에서 과소 트레이딩하거나(알레아토리 불확실성 과도 페널티) 할 것이다. σtotal2\sigma^2_{\text{total}}에 적용되는 표준 켈리는 어떤 구성 요소가 지배적이느냐에 따라 둘 다 수행한다.

분해

인식론적 불확실성은 모델 파라미터 θ\theta에 대한 불확실성에서 비롯된다. 단일 θ\theta^*(최우도처럼) 대신 분포 p(θD)p(\theta \mid \mathcal{D})를 유지하고 적분한다:

p(yx,D)=p(yx,θ)p(θD)dθp(y \mid x, \mathcal{D}) = \int p(y \mid x, \theta)\, p(\theta \mid \mathcal{D})\, d\theta

θ\theta에 대해 적분하여 유도되는 퍼짐이 인식론적이다. D\mathcal{D}가 성장하여 입력 영역을 덮을수록 줄어든다.

알레아토리 불확실성은 데이터 생성 프로세스의 조건부 노이즈다. 신경망에서는 입력 종속 분산을 방출하는 두 번째 출력 헤드로 모델링된다:

p(yx,θ)=N(y;μθ(x),σθ2(x))p(y \mid x, \theta) = \mathcal{N}\bigl(y;\, \mu_\theta(x),\, \sigma^2_\theta(x)\bigr)`

그 이분산 헤드는 GARCH가 고전적으로 추정하는 것과 동일한 객체를 추정하고 있다——야간에 높고 피크 시간에 낮은 상태 종속 조건부 분산. 암호화폐브에서 이 객체의 실증값이 필요하면 GARCH(1,1) for crypto volatility가 적절히 다루며, 왜 라이브 조건부 예측(무조건부 표본 분산이 아님)이 켈리 분모에 속하는지도 포함한다. NN 헤드는 평균과 공동으로 피팅된 동일한 객체의 다른 추정기일 뿐이다.

GARCH가 줄 수 없는 것이 다른 항이다. 이것이 이 포스트 나머지 부분의 목적이다.

이미 발표된 것과의 상대적 위치

이전 두 포스트가 인접한 영역을 다루며 먼저 읽을 가치가 있다. 이 포스트는 고의적으로 그것들을 반복하지 않기 때문이다:

  • 리스크 인식 포지션 사이징을 위한 컨포멀 예측은 유한 샘플 커버리지 보증이 있는 구간, 분포 가정 없음, 역폭 사이징 및 엣지 비율 노-트레이드 필터를 제공한다. 올바르게 크기가 조정된 구간만 원한다면 더 강력한 도구다.
  • Temporal Fusion Transformers는 직접 분위수를 방출하며 핀볼 손실 분위수는 샘플 외에서 자동으로 교정되지 않는다고 이미 경고한다.

트레이드오프는 명확하다. 컨포멀은 보장을 주지만 하나의 숫자——구간 폭은 분해할 수 없으므로 넓어졌는지 말해주지 않는다. 베이지안 방법은 분해를 주지만 보장은 없다——MC 드롭아웃 구간은 근사 사후만큼만 좋다. 이 기사는 분해를 사는 것에 관한 것이다. 커버리지를 위해 그 위에 컨포멀을 유지해야 한다.

방법 1: 변분 추론(Backprop에 의한 베이즈)

밀집된 베이지안 가중치 사후는 예측 수익 분포를 생성하기 전에 다룰 수 있는 변분 근사로 압축된다

베이지안 신경망은 가중치에 사전 p(θ)p(\theta)를 두고 사후 p(θD)p(Dθ)p(θ)p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta) p(\theta)를 찾는다. 정규화자는 모든 가중치 구성에 대한 적분이 필요하므로 소수의 파라미터를 넘는 것에는 다루기 힘들다.

변분 추론은 다루기 힘든 사후를 다룰 수 있는족 qϕ(θ)q_\phi(\theta)——일반적으로 인수분해된 가우시안 qϕ(θ)=jN(θj;μj,σj2)q_\phi(\theta) = \prod_j \mathcal{N}(\theta_j; \mu_j, \sigma_j^2)——로 대체하고 최소화한다:

KL(qϕ(θ)p(θD))\text{KL}\bigl(q_\phi(\theta) \,\|\, p(\theta \mid \mathcal{D})\bigr)

이것은 알려지지 않은 사후를 포함하므로, 대신 증거 하한을 최대화한다:

L(ϕ)=Eqϕ(θ)[logp(Dθ)]KL(qϕ(θ)p(θ))\mathcal{L}(\phi) = \mathbb{E}_{q_\phi(\theta)}\bigl[\log p(\mathcal{D} \mid \theta)\bigr] - \text{KL}\bigl(q_\phi(\theta) \,\|\, p(\theta)\bigr)

첫 번째 항은 qϕq_\phi를 데이터 설명을 향해 밀고, 두 번째 항은 사전 근처에 유지한다. Bayes by Backprop(Blundell et al., 2015)는 재매개변화 트릭으로 이것을 미분 가능하게 만든다: ϵN(0,I)\epsilon \sim \mathcal{N}(0, I)를 샘플링하고 θ=μ+σϵ\theta = \mu + \sigma \odot \epsilon을 설정한다.

실제로 VI는 파라미터 수를 두 배로 늘리고, 그래디언트 분산을 높이며(각 순전파는 다른 가중치 사용), 평균장 가정은 가중치 상관관계를 무시하므로 인식론적 불확실성을 과소평가하는 경향이 있다. 이미 훈련된 결정론적 모델이 있는 트레이딩 스택에서는 아래 두 가지 더 저렴한 방법이 일반적으로 더 좋은 진입점이다.

방법 2: MC 드롭아웃

드롭아웃 활성화된 순전파 반복이 서로 다른 예측으로 퍼지며, 그 불일치가 인식론적 불확실성을 형성한다

Gal과 Ghahramani(2016)는 드롭아웃으로 훈련되고 테스트 시에도 드롭아웃이 활성화된 상태로 평가되는 네트워크가 심층 가우시안 프로세스에서 근사 변분 추론 절차임을 보였다. 드롭아웃은 이미 서브네트워크에 대한 분포를 유발하며, 추론 시에도 켜두고 TT번의 순전파를 실행하면 그 암시적 사후에서 샘플링한다.

이것은 이 블로그의 다른 곳에는 없다. 여기서 공개된 코드는 드롭아웃을 훈련 시 정규화기로만 사용한다(spread modeling, TFT에서 dropout=0.1–0.3). 추론 시 켜두는 것은 한 줄 변경이지만 전혀 다른 의미다.

예측 통계

TT번의 확률적 순전파가 {y^t}t=1T\{\hat{y}_t\}_{t=1}^{T}를 생성하고 각 패스의 분산 σ^t2(x)\hat{\sigma}_t^2(x)가 있는 경우:

예측 평균:

yˉ=1Tt=1Ty^t\bar{y} = \frac{1}{T} \sum_{t=1}^T \hat{y}_t

인식론적(패스 간 불일치):

σepi2=1Tt=1T(y^tyˉ)2\sigma^2_{\text{epi}} = \frac{1}{T} \sum_{t=1}^T (\hat{y}_t - \bar{y})^2

알레아토리(예측 노이즈 평균):

σalea2=1Tt=1Tσ^t2\sigma^2_{\text{alea}} = \frac{1}{T} \sum_{t=1}^T \hat{\sigma}_t^2

분해는 전체 분산의 법칙 그 자체다: 조건부 평균의 분산 더하기 조건부 분산의 평균. 전체 예측 분산은 그 합이다.

PyTorch 구현

import torch
import torch.nn as nn
import numpy as np

class MCDropoutNet(nn.Module):
    """
    불확실성 추정을 위한 MC 드롭아웃이 있는 수익 예측 네트워크.
    예측 평균과 로그 분산(알레아토리)을 모두 출력한다.
    """
    def __init__(self, input_dim: int, hidden_dim: int = 128, dropout_p: float = 0.1):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(p=dropout_p),
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(p=dropout_p),
        )
        self.head_mu = nn.Linear(hidden_dim, 1)        # 예측 수익
        self.head_logvar = nn.Linear(hidden_dim, 1)    # log(알레아토리 분산)

    def forward(self, x: torch.Tensor):
        h = self.net(x)
        return self.head_mu(h), self.head_logvar(h)


def heteroscedastic_loss(mu, log_var, target):
    """학습된 입력 종속 분산이 있는 가우시안의 음의 로그 우도."""
    precision = torch.exp(-log_var)
    return torch.mean(0.5 * precision * (target - mu) ** 2 + 0.5 * log_var)


@torch.no_grad()
def mc_predict(model: MCDropoutNet, x: torch.Tensor, n_samples: int = 100):
    """
    MC 드롭아웃 추론: 드롭아웃을 켜고 T 순전파를 수집,
    예측 분산을 인식론적 및 알레아토리로 분해.
    """
    model.train()  # NOT eval() -- 이것이 드롭아웃을 활성 상태로 유지한다
    mus, log_vars = [], []
    for _ in range(n_samples):
        mu, log_var = model(x)
        mus.append(mu)
        log_vars.append(log_var)

    mus = torch.stack(mus)            # (T, batch, 1)
    log_vars = torch.stack(log_vars)  # (T, batch, 1)

    pred_mean = mus.mean(dim=0)
    epistemic_var = mus.var(dim=0)              # 패스 간 분산
    aleatoric_var = log_vars.exp().mean(dim=0)  # 패스 간 기댓값

    return {
        "mean": pred_mean.squeeze(-1),
        "epistemic_std": epistemic_var.sqrt().squeeze(-1),
        "aleatoric_std": aleatoric_var.sqrt().squeeze(-1),
        "total_std": (epistemic_var + aleatoric_var).sqrt().squeeze(-1),
    }

훈련은 이분산 손실을 사용하며, 이것이 분산 헤드에 의미를 부여한다. 자기 조절 구조에 주의: 0.5 * precision * (target - mu)**2 항은 작은 분산을 원하고, 0.5 * log_var 항은 그것을 페널티하며, 균형점은 조건부 노이즈 수준이다.

model = MCDropoutNet(input_dim=50, hidden_dim=128, dropout_p=0.1)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)

for epoch in range(200):
    model.train()
    for x_batch, y_batch in train_loader:
        mu, log_var = model(x_batch)
        loss = heteroscedastic_loss(mu, log_var, y_batch)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

이 메서드를 조용히 죽이는 gotcha: mc_predict 내에서 model.eval() 호출. 드롭아웃을 비활성화하고 모든 패스가 동일한 값을 반환하며, epistemic_var는 정확히 0으로 붕괴하고 사이징 규칙은 조용히 알레아토리 분산만 있는 일반 켈리로 되돌아간다. 오류 없이 실패한다. 추론 경로에서 epistemic_var > 0을 assert하라.

순전파 횟수 선택

  • T=30T = 30: 안정적인 평균의 합리적 하한
  • T=100T = 100: 평균과 분산에 대한 실용적 기본값
  • T=500+T = 500{+}: 꼬리 분위수가 필요하지 않은 한 체감 수익

방법 3: 딥 앙상블

5개의 독립적으로 훈련된 신경망이 예측을 결합하며 그 불일치가 인식론적 헤일로를 형성한다

Lakshminarayanan et al.(2017)은 서로 다른 무작위 초기화에서 MM개의 독립 네트워크를 훈련하고 집계한다. 공식적으로 베이지안은 아니지만, 딥 앙상블은 불확실성 교정 벤치마크에서 일관되게 더 원칙적인 방법을 이긴다.

p(yx)1Mm=1Mp(yx,θm)p(y \mid x) \approx \frac{1}{M} \sum_{m=1}^M p(y \mid x, \theta_m^*)

멤버 간 불일치가 인식론적 추정이다. 앙상블은 이 블로그의 다른 곳에서 집계 장치로 등장한다——이상 감지, HMM 레짐 감지, 컨포멀의 EnbPI 블록 부트스트랩——하지만 멤버 간 퍼짐을 통한 불확실성 추정기로는 등장하지 않는다. 이것이 여기서의 용도다.

앙상블 구현

다양성은 독립 훈련에서 온다. MM개 객체를 구축에서 오는 것이 아니다. 훈련되지 않거나 동일하게 훈련된 멤버의 앙상블은 노이즈 또는 0 인식론 분산을 반환한다:

class DeepEnsemble:
    def __init__(self, input_dim: int, n_models: int = 5, hidden_dim: int = 128):
        self.models = []
        for seed in range(n_models):
            torch.manual_seed(seed)          # 멤버마다 다른 init
            self.models.append(
                MCDropoutNet(input_dim, hidden_dim, dropout_p=0.0)
            )

    def fit(self, train_loader, epochs: int = 200, lr: float = 1e-3):
        """각 멤버는 독립적으로 훈련된다. 여기서 다양성이 생긴다——
        다른 init, 다른 셔플 순서. 이것을 건너뛰면
        epistemic_var == 0(동일 멤버) 또는 순수 노이즈(훈련되지 않음)이 된다."""
        for seed, model in enumerate(self.models):
            torch.manual_seed(1000 + seed)   # 다른 셔플/드롭아웃 스트림
            opt = torch.optim.AdamW(model.parameters(), lr=lr, weight_decay=1e-4)
            model.train()
            for _ in range(epochs):
                for x_batch, y_batch in train_loader:
                    mu, log_var = model(x_batch)
                    loss = heteroscedastic_loss(mu, log_var, y_batch)
                    opt.zero_grad()
                    loss.backward()
                    opt.step()
        return self

    @torch.no_grad()
    def predict(self, x: torch.Tensor):
        mus, variances = [], []
        for model in self.models:
            model.eval()                     # 여기서는 정확: 드롭아웃 샘플링 없음
            mu, log_var = model(x)
            mus.append(mu.squeeze(-1))
            variances.append(log_var.exp().squeeze(-1))

        all_mus = torch.stack(mus)
        all_vars = torch.stack(variances)

        epistemic_var = all_mus.var(dim=0)   # 멤버 간 퍼짐
        aleatoric_var = all_vars.mean(dim=0)

        return {
            "mean": all_mus.mean(dim=0),
            "epistemic_std": epistemic_var.sqrt(),
            "aleatoric_std": aleatoric_var.sqrt(),
            "total_std": (epistemic_var + aleatoric_var).sqrt(),
        }

model.eval()DeepEnsemble.predict에서는 맞고 mc_predict에서는 틀리다는 점에 주의. 확률성 소스가 다르다: 앙상블은 독립 훈련에서, MC 드롭아웃은 라이브 드롭아웃 마스크에서 얻는다.

트레이드오프: MC 드롭아웃 vs 딥 앙상블

MC 드롭아웃 딥 앙상블
훈련 비용 1x(단일 모델) MMx(MM 모델)
추론 비용 TT 순전파 MM 순전파
메모리 1x 파라미터 MMx 파라미터
불확실성 품질 인식론적 과소평가 경향 전체적으로 더 잘 교정
구현 용이성 사소(flag flip) 사소(MM 모델 훈련)
병렬성 순차 패스(동일 모델) 완전 병렬

실용적 하이브리드: 작은 앙상블(M=35M = 3{-}5)을 훈련하고 각 멤버도 MC 드롭아웃을 사용하며, 모델 간 불일치와 모델 내 확률성 모두를 포착한다.

보상: 비대칭 사이징

알레아토리 노이즈는 리스크 엔벨로프를 넓히고 인식론적 불확실성은 포지션 사이징 조리개를 닫고 abstain 구역을 만든다

이것이 실제 기여다. 가우시안 켈리는 f=μ/σ2f^* = \mu / \sigma^2이다. 유도, 성장 포물선, 드로다운 확률 테이블, 전체 켈리가 아닌 분수 켈리를 실행하는 4가지 이유는 모두 The Kelly Criterion for Strategies에 있으며, 여기서 반복되지 않는다. 4분의 1 켈리 분수에서 f=μ/σ2f^* = \mu / \sigma^2를 주어진 것으로 하라.

변경점은 분모다. 전체 예측 분산 대신:

σeff2=σalea2+λσepi2,λ>1\sigma^2_{\text{eff}} = \sigma^2_{\text{alea}} + \lambda \cdot \sigma^2_{\text{epi}}, \qquad \lambda > 1

λ>1\lambda > 1에 대한 논거: 알레아토리 분산은 시장의 노이즈이며, 가격이 매겨져 있고, 그것을 부담하는 것이 전략이 소득을 얻는 방법이다. 인식론 분산은 당신의 무지——프리미엄이 없으며, 더 나쁜 것은 당신의 μ\mu 추정이 틀리는 것과 상관관계가 있다. σepi\sigma_{\text{epi}}가 클 때 켈리의 분자는 분모와 동시에 신뢰할 수 없으므로 사이징 오류가 복합된다. 시장 노이즈에 비해 초선형적으로 페널티를 부과하는 것이 그것의 직접적 표현이다.

def uncertainty_adjusted_position_size(
    pred_mean: float,
    epistemic_std: float,
    aleatoric_std: float,
    max_position: float = 1.0,
    lam: float = 2.0,                   # 인식론적 페널티; validation에서 튜닝
    max_epi_ratio: float = 0.5,         # 이 epi/alea 비율 초과 시 abstain
    base_kelly_fraction: float = 0.25,
) -> float:
    """인식론 분산이 알레아토리보다 더 엄격하게 페널티받는 켈리 사이징."""
    effective_var = aleatoric_std ** 2 + lam * epistemic_std ** 2
    if effective_var < 1e-10:
        return 0.0

    position = (pred_mean / effective_var) * base_kelly_fraction

    epi_ratio = epistemic_std / (aleatoric_std + 1e-8)
    if epi_ratio > max_epi_ratio:
        position *= max(0.0, 1.0 - epi_ratio)

    return float(np.clip(position, -max_position, max_position))

게이트에 주의가 필요하다. 신뢰 임계값 미만에서 포지션을 0으로 하는 것은 여기서 새로운 것이 아니다——컨포멀 기사는 min_edge 임계값이 있는 일반 노-트레이드 필터를 et=μ^/wte_t = |\hat{\mu}| / w_t로 지정 및 코딩하며, 임계값 선택 방법과 0을 스트래들하는 구간의 기하학적 읽기를 포함한다. 그 기계에 대해서는 conformal prediction를 참조하라. 새로운 것은 분모: σepi/σalea\sigma_{\text{epi}} / \sigma_{\text{alea}}에 대한 게이트는 모델이 시장보다 자신의 파라미터에 대해 더 혼란스러울 때 구체적으로 발화한다——전체 불확실성 게이트가 감지할 수 없는 상태다. 왜냐하면 조용하지만 낯선 레짐은 낮은 전체 분산과 끔찍한 인식론 비율을 가질 수 있기 때문이다.

교정: 이것을 위임하라

불확실성 추정은 교정되었을 때만 유용하다: 공칭 95% 구간은 진실을 약 95% 포함해야 한다. 여기서 자체 가우시안 분위수 신뢰성 검사를 굴리지 마라——두꺼운 꼬리 수익 잔차에 대한 모수 구간은 conformal prediction이 존재하는 이유를 회피하는 실패 모드이며, 뒤에 유한 샘플 보증이 있는 작동 evaluate()를 출한다. TFT 포스트도 분위수 헤드에 대해 동일한 점을 만든다.

사후 리스케일링(검증 세트에 피팅된 σ~=ασ+β\tilde{\sigma} = \alpha \sigma + \beta)은 저렴한 수정이며 Adaptive Conformal Inference의 약한 사촌이다. ACI는 온라인 mis커버리지 수준 αt\alpha_t를 장기 커버리지 경계로 유지하며 정적 리스케일이 아니다. ACI가 더 강력한 선택; 선형 리스케일을 선호할 유일한 이유는 ACI의 단일 폭이 그렇지 않은 인식론/알레아토리 비율을 보존한다는 것이다.

게시 전에 측정되어야 할 것

위 방법들은 확립되어 있다. 분할이 트레이딩에서 무언가를 산다는 주장은 그렇지 않으며, 이 블로그는 주장만으로 사이징 규칙을 게시하지 않는다. 바:

1. 데이터세트와 타겟. 계약, 바 크기, 명시적 날짜 범위, 피처 세트, 예측 타겟을 이름으로 명시하라.

2. 분할 그 자체. 전체 예측 분산의 몇 퍼센트가 인식론 vs 알레아토리인지, 그리고 그 비율이 명명된 평온 윈도우와 명명된 변동성 윈도우 사이에서 어떻게 움직이는지. 이것이 머니 차트이며 아직 존재하지 않는다. 반증할 가치가 있는 가설: 비율은 실현 변동성 이전에 스파이크한다. 낯선 것은 난류 이전에 오기 때문이다.

3. 컨포멀 대비 커버리지. 동일 데이터의 게시된 기사에서 온 split-conformal 구간과 비교하여 MC 드롭아웃 구간의 샘플 외 커버리지 측정. 그 헤드 투 헤드는 그 자체로 새로운 결과이며 두 포스트 간의 자연스러운 다리다.

4. λ\lambda는 무언가를 사는가? 검증에서 인식론 페널티를 스윕하고 λ=1\lambda = 1 베이스라인 대비 PnL과 최대 드로다운을 보고하라. 아무것도 사지 않는다면 그렇게 말하라——The Honest Negative는 그 결과에 대한 템플릿이며 게시 가능한 결과다.

5. 추론 비용. 타겟 하드웨어에서 각 TT에 대해 측정됨.

여기서의 평가는 모두 walk-forward optimization 규율 하에 실행된다——λ\lambda는 하이퍼파라미터이며 전체 샘플에서 튜닝된 λ\lambda는 결과가 아니다.

프로덕션을 위한 실용적인 팁

1. 사전 웜업. 변분 추론에서는 랜덤이 아닌 사전 훈련된 결정론적 네트워크에서 변분 평균을 초기화한다. 일반적으로 수렴 시간이 절반이 된다.

2. 분산 붕괴를 감시하라. 학습된 분산 σj\sigma_j는 거의 0으로 드리프트하며 BNN을 조용히 결정론적 네트워크로 되돌릴 수 있다. 훈련 중 평균 σj\sigma_j를 감시하라; 필요하면 KL annealing 추가.

3. 고정 검증 세트가 아닌 롤링 베이시로 재교정하라. 시장은 비정상적이며 한 번 피팅된 교정은 감퇴된다. Walk-forward 규율 하에서 롤링 윈도우로 재훈련하거나 ACI가 모델 부실을 온라인으로 흡수하게 하라——컨포멀 포스트는 재훈련 빈도 트레이드오프를 직접 다룬다.

4. 앙상블 다양성이 중요하다. 다른 시드, 다른 셔플, 선택적으로 멤버마다 다른 하이퍼파라미터. 초기화 다양성은 앙상블 품질의 주요 드라이버이며, 위의 fit() 루프가 선택 사항이 아닌 이유다.

5. 분할을 기록하라. 전체만이 아니라 두 구성 요소 모두를 실현 결과와 함께 저장하라. 이것이 없으면 리뷰에서 유일하게 중요한 질문에 답할 수 없다: 사이저가 익스포저를 줄였을 때, 그것은 시장이 시끄러웠기 때문인가 모델이 길을 잃었기 때문인가——그리고 그것이 맞았는가?

6. 불확실성을 피처로. 롤링 인식론 통계는 그 자체로 드로다운을 예측할 수 있다. 그럴법하며, 측정되지 않았으며, 별도의 포스트에 가치가 있다.

한계와 솔직한 면책

  • 근사 사후는 여전히 근사다. MC 드롭아웃과 VI는 진실 사후의 제한된 보기를 제공한다. 없는 것보다 낫지만 진실은 아니며 어디에도 커버리지 보증이 부착되지 않는다.
  • 교정은 필요할 때에만 나빠진다. 진정으로 새로운 레짐에서 모델은 여전히 mis-calibrated일 수 있다——결정론적 것보다 mis-calibrated되는 경향이 있을 뿐이다. 분포 외 입력에서의 불확실성 추정은 그 자체로 분포 외 출력이다.
  • 알레아토리 분산은 인식론 시그널을 흡수할 수 있다. 이분산 헤드가 충분히 유연하면 모델 불확실성을 데이터 노이즈로 설명하는 것을 학습하며 σepi\sigma_{\text{epi}}를 0쪽으로 붕괴시키고 전체 분해를 조용히 깨뜨린다. 이것이 이 포스트에서 가장 중요한 실패 모드이며 자신을 고발하지 않는다. 레짬 간 비율을 감시하라; 결코 움직이지 않는 비율은 깨진 분해이지 안정적인 시장이 아니다.
  • λ\lambda는 자유 파라미터. 튜닝 가능한 노브를 사이징 규칙에 도입하는 것은 오버핏 사이징 규칙이 구축되는 방법이다. Walk-forward 정당화가 필요하거나 1에 고정되어야 한다.

결론

컨포멀 예측은 이미 이 블로그에 커버리지 보증이 있는 구간 폭을 제공하며 켈리는 이미 사이징 규칙을 제공한다. 둘 다 주지 않는 것은 구간이 넓은지에 대한 답이다. 예측 분산을 인식론과 알레아토리로 분할하면 그것에 답하며, 답은 전체가 그렇듯 행동 가능하다: 시장 노이즈는 보상받는 리스크, 모델 무지는 그렇지 않으며 사이징 분모는 그렇게 말해야 한다.

MC 드롭아웃은 분할을 거의 무료로 만든다——한 줄(inference에서 model.train())이 모든 드롭아웃 네트워크를 근사 베이지안으로 만든다. 딥 앙상블은 MMx 비용으로 더 잘 교정한다. 둘 다 동일한 비대칭 분모 σalea2+λσepi2\sigma^2_{\text{alea}} + \lambda \sigma^2_{\text{epi}}에 공급한다.

λ>1\lambda > 1이 실제로 지불하는지 여부는 이 초안이 아직 답하지 않은 경험적 질문이다. 위에 나열된 측정은 그것을 게시하는 대가다.


참고문헌:

  • Blundell, C., Cornebise, J., Kavukcuoglu, K., & Wierstra, D. (2015). Weight Uncertainty in Neural Networks. ICML.
  • Gal, Y. & Ghahramani, Z. (2016). Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning. ICML.
  • Lakshminarayanan, B., Pritzel, A., & Blundell, C. (2017). Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles. NeurIPS.
  • Kendall, A. & Gal, Y. (2017). What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? NeurIPS.
  • Gibbs, I. & Candes, E. (2021). Adaptive Conformal Inference Under Distribution Shift. NeurIPS.
  • Kelly, J. L. (1956). A New Interpretation of Information Rate. Bell System Technical Journal.
blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

시장에서 앞서 나가세요

뉴스레터를 구독하여 독점적인 AI 트레이딩 통찰력, 시장 분석 및 플랫폼 업데이트를 받아보세요.

귀하의 개인정보를 존중합니다. 언제든지 구독을 취소할 수 있습니다.