σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Roteiro de scikit-learn›Módulo 3 · Avaliação honesta›Tópico 3.4·~1 hAvançado

Validação cruzada com purga e embargo

Posição no roteiroMódulo 3 de 4 · Tópico 4 de 6
3.4 Validação cruzada com purga e embargo
—Nota do lab— / 100XP total—Sequência—

Validação cruzada que respeita o relógio

A validação cruzada reaproveita os dados: corta-os em dobras, testa numa dobra e treina nas demais. Para linhas independentes isso funciona, mas os rótulos financeiros se sobrepõem no tempo. Se o rótulo da linha jjj é o retorno de jjj a j+Hj+Hj+H, sua janela é [j,j+H][j,j+H][j,j+H]. Uma dobra de teste que cobre as linhas aaa a b−1b-1b−1 tem rótulos que cobrem [a,b−1+H][a,b-1+H][a,b−1+H]. Toda linha de treino cuja janela toque esse intervalo, isto é a−H≤j≤b−1+Ha-H\le j\le b-1+Ha−H≤j≤b−1+H, compartilha retornos com os rótulos de teste. Manter essas linhas deixa o modelo ver parte da resposta.

[j, j+H]∩[a, b−1+H]≠∅  ⟺  a−H≤j≤b−1+H⟹a−H≤j≤b−1+H+e[j,\,j+H]\cap[a,\,b-1+H]\neq\varnothing\iff a-H\le j\le b-1+H\qquad\Longrightarrow\qquad a-H\le j\le b-1+H+e[j,j+H]∩[a,b−1+H]=∅⟺a−H≤j≤b−1+H⟹a−H≤j≤b−1+H+e(1)

A purga remove as linhas de treino que se sobrepõem. O embargo remove mais um trecho de eee linhas depois da dobra de teste, porque os retornos são autocorrelacionados e a volatilidade se agrupa, então as primeiras linhas após um bloco de teste ainda carregam informação sobre ele. Num esquema walk-forward o treino vem só antes do teste, e a mesma ideia vira uma folga: treinar nas linhas até a−H−1a-H-1a−H−1, de modo que a folga é HHH (mais eee). O TimeSeriesSplit do scikit-learn tem um argumento gap para isso. No painel mensal de ações com H=3H=3H=3, o coeficiente de informação walk-forward é 0,03260{,}03260,0326 sem embargo e 0,03270{,}03270,0327 com 333 meses de embargo: a limpeza muda pouco porque a sobreposição é curta, mas não dá para saber sem fazê-la.

Contar as linhasTome n=100n=100n=100 linhas, um horizonte de rótulo H=5H=5H=5, uma dobra de teste [40,60)[40,60)[40,60) e um embargo e=2e=2e=2. Antes da dobra, as linhas 353535 a 393939 se sobrepõem aos seus rótulos: 555 linhas. Depois dela, as linhas 606060 a 666666 (até b−1+H+e=66b-1+H+e=66b−1+H+e=66) são removidas: 777 linhas. A dobra mantém 100−20−12=68100-20-12=68100−20−12=68 linhas de treino. Numa versão walk-forward com a mesma dobra de teste, as linhas de treino param em 343434, então há 353535, que é o que o TimeSeriesSplit do scikit-learn devolve com folga de 555.
  • Purgar e depois embargar: remover as linhas de treino cujos rótulos tocam os do teste e mais algumas depois do teste.
  • Uma folga no walk-forward: treinar só em linhas pelo menos HHH antes do teste.
  • Faça mesmo que mude pouco: uma avaliação limpa custa algumas linhas, um vazamento pode custar uma estratégia.

Lab: o que é avaliado

  • Linhas purgadas antes da dobra10 pts
  • Linhas purgadas depois da dobra15 pts
  • O tamanho de treino que resta15 pts
  • Uma dobra walk-forward com folga10 pts
  • Quais linhas são purgadas10 pts
  • Uma divisão purgada10 pts
  • Associar o vocabulário15 pts
  • Por que também um embargo15 pts
0/ 8 respondidas
Tarefas
1Resposta numérica10 ptsSem resposta

O rótulo da linha jjj cobre [j,j+H][j,j+H][j,j+H] com H=5H=5H=5 e a dobra de teste são as linhas 404040 a 595959. As linhas de treino j≥a−H=35j\ge a-H=35j≥a−H=35 antes da dobra se sobrepõem aos seus rótulos. Quantas linhas de 353535 a 393939 são purgadas?

k=k =k=aceito: ± 0.01
2Resposta numérica15 ptsSem resposta

Depois da dobra (b=60b=60b=60), as linhas até b−1+H+eb-1+H+eb−1+H+e são removidas com H=5H=5H=5 e um embargo e=2e=2e=2. Quantas linhas de 606060 a b−1+H+eb-1+H+eb−1+H+e são removidas?

k=k =k=aceito: ± 0.01
3Resposta numérica15 ptsSem resposta

Há 100100100 linhas, uma dobra de teste de 202020 linhas, 555 linhas purgadas antes e 777 depois. Quantas linhas de treino restam?

n=n =n=aceito: ± 0.01
4Resposta numérica10 ptsSem resposta

Uma dobra walk-forward testa as linhas 404040 a 595959 e treina só nas linhas até a−H−1a-H-1a−H−1, com H=5H=5H=5 (folga de 555). Quantas linhas de treino ela tem, contando da linha 000?

n=n =n=aceito: ± 0.01
5Escolha10 ptsSem resposta

Na validação cruzada com purga, quais linhas de treino são descartadas?

6Ordenar os passos10 ptsSem resposta

Coloque em ordem os passos para construir uma dobra purgada.

Arraste para reordenar, ou foque um item, Espaço para levantá-lo, setas para movê-lo e Espaço para soltá-lo.

  1. 1Remover as linhas de treino cujas janelas tocam esse intervalo, mais o embargo
  2. 2Escolher as linhas de teste a a b - 1
  3. 3Ajustar nas linhas de treino restantes e pontuar as linhas de teste
  4. 4Calcular o intervalo de janelas de rótulo que as linhas de teste cobrem
7Associar15 ptsSem resposta

Associe cada termo ao seu significado.

Escolha o par de cada item da esquerda.

Horizonte de rótulo H
Purga
Embargo
Folga no TimeSeriesSplit
8Explicar com palavras15 ptsSem resposta

A purga já descarta as linhas de treino cujos rótulos se sobrepõem aos do teste. Em uma ou duas frases, explique por que se acrescenta ainda um embargo depois da dobra de teste.

Modo matemáticaEntrada por teclado ou LaTeXTarefa 1 de 8 · Ctrl ⏎ para verificar

Entre para executar o seu código.

Todas as aulas são gratuitas para ler. Crie uma conta ou entre para executar código, rodar os testes e enviar este lab.

  • IDE no navegador com terminal bash — nada para instalar
  • Correção instantânea, XP e o seu lugar no roteiro
Criar uma contaEntrar
OU
Continuar com o GitHub