Voltar para López de Prado

Revisão de pesquisa · López de Prado · estudo 02

Fractional Differentiation

Reproduzindo o fractional differencing de janela fixa de López de Prado em séries reais de preços de cripto, ações e forex

A prática padrão diferencia uma série de preços à ordem inteira um, toma os retornos, para torná-la stationary. Isso funciona, mas apaga o nível: uma série de retornos é essencialmente não correlacionada com o preço de onde veio, de modo que a memória que um modelo poderia usar desaparece. A solução de López de Prado é diferenciar a uma ordem real, fracionária d ∈ [0, 1], conquistando stationarity enquanto preserva a maior parte da memória. Esta nota reproduz essa ideia em dados reais, primeiro em BTC, depois em uma seção transversal de 505 pares de cripto, em seguida em ações e forex, e relata onde ela se sustenta e onde não. O explorador abaixo permite mover d ao longo da varredura real de BTC no navegador.

fonte

Advances in Financial ML, Cap. 5

López de Prado (2018) · fractional differentiation

Código & motores

github.com/DaruFinance/lopez-de-prado-work-review

the claim

O que diz López de Prado

  • Diferenciar uma série de preços à ordem inteira 1 (tomar retornos) a torna stationary mas apaga o nível, a memória que um modelo preditivo poderia usar desaparece; deixar o preço não diferenciado preserva a memória mas é não stationary e quebra a maior parte do aprendizado.
  • Sua solução: diferenciar a uma ordem real, fracionária d ∈ [0,1]. O operador (1−B)^d preserva a maior parte da memória ao atingir stationarity. A quantidade-chave é o mínimo d* no qual um teste ADF rejeita pela primeira vez a raiz unitária, ele reporta d* tipicamente ~0,3–0,6 em ações/FX, com alta correlação ao nível em d*.

our result

O que encontramos

  • A afirmação sobre memória é avassaladora, não marginal: ao longo de 505 perps da Binance, o d* mediano é 0,15 com correlação mediana ao nível de preço de 0,98 em d*, contra ~0,01 para retornos simples (d=1), a diferenciação inteira destrói ~99% da memória de nível que o FFD preserva. Isso se sustenta de forma idêntica em cripto, ações e forex.
  • Sua cifra de d* ~0,3–0,6 não se reproduz aqui: em uma frequência equiparada de 1 hora, cripto, ações (0,15) e forex (0,10) ficam todos próximos ou abaixo de 0,15, com a leitura individual mais alta em 0,25. Sinalizamos isso com honestidade, parte da diferença é poder do ADF e frequência, não classe de ativo.
  • Este é um estudo de construção de features; ainda não testamos se modelos sobre features de FFD superam modelos sobre retornos fora da amostra.

O resultado em três linhas

~0,98 vs ~0,01

Os retornos destroem a memória

O fractional differencing na ordem recém-stationary mantém ~0,98 de correlação com o nível de preço; os retornos simples mantêm ~0,01. A diferenciação inteira joga fora ~99% da informação de nível por uma stationarity que se poderia ter muito mais barato.

3 mercados · 517 séries

O resultado de memória é universal

O mesmo quadro se sustenta de forma idêntica em 505 perps de cripto, 9 ETFs de ações e 3 pares de forex, todos em 1h: ~0,98–1,00 de memória preservada em d*, ~0,01 em retornos. Esta é a parte do Cap. 5 que sobrevive ao contato com dados reais.

d* ≈ 0,10–0,15

Uma não confirmação honesta

Em 1h a ordem mínima fica bem abaixo dos 0,3–0,6 citados por LdP para ações/FX, e aqui ações/FX não são maiores que cripto. A diferença se explica pela frequência de amostragem e pelo comprimento da série, então a reportamos como uma refutação do nível, não da memória.

Visão geral

Deixar um preço não diferenciado preserva toda a sua memória mas mantém uma raiz unitária, o que quebra a maior parte do aprendizado estatístico. A diferenciação inteira corrige a raiz unitária mas descarta o nível. O fractional differencing fica entre os dois: o operador (1 − B)^d se expande em uma soma ponderada infinita de valores defasados com pesos binomiais que decaem mas nunca chegam exatamente a zero. O FFD de janela fixa trunca esse vetor de pesos em um pequeno limiar, produzindo um filtro causal, retrospectivo, que pode ser stationary preservando a maior parte da memória. A quantidade de interesse é a ordem mínima d*, o menor d no qual um teste ADF rejeita pela primeira vez a raiz unitária.

Mova d você mesmo

O explorador abaixo é alimentado pela varredura real BTCUSDT 1h do estudo. À medida que você eleva d de 0 (o nível bruto) em direção a 1 (retornos simples), a estatística ADF mergulha através de sua linha crítica de 95%, e a correlação com o nível de preço cai junto. As duas curvas são a história toda: a stationarity é barata, mas além do ponto recém-stationary você a paga em memória que não precisava gastar.

Demo: Explorador de fractional differentiation

Mova a ordem de diferenciação d e observe a stationarity conquistada em troca da memória preservada, sobre a varredura real BTCUSDT 1h do estudo. A série torna-se stationary em d* = 0.15 ainda ~99% correlacionada com o nível de preço.

btc_adf_vs_d.csv
d, ordem de diferenciação0.15
0, nível1, retornos
stationary? (ADF vs crit. 95%)
sim, passa
estatística ADF
-3.66
memória preservada (corr c/ nível)
98.7%
janela FFD (barras)
3,901
STATIONARITY, estatística ADFcrit. 95% ≈ -2.862-2-6-10-1400.250.50.751d
MEMÓRIA, corr com nível de preço99%10.750.50.25000.250.50.751d

No ponto ideal d* = 0.15 a série passa pela primeira vez no ADF (recém-stationary) ainda 98.7% correlacionada com o nível de preço, stationarity com perda quase nula de memória.

Fig. 1:BTCUSDT 1h. A estatística ADF (em queda) cruza a linha crítica de 95% em d* = 0,15; a correlação com o nível do log-preço (também mostrada) ainda é 0,987 ali. Uma pequena ordem fracionária basta para tornar stationary mantendo quase toda a memória.

Reprodução, BTC

Para BTCUSDT em 1h a estatística ADF cruza a linha crítica de 95% em d* = 0,15, onde a correlação com o nível do log-preço ainda é 0,987. Essa é exatamente a forma que López de Prado descreve: uma pequena ordem fracionária conquista stationarity enquanto quase toda a memória sobrevive.

Concretamente, a série FFD(d*) é visivelmente stationary, revertendo à média em torno de um nível plano, mas ainda acompanha a estrutura de regimes do preço de onde veio.

Fig. 2:Nível do log-preço do BTC versus sua transformação FFD(d*). A série diferenciada é stationary (oscila em torno de uma média plana) preservando a forma ampla de regimes do nível.
Fig. 3:Ordem mínima d* ao longo de 505 perps de cripto em 1h. A distribuição é estreita e baixa, quase toda a seção transversal torna-se stationary por d = 0,20.

Em escala, 505 pares de cripto

Ao longo de toda a seção transversal de cripto a ordem mínima é notavelmente baixa e estreita: o d* mediano é 0,15 (Q1 0,10, Q3 0,15), o máximo observado é apenas 0,25, e 100% dos pares são stationary em algum d < 1. A memória mediana em d* é 0,981, contra uma correlação absoluta mediana de apenas 0,010 em d = 1.

A fronteira entre memória e stationarity amarra tudo. Por volta de d = 0,20 essencialmente todo par é ADF-stationary, enquanto a correlação mediana com o nível ainda está perto de 0,9 e só colapsa em direção a zero quando d → 1. Os retornos simples ficam na extremidade direita desse colapso, o único gráfico que vale levar consigo.

Fig. 4:A fronteira de memória ao longo da seção transversal de cripto. A stationarity é atingida com d pequeno (quase todos os pares passam por d ≈ 0,20) enquanto a correlação mediana com o nível permanece alta, e só então colapsa em direção a zero quando d → 1 (retornos).

Cripto vs ações vs forex

Os exemplos trabalhados de López de Prado pousam em d* ≈ 0,3–0,6, visivelmente mais alto que a mediana de cripto de 0,15. Para testar se isso é um efeito de mercado ou um artefato de universo e frequência, o pipeline idêntico, mesma grade, mesmo tau, mesma especificação ADF, mesma métrica de memória, foi rodado em 9 ETFs de ações e 3 pares de forex a uma frequência equiparada de 1h.

mercadond* medianoIQR% d*<1mem @ d*|mem| @ d=1
cripto5050,1500,100–0,150100%0,9810,010
ações90,1500,000–0,150100%0,9970,007
forex30,1000,050–0,125100%0,9940,010
Fig. 5:d* por mercado, com a faixa de referência 0,3–0,6 de LdP sombreada. Os três mercados ficam abaixo da faixa em 1h; ações igualam cripto e forex é menor.

Em 1h nem ações nem forex apresentam um d* maior que cripto , ações o igualam em 0,15 e forex é menor, em 0,10. Vários instrumentos já são stationary no nível de log bruto: os produtos de volatilidade VXX e UVXY, o ETF de energia XLE, e o cruzamento EUR/GBP em range. A leitura individual mais alta de toda a extensão é QQQ em 0,25, ainda abaixo do limite inferior de LdP. Com esta metodologia exata e compartilhada, a cifra de 0,3–0,6 não se reproduz para estas séries de ações e forex em 1h.

A história da memória, em contraste, é universal. Em todo mercado o FFD em d* retém ~0,98–1,00 de correlação com o nível do log-preço enquanto os retornos simples retêm ~0,01 em valor absoluto. A afirmação central, que o fractional differencing conquista stationarity com perda quase nula de memória onde a diferenciação inteira joga a memória fora, se sustenta de forma idêntica em cripto, ações e forex.

Fig. 6:Memória preservada em d* (~0,98–1,00) versus memória retida em d=1 (~0,01) nos três mercados. O resultado de memória é a parte do capítulo que claramente sobrevive ao contato com dados reais.

Como ler a diferença de d*

A leitura honesta é que d* é governado mais pela frequência de amostragem e pelo comprimento da série do que pela classe de ativo. O poder do ADF cresce com o comprimento da amostra, e as séries de ações e forex aqui são longas (frequentemente 55k–88k barras), o que enviesa seu d* para baixo; a comparação com os exemplos de LdP também confunde mercado com tamanho de barra, já que seus exemplos não são todos em 1h. O estudo de frequência de cripto no repositório já mostra d* mudando com a frequência. Portanto não afirmamos que ações têm um d* permanentemente baixo, apenas que, a uma frequência equiparada de 1h, os três mercados ficam perto de 0,10–0,25, e que a descoberta durável entre mercados é o resultado de memória, não o nível de d*.

Método

  • Causal o tempo todo: a saída na barra t usa apenas barras em t ou antes, sobre log-preços OHLCV reais, sem séries sintéticas e sem lookahead.
  • FFD de janela fixa com pesos binomiais w_k, truncados no primeiro |w_k| < tau (tau = 1e-5), dando um filtro de largura fixa, retrospectivo. Verificado que d=1 reproduz exatamente as diferenças simples e d=0 é a identidade.
  • Stationarity por um teste ADF (regressão "c", maxlag=1) contra o valor crítico de 95%; d* é a menor ordem da grade cuja estatística ADF cai abaixo desse valor crítico.
  • Memória medida como a correlação de Pearson entre a série FFD e o nível do log-preço no suporte sobreposto, o próprio diagnóstico de LdP.
  • Rodado em escala: uma seção transversal de cripto de 568 pares (505 qualificados) transmitida uma série de cada vez em 32 núcleos, e então o pipeline idêntico aplicado a 9 ETFs de ações da Algoseek e 3 pares de forex a uma frequência equiparada de 1h.

Reprodutibilidade

A biblioteca FFD compartilhada, os scripts de análise e a fonte deste texto estão reunidos no repositório companheiro, lopez-de-prado-work-review (estudo 02). Não há aleatoriedade em nenhum ponto do pipeline: rerodar os dois scripts reproduz cada figura, tabela e número de forma byte-estável. O explorador desta página codifica a varredura de BTC publicada diretamente, então ele reproduz exatamente a cada carregamento.

Citar

Veja também

Esta é uma entrada em uma revisão contínua dos métodos de López de Prado em dados reais. O índice de pesquisa mais amplo está em Pesquisa.