← Voltar aos artigos
July 31, 2026
5 min read

Epistêmico vs Aleatório: Medindo o que um Modelo de Retorno Não Sabe

Epistêmico vs Aleatório: Medindo o que um Modelo de Retorno Não Sabe
#bayesian
#uncertainty
#neural-network
#risk
#position-sizing

Todas as regras de dimensionamento de posição neste blog colapsam a incerteza em um escalar único. Kelly divide pela variância. Previsão conforme divide pela largura do intervalo. Direcionamento de volatilidade divide por uma previsão GARCH. Todas as três estão corretas, e todas as três descartam uma distinção que importa para trading: a diferença entre um mercado ruidoso e um modelo ignorante.

Não são o mesmo risco. O ruído de mercado é precificado — é o que você é compensado por suportar. A ignorância do modelo não é precificada, não é compensada, e é precisamente o estado em que sua estimativa de vantagem é menos confiável. Uma regra de dimensionamento que os penaliza igualmente deixa algo na mesa.

Este post é sobre tornar essa divisão mensurável. Concretamente:

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

Coloque isso no denominador de Kelly em vez da variância total. O resto do artigo é sobre como estimar os dois componentes (MC Dropout, deep ensembles), e como a divisão se parece em dados reais.

A Tese: Duas Incertezas, Duas Respostas

Epistêmico Aleatório
Fonte Dados limitados / modelo Ruído inerente nos dados
Redutível? Sim (mais dados ajudam) Não
Ação de trading Reduzir posição ou abster-se Alargar stops, reduzir alavancagem
Sinal "Eu nunca vi este regime" "Este mercado está ruidoso agora"

A assimetria na linha "ação de trading" é todo o argumento. Alta variância aleatória é um desconhecido conhecido: você pode dimensionar para ela, proteger, e esperar ser pago um prémio de risco por segurá-la. Alta variância epistêmica é um desconhecido desconhecido: o modelo está extrapolando, sua estimativa de média μ\mu é tão suspeita quanto sua estimativa de variância, e não há prémio anexado a estar errado sobre seus próprios parâmetros.

Um modelo que con funde os dois ou negocia excessivamente em regimes não familiares (ignorando incerteza epistêmica) ou negocia de menos em regimes familiares mas ruidosos (superpenalizando incerteza aleatória). Kelly padrão, aplicado a σtotal2\sigma^2_{\text{total}}, faz ambos dependendo de qual componente acontece de dominar.

A Decomposição

Incerteza epistêmica vem de incerteza sobre os parâmetros do modelo θ\theta. Em vez de um único θ\theta^*(como em máxima verossimilhança), mantemos uma distribuição p(θD)p(\theta \mid \mathcal{D}) e integramos:

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

A dispersão induzida pela integração sobre θ\theta é epistêmica. Ela encolhe à medida que D\mathcal{D} cresce para cobrir a região de entrada.

Incerteza aleatória é o ruído condicional do processo gerador de dados. Em uma rede neural, é modelada por uma segunda cabeça de saída que emite variância dependente de entrada:

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

Essa cabeça heteroscedástica está estimando o mesmo objeto que o GARD estima classicamente — variância condicional dependente de estado que é alta durante a noite e baixa nos horários de pico. Se você quiser a empiria desse objeto em cripto, GARCH(1,1) for crypto volatility cobre adequadamente, incluindo por que a previsão condicional em tempo real (não a variância amostral incondicional) pertence ao denominador de Kelly. A cabeça NN é apenas um estimador diferente do mesmo objeto, ajustado em conjunto com a média.

O que GARD não pode dar é o outro termo. É para isso que serve o resto deste post.

Onde Isto Se Senta em Relação ao Que Já Foi Publicado

Dois posts anteriores cobrem terreno adjacente e valem a pena ser lidos primeiro, pois este post deliberadamente não os repete:

  • Previsão conforme para dimensionamento de posição consciente do risco fornece intervalos com garantia de cobertura de amostra finita, sem suposição de distribuição, mais dimensionamento inverso da largura e filtro no-trade de rácio de borda. É a ferramenta mais forte se tudo que você quer é um intervalo corretamente dimensionado.
  • Temporal Fusion Transformers emitem quantis diretamente e já alertam que quantis de perda de pinball não são automaticamente calibrados fora da amostra.

A troca é limpa. Conforme fornece garantia mas um número — a largura do intervalo não é decomponível, então não pode te dizer por que ela alargou. Métodos Bayesianos fornecem decomposição mas nenhuma garantia — os intervalos de MC Dropout são tão bons quanto a posterior aproximada. Este artigo é sobre comprar a decomposição; você provavelmente deve manter conforme no topo dela para a cobertura.

Método 1: Inferência Variacional (Bayes por Backprop)

Uma posterior de pesos Bayesianos densa é comprimida em uma aproximação variacional tratável antes de produzir distribuição preditiva de retorno

Uma rede neural Bayesiana coloca um prior p(θ)p(\theta) sobre os pesos e busca a posterior p(θD)p(Dθ)p(θ)p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta) p(\theta). O normalizador requer integração sobre cada configuração de pesos, o que é intratável para qualquer coisa com mais do que um punhado de parâmetros.

Inferência variacional substitui a posterior intratável por uma família tratável qϕ(θ)q_\phi(\theta) — tipicamente um Gauss fatorado qϕ(θ)=jN(θj;μj,σj2)q_\phi(\theta) = \prod_j \mathcal{N}(\theta_j; \mu_j, \sigma_j^2) — e minimiza

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

Como isso envolve a posterior desconhecida, em vez disso maximizamos o Limite Inferior de Evidência:

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)

O primeiro termo empurra qϕq_\phi para explicar os dados; o segundo o mantém perto do prior. Bayes by Backprop (Blundell et al., 2015) torna isso diferenciável com o truço de reparametrização: amostra ϵN(0,I)\epsilon \sim \mathcal{N}(0, I), define θ=μ+σϵ\theta = \mu + \sigma \odot \epsilon.

Na prática VI dobra a contagem de parâmetros, aumenta a variância do gradiente (cada passe para frente usa pesos diferentes), e a suposição de campo médio ignora correlações de pesos, o que tende a subestimar incerteza epistêmica. Para um stack de trading onde você já tem um modelo determinístico treinado, os dois métodos mais baratos abaixo são geralmente o melhor ponto de entrada.

Método 2: MC Dropout

Passes para frente com dropout ativado repetidamente se abrem em previsões distintas cujo desacordo forma incerteza epistêmica

Gal e Ghahramani (2016) mostraram que uma rede treinada com dropout e avaliada com dropout ainda ativo no tempo de teste é um procedimento de inferência variacional aproximada em um processo Gaussiano profundo. O dropout já induz uma distribuição sobre sub-redes; mantê-lo ligado durante inferência e executar TT passes para frente amostra dessa posterior implícita.

Isto não existe em nenhum outro lugar deste blog. O código publicado aqui usa dropout apenas como regularizador no tempo de treinamento (modelagem de spread, TFT em dropout=0.1–0.3). Mantê-lo ligado na inferência é uma mudança de uma linha com um significado totalmente diferente.

Estatísticas Preditivas

Dadas TT passes para frente estocásticos produzindo {y^t}t=1T\{\hat{y}_t\}_{t=1}^{T} e variâncias por passe σ^t2(x)\hat{\sigma}_t^2(x):

Média preditiva:

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

Epistêmico (desacordo entre passes):

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

Aleatório (média do ruído predito):

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

A decomposição é exatamente a lei da variância total: variância da média condicional mais média da variância condicional. A variância preditiva total é sua soma.

Implementação PyTorch

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

class MCDropoutNet(nn.Module):
    """
    Rede de predição de retorno com MC Dropout para estimativa de incerteza.
    Produz tanto média predita quanto log-variância (aleatória).
    """
    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)        # retorno predito
        self.head_logvar = nn.Linear(hidden_dim, 1)    # log(variância aleatória)

    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):
    """Log-verossimilhança negativa para um Gauss com variância dependente de entrada aprendida."""
    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):
    """
    Inferência MC Dropout: mantenha dropout LIGADO, colete T passes para frente,
    decompõe variância preditiva em partes epistêmica e aleatória.
    """
    model.train()  # NOT eval() -- isto mantém dropout ativo
    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)              # Var sobre passes
    aleatoric_var = log_vars.exp().mean(dim=0)  # E sobre passes

    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),
    }

O treinamento usa a perda heteroscedástica, que é o que dá significado à cabeça de variância. Note a estrutura auto-reguladora: o termo 0.5 * precision * (target - mu)**2 quer variância pequena, o termo 0.5 * log_var pune isso, e o ponto de equilíbrio é o nível de ruído condicional.

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()

O gotcha que mata silenciosamente o método: chamar model.eval() dentro de mc_predict. Isso desabilita o dropout, cada passe retorna o valor idêntico, epistemic_var colapsa para exatamente zero, e sua regra de dimensionamento reverte silenciosamente para Kelly simples na variância aleatória. Falha sem erro. Assert que epistemic_var > 0 em seu caminho de inferência.

Escolhendo o Número de Passes para Frente

  • T=30T = 30: limite inferior razoável para uma média estável
  • T=100T = 100: padrão utilizável para média e variância
  • T=500+T = 500{+}: retornos decrescentes a menos que você precise de quantis de cauda

Método 3: Deep Ensembles

Cinco redes neurais treinadas independentemente combinam suas previsões enquanto seu desacordo forma um halo epistêmico

Lakshminarayanan et al. (2017) treinam MM redes independentes de diferentes inicializações aleatórias e agregam. Embora não formalmente Bayesianas, deep ensembles consistentemente superam métodos mais principiados em benchmarks de calibração de incerteza.

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

O desacordo entre membros é a estimativa epistêmica. Ensembles aparecem em outros lugares neste blog como dispositivos de agregação — detecção de anomalia, detecção de regime HMM, bootstrap de bloco EnbPI conforme — mas nunca como estimador de incerteza via dispersão entre membros. Esse é o uso aqui.

Implementação de Ensemble

A diversidade vem de treinamento independente, não da construção de MM objetos. Um ensemble de membros não treinados ou treinados identicamente retorna ruído ou variância epistêmica zero:

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 diferente por membro
            self.models.append(
                MCDropoutNet(input_dim, hidden_dim, dropout_p=0.0)
            )

    def fit(self, train_loader, epochs: int = 200, lr: float = 1e-3):
        """Cada membro é treinado independentemente. É aqui que vem a diversidade --
        init diferente, ordem de embaralhamento diferente. Pular isso
        resulta em epistemic_var == 0 (membros idênticos) ou ruído puro (não treinado)."""
        for seed, model in enumerate(self.models):
            torch.manual_seed(1000 + seed)   # stream de embaralhamento/dropout diferente
            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()                     # correto aqui: sem amostragem dropout
            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)   # spread ATRAVÉS membros
        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(),
        }

Note que model.eval() está correto em DeepEnsemble.predict e errado em mc_predict. A fonte estocástica difere: ensembles obtêm de treinamento independente, MC Dropout obtém de máscaras dropout ao vivo.

Trade-offs: MC Dropout vs Deep Ensembles

MC Dropout Deep Ensembles
Custo de treinamento 1x (modelo único) MMx (MM modelos)
Custo de inferência TT passes para frente MM passes para frente
Memória 1x parâmetros MMx parâmetros
Qualidade de incerteza Tende a subestimar epistêmico Melhor calibrado geralmente
Facilidade de implementação Trivial (trocar bandeira) Trivial (treinar MM modelos)
Paralelismo Passes sequenciais (mesmo modelo) Embarassadamente paralelo

Um híbrido pragmático: treine um ensemble pequeno (M=35M = 3{-}5) onde cada membro também usa MC Dropout, capturando tanto desacordo inter-modelo quanto estocasticidade intra-modelo.

O Pagamento: Dimensionamento Assimétrico

Ruído aleatório alarga o envelope de risco enquanto incerteza epistêmica fecha a abertura de dimensionamento de posição e cria uma zona de abstenção

Aqui está a contribuição real. Kelly Gaussiano é f=μ/σ2f^* = \mu / \sigma^2; a derivação, a parábola de crescimento, a tabela de probabilidade de drawdown e as quatro razões para executar Kelly fracionário em vez de completo estão todas em The Kelly Criterion for Strategies, e não são repetidas aqui. Tome f=μ/σ2f^* = \mu / \sigma^2 em uma fração de um quarto de Kelly como dada.

A modificação é o denominador. Em vez de variância preditiva total:

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

O argumento para λ>1\lambda > 1: variância aleatória é o ruído do mercado, é precificada, e segurá-la é como uma estratégia ganha. Variância epistêmica é sua ignorância — não carrega prémio, e pior, está correlacionada com sua estimativa μ\mu estar errada. Quando σepi\sigma_{\text{epi}} é grande, o numerador de Kelly não é confiável ao mesmo tempo que o denominador, então o erro de dimensionamento se compõe. Penalizá-lo superlinearmente em relação ao ruído de mercado é a expressão direta disso.

def uncertainty_adjusted_position_size(
    pred_mean: float,
    epistemic_std: float,
    aleatoric_std: float,
    max_position: float = 1.0,
    lam: float = 2.0,                   # penalidade epistêmica; ajuste na validação
    max_epi_ratio: float = 0.5,         # abster-se acima desta razão epi/alea
    base_kelly_fraction: float = 0.25,
) -> float:
    """Dimensionamento Kelly onde variância epistêmica é penalizada mais duramente que a aleatória."""
    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))

A porta merece uma nota. Zerar posições abaixo de um limiar de confiança não é novo aqui — o post conforme especifica e codifica o filtro geral no-trade como et=μ^/wte_t = |\hat{\mu}| / w_t com um limite min_edge, incluindo como escolher o limite e a leitura geométrica de um intervalo que cruza zero. Veja conformal prediction para essa maquinaria. O que é novo é o denominador: portar em σepi/σalea\sigma_{\text{epi}} / \sigma_{\text{alea}} dispara especificamente quando o modelo está mais confuso sobre seus próprios parâmetros do que o mercado está ruidoso — um estado que a portaria de incerteza total não pode detectar, porque um regime calmo mas não familiar pode ter baixa variância total e uma razão epistêmica terrível.

Calibração: Delegue Isso

Uma estimativa de incerteza só é útil se calibrada: um intervalo nominal de 95% deve conter a verdade ~95% das vezes. Não role sua própria verificação de confiabilidade de quantil Gaussiano aqui — um intervalo paramétrico em resíduos de retorno com cauda grossa é exatamente o modo de falha que previsão conforme existe para evitar, e ele envia um evaluate() funcionando que relata cobertura alvo versus empírica com uma garantia de amostra finita atrás dele. O post TFT faz o mesmo ponto para cabeças de quantil.

Reescalonamento pós-hoc (σ~=ασ+β\tilde{\sigma} = \alpha \sigma + \beta ajustado em um conjunto de validação) é a correção barata, e é o primo mais fraco de Inferência Conforme Adaptativa, que mantém um nível de miscobertura online αt\alpha_t com um limite de cobertura de longo prazo em vez de um redimensionamento estático. ACI é a opção mais forte; a única razão para preferir redimensionamento linear é que ele preserva a razão epistêmica/aleatória, o que a largura única do ACI não faz.

O Que Precisa Ser Medido Antes Disso Publicar

Os métodos acima são estabelecidos. A alegação de que a divisão compra algo em trading não é, e este blog não publica regras de dimensionamento baseadas apenas em argumento. A barra:

**1. Conjunto de dados e alvo. ** Nomeie o instrumento, tamanho da barra, intervalo de datas explícito, conjunto de features e alvo de predição.

**2. A divisão em si. ** Que fração da variância preditiva total é epistêmica versus aleatória, e como essa razão se move entre uma janela calma nomeada e uma janela volátil nomeada. Este é o gráfico de dinheiro e ainda não existe. A hipótese que vale a pena falsificar: a razão dispara antes da volatilidade realizada, porque o desconhecido precede a turbulência.

**3. Cobertura versus conforme. ** Cobertura fora da amostra medida de intervalos MC Dropout contra nominal, comparada com intervalos split-conforme do artigo publicado nos mesmos dados. Esse head-to-head é em si um novo resultado e a ponte natural entre os dois posts.

**4. λ\lambda compra algo? ** Varra a penalidade epistêmica na validação e relata PnL e drawdown máximo contra a linha de base λ=1\lambda = 1. Se não comprar nada, diga — The Honest Negative é o modelo para esse resultado e é um resultado publicável.

**5. Custo de inferência. ** Medido, no hardware alvo, em cada TT.

Qualquer avaliação aqui roda sob disciplina walk-forward optimizationλ\lambda é um hiperparâmetro, e um λ\lambda ajustado na amostra completa não é um resultado.

Dicas Práticas para Produção

**1. Aqueça o prior. ** Com inferência variacional, inicialize a média variacional de uma rede determinística pré-treinada em vez de aleatoriamente. Tipicamente reduz o tempo de convergência pela metade.

**2. Observe colapso de variância. ** Variâncias aprendidas σj\sigma_j podem derivar para quase zero, revertendo silenciosamente o BNN para uma rede determinística. Monitore a média σj\sigma_j durante o treinamento; adicione annealing KL se necessário.

**3. Recalibre em base rolling, não um conjunto de validação fixo. ** Mercados são não estacionários e uma calibração ajustada uma vez degrada. Retreine em uma janela rolling sob disciplina walk-forward, ou deixe ACI absorver estagnação do modelo online — o post conforme cobre o trade-off de frequência de retreinamento diretamente.

**4. Diversidade de ensemble importa. ** Sementes diferentes, embaralhamentos diferentes, opcionalmente hiperparâmetros diferentes por membro. Diversidade de inicialização é o condutor principal da qualidade do ensemble, é por isso que o loop fit() acima não é opcional.

**5. Registre a decomposição, não apenas o total. ** Armazene ambos os componentes junto com resultados realizados. Sem isso você não pode responder a única pergunta que importa na revisão: quando o dimensionador cortou exposição, foi porque o mercado estava ruidoso ou porque o modelo estava perdido — e estava certo?

**6. Incerteza como feature. ** Estatísticas epistêmicas rolling podem elas mesmas ser preditivas de drawdowns. Plausível, não medido, e vale um post separado.

Limitações e Advertências Honestas

  • **Posteriores aproximadas ainda são aproximadas. ** MC Dropout e VI fornecem uma visão limitada da posterior verdadeira. Melhor que nada, não verdade absoluta, e nenhuma garantia de cobertura está anexada a nenhum.
  • **Calibração degrada exatamente quando você precisa. ** Em um regime verdadeiramente novo o modelo ainda pode estar mal calibrado — apenas tende a ser menos mal calibrado do que um determinístico. Estimativas de incerteza de uma entrada fora da distribuição são elas mesmas saídas fora da distribuição.
  • **Variância aleatória pode absorver sinal epistêmico. ** Se a cabeça heteroscedástica for flexível o suficiente, ela aprende a explicar incerteza do modelo como ruído de dados, colapsando σepi\sigma_{\text{epi}} em direção a zero e derrotando silenciosamente toda a decomposição. Este é o modo de falha mais importante neste post e ele não se anuncia. Monitore a razão entre regimes; uma razão que nunca se move é uma decomposição quebrada, não um mercado estável.
  • **λ\lambda é um parâmetro livre. ** Introduzir um botão ajustável em uma regra de dimensionamento é como regras de dimensionamento superfit são construídas. Precisa de justificativa walk-forward ou precisa ser fixado em 1.

Conclusão

Previsão conforme já fornece a este blog larguras de intervalo com garantia de cobertura, e Kelly já fornece uma regra de dimensionamento. O que nenhum fornece é uma resposta ao por que o intervalo é largo. Dividir a variância preditiva em partes epistêmica e aleatória responde a isso, e a resposta é acionável de uma forma que o total não é: ruído de mercado é risco compensado, ignorância de modelo não é, e o denominador de dimensionamento deve dizer isso.

MC Dropout torna a divisão quase gratuita — uma linha(model.train() na inferência) transforma qualquer rede dropout em um Bayesiano aproximado. Deep ensembles custam MMx e calibram melhor. Ambos alimentam o mesmo denominador assimétrico σalea2+λσepi2\sigma^2_{\text{alea}} + \lambda \sigma^2_{\text{epi}}.

Se λ>1\lambda > 1 realmente paga é uma questão empírica que este rascunho ainda não responde. As medições listadas acima são o preço de publicá-lo.


Referências:

  • 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

Fique à frente do mercado

Assine nossa newsletter para insights exclusivos sobre trading com IA, análises de mercado e atualizações da plataforma.

Respeitamos sua privacidade. Cancele a inscrição a qualquer momento.