A Lei de Atribución de Quant: Se o PnL post-change está arriba, é o cambio; Se o PnL post-change está abaixo, é o mercado. A Lei de Atribución de Quant: Se o PnL post-change está arriba, é o cambio; Se o PnL post-change está abaixo, é o mercado. Traballo en negociación cuantitativa e constrúo ambientes de investigación e sistemas de negociación totalmente automatizados que me axudan a pasar dos datos de mercado ás estratexias de negociación de produción á análise de rendemento.Un dos requisitos clave de tales sistemas é permitirme probar rapidamente as miñas ideas e iterar rápido para mellorar o rendemento comercial xeral. É unha métrica moi obvia para dicir se estou a facer mellor que antes ou non. PnL Se algunha vez executou unha estratexia de negociación en directo, coñecerá este ritual diario: abrir taboleiros para comprobar enchufes, latencias, inventario e, inevitablemente, pechar en PnL. Este gráfico é seductor xa que é o taboleiro final que resume o éxito do negocio. Os mercados son non estacionarios, clúster de recheos, réximes de volatilidade flip, cambios de microstructure e a distribución dos resultados é de cola grosa. fool yourself Este artigo dá a vista sobre como substituír PnL-chasing con - entón o seu ciclo de iteración recibe máis sinal por unidade de tempo. practical statistical hypothesis testing Por que PnL é unha métrica ruidosa O PNV é unha de moitos compoñentes aleatorios: agregado O seu día a día PnL dispersión pode dobrar nun día de noticias, mesmo se o seu sistema é inalterado. O tempo de microsegundo, a posición de cola, os niveis de tarifa, a interacción oculta vs. iluminada - todo inxecta aleatoriedade nos resultados comerciais. Un par de vitorias iniciais compóñense en maior exposición nocional máis tarde (ou viceversa), facendo que a curva pareza convincente sen cambiar o resultado medio subxacente por comercio. Cambios en capas de inventario, anchuras de cita, cruzamento interno ou enrutamento poden mover PnL en direccións opostas e cancelar ou amplificar uns aos outros. PnL é un gran obxectivo para rastrexar o negocio, pero non necesariamente unha métrica adecuada para aceptar / rexeitar cambios de investigación en fiestras curtas. O que nós Quere saber do do Cando enviamos un cambio (por exemplo, unha nova característica no sinal, unha lóxica de citas diferente, unha regra de execución diferente), queremos responder: É probable que a mellora observada persista, ou é algo que vimos por casualidade? Is the observed improvement likely to persist, or is it something we saw by chance? Isto lévanos ao mundo da proba de hipóteses estatísticas, onde cuestionamos a significación estatística dos resultados observados. Esa probabilidade é a Os valores de p pequenos significan "iso sería raro se non houbese efecto real".Os valores de p grandes significan "o que vistes é común baixo ruído". Under a world where the change to the true mean outcome, how often would we see a difference at least as large as what we observed? does nothing p-value Non fai nada Un exemplo práctico: dúas estratexias Diferentes pero non ollar ollar Imos finxir que enviamos un cambio e recibimos algunhas operacións nunha estratexia antes e despois do cambio (xa sexa a partir de backtest ou a partir de negociación en directo). Estratexia A: antes do cambio Estratexia B: despois do cambio Abaixo eu xerou dúas series de PnL sintéticas por comercio. —exactamente o tipo de imaxe que tenta os equipos a declarar vitoria. Pero podemos realmente confiar no que estamos vendo e facer conclusións baseadas nel? Despois de todo, non é PnL o obxectivo final dunha estratexia de negociación? imos probar se o PnL medio por comercio realmente difire executando unha proba estatística común a continuación. diverge visibly O código que usei para producir as parcelas e executar unha proba estatística está a continuación: import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats import seaborn as sns sns.set(); rng = np.random.default_rng(49) # generate PnLs per trade n = 1200 pnl_A = rng.normal(loc=0.0, scale=1.0, size=n) pnl_B = rng.normal(loc=0.0, scale=1.0, size=n) # generate cumulative PnLs cum_A = pnl_A.cumsum() cum_B = pnl_B.cumsum() # run a statistical test t_stat, p_value = stats.ttest_ind(pnl_A, pnl_B, equal_var=False) print(f"mean_A={pnl_A.mean():.4f}, mean_B={pnl_B.mean():.4f}") print(f"Welch t-statistic={t_stat:.3f}, p-value={p_value:.3f}") plt.figure(figsize=(12,7)) plt.plot(np.arange(1, n+1), cum_A, label="Strategy A") plt.plot(np.arange(1, n+1), cum_B, label="Strategy B") plt.ylabel("Cumulative PnL", fontsize=15); plt.xlabel("Trade #", fontsize=15); plt.legend(["Cumulative PnL — Strategy A", "Cumulative PnL — Strategy B"], fontsize=15) plt.tight_layout(); plt.savefig("cumulative_pnl_A_vs_B.png", dpi=160); plt.show(); Velaquí os números que saen: mean_A=0.0611, mean_B=0.0037 Welch t-statistic=1.380, p-value=0.168 Vemos as dúas saídas estándar dunha proba estatística -un t-estadístico e un valor p. Vou contar máis sobre eles máis abaixo na historia. para dicir que o PnL medio por comercio difire. Con todo, as dúas liñas cumulativas parecen bastante distantes. there is not enough evidence O que acaba de pasar? (teste de hipótese desmistificante) Persoalmente, non me gustou moito este enfoque a primeira vez que estaba aprendendo sobre a proba de hipóteses estatísticas, porque a maioría dos tutoriais non explican a idea detrás dela e só permiten memorizar unha tonelada de cousas. Aínda que podería traballar con ela e calcular algúns resultados seguindo cegamente o algoritmo de como facer e mirando as cousas en táboas masivas, o momento en que aprendín os mecanismos para derivalo e de onde todo realmente vén foi un gran alivio para min. 1) A pregunta que estamos a facer Hipótese nula (H0): o verdadeiro PnL medio por comercio é o mesmo antes e despois do cambio. Alternativa (H1): Diferéncianse (dúas caras), ou unha é máis grande (unilateral), dependendo da súa pregunta. 2) As estatísticas que calculamos No seu núcleo, o que é: t-statistic diferenza na mostra significa dividida polo erro estándar desa diferenza. diferenza na mostra significa dividida polo erro estándar desa diferenza. Se as dúas mostras significan que están lonxe , o t-stat faise grande en magnitude. Se están preto en relación ao ruído, o t-stat é pequeno. sobre o ruído que teñen 3) Onde o valor p vén de En H0 (non hai diferenza real), a t-estadística segue unha distribución coñecida (a con algúns graos de liberdade). É simplemente: t-distribution p-value a probabilidade, baixo H0, de observar un t-stat polo menos tan extremo (valor grande dun t-stat) como o que obtivo. the probability, under H₀, of observing a t-stat at least as extreme (large value of a t-stat) as the one you got. Iso é todo aquelas táboas (que pode ter enfrontado en diferentes guías de proba de hipóteses) están a facer- Pequeno valor p significa que a diferenza observada sería rara se non houbese efecto real. looking up a quantile 4) Como ler os números reais producidos polo código Python anterior Velaquí o que vos contan estes números: t ≈ 1.380 di: a diferenza observada na media per-trade PnL entre A e B é 1.380 erros estándar lonxe de cero. p ≈ 0.168 (dous lados) di: se realmente non houbese diferenza en medios, verías unha diferenza polo menos tan grande ao redor do 16-17% do tempo por casualidade. 5) Por que os mapas nos enganaron PnL cumulativo é a Ao redor da media subxacente. Con miles de comercios, camiños aleatorios regularmente separados por cantidades oculares - mesmo se os medios son idénticos. Os nosos cerebros están axustados para detectar inclinacións e separacións, pero non demasiado para integrar a variación correctamente. A proba t obriga a pesar a diferenza media . random walk against the per-trade dispersion 6) Que tería sido “significativo” aquí? Practicamente falando, verías o valor p en 0,05 se o absoluto de t-estadística é 1,96 (só 5% dos posibles valores t-estadísticos están máis aló diso). Mantendo a varianza e a estrutura do tamaño da mostra a mesma, necesitarías aproximadamente un 42% de diferenza media maior (porque 1.96 / 1.38 ≈ 1.42) para alcanzar a barra bidireccional do 5%.Equivalentemente, se o efecto real permanecese o mesmo, necesitarías aproximadamente 2x máis datos por brazo (desde (1.96 / 1.38)^2 ≈ 2.0) para empurrar t-estadística sobre 1.96. “Pero PnL é o que paga as facturas”. Non estamos a despedir a PnL. : separating roles PnL di se o negocio como un todo está funcionando. As probas de hipótese dinche se este cambio específico é probable que axude fóra da mostra que acaba de ver. Cando os dous discrepan, aprendeu algo: quizais o ambiente foi inusual favorable, quizais un axuste de ruta amplificou a exposición, quizais enviou múltiples cambios. O efecto . Incremento Modelo de implementación que recomendo (iteración rápida sen autoengano) Per-trade PnL é bo, en estratexias de alta frecuencia / creación de mercado é común usar agregacións como por intervalo PnL (por exemplo, 1 minuto, 5 minutos) para reflectir inventario, taxa e agregación de risco - e para reducir a correlación serial. For a mean-effect question, Welch’s t-test is a good default. If tails are very heavy or serial correlation is strong, switch to: Choose the statistic. (cluster by day, by venue, by symbol group), or Cluster-robust tests (label-shuffling), or Randomization / permutation tests (resample blocks to respect autocorrelation). Bootstrap Pre-compromete a regra de parada. Paro opcional ("veremos cada hora e enviar cando p < 0.05") inflama positivos falsos. Decide o horizonte ou o número de comercios antes de lanzar o experimento. Xestionar múltiples comparacións. Se probar 20 botóns, un "ganará" por sorte. Use taxa de descubrimento falso (Benjamini-Hochberg) ou Bonferroni en contextos de alta aposta. Manteña un rexistro central de todas as probas que execute. Divide os mercados ou o tempo, non duplique as características de tren / proba e sexa explícito sobre as datas de conxelación. Un valor p pode ser pequeno para un millón de comercios, pero o efecto é economicamente insignificante despois de taxas e risco. tamaño do efecto de rastrexo (por exemplo, diferenza media en puntos de base por comercio) e PnL axustado ao risco (Sharpe, drawdown), non só significado estatístico. Monitor de estabilidade. Unha marxe real debe sobrevivir ás divisións: polo buque de liquidez do símbolo, polo tempo do día, polo réxime de volatilidade. Se a súa "xogar" só existe nunha fina fatia, teña coidado. Volver ao noso exemplo: o que debes concluír Dados os números anteriores (t ≈ 1,380, p ≈ 0,168): Non hai evidencia suficiente de que a PnL media por comercio de Estratexia B difire da Estratexia A. A bastante diverxencia na PnL cumulativa é compatible coa aleatoriedade baixo procesos de media igual. Ou recoller máis datos (predefinir unha mostra máis grande), reforzar a hipótese (mellores características, control de riscos), ou executar un A / B máis limpo (isolando confundidores). debido a Armadilhas comúns (Eu fixen todos eles para que non teñas que) Peeking na proba repetidamente e parar cando o valor de p diminúe por baixo de 0.05.Use métodos de horizonte fixo ou secuenciais que conteñen peeking, se non, aumenta falsos positivos. Usando resultados "por recheo" cando os recheos están altamente correlacionados. Pensas que tes 100k mostras, pero podería ser que realmente teñas 2k eventos independentes. Comparación de curvas cumulativas entre períodos con diferentes volumes / liquidez e chamándoo unha vitoria. Equalizando "significado estatístico" con "valor económico".Unha pequena vantaxe pode ser borrada por taxas, deslizamento de latencia ou risco de inventario. Se axusta 20 características e mantén o mellor, o seu valor p debe ser corrixido para esa selección. Unha mnemónica para a proba t que realmente pega Cando se sinta tentado a ollar un gráfico PnL, lembre: t = "canto están lonxe os dous medios de mostra" ÷ "canto son incertos eses medios". t = “how far the two sample means are” ÷ “how uncertain those means are.” Se duplicas o tamaño da túa mostra, o denominador (incertitude) encádrase; as diferenzas triviais deixan de parecer "significativas". Fin das notas Espero que teña algunha intuición por detrás de por que non é obvio xulgar os cambios na súa estratexia de negociación mirando só a diferenza PnL, que ferramentas estatísticas se poden usar para facer o proceso de investigación máis robusto, e posiblemente algunha claridade sobre o que está detrás de todos estes termos usados na proba de hipóteses estatísticas e como realmente derivalos sen seguir cegamente as instrucións do libro de texto. Moitos equipos de investigación porque equivocan a sorte para a mellora. Ciclan a través de axustes guiados por taboleiro ata que o gráfico se vexa ben, envíano e, a continuación, pasan meses desviando o dano. Non necesitas estatísticas pesadas para facer mellor. Só tes que afirmar a hipótese, escoller unha unidade sensata de análise, usar unha proba que mide o sinal en relación coa incerteza, respecte as regras de proba e parada múltiples e decida en base a ambas as estatísticas Os equipos constrúen marcos máis complexos que se adapten ao seu propósito, pero este é un bo lugar para comezar. fail to iterate e Fai isto e o teu ciclo de iteración faise máis tranquilo, máis rápido e máis compostelán. Esta publicación usa só información dispoñible publicamente e é para fins educativos, non asesoramento de investimento.Todas as opinións e opinións expresadas son miñas e non representan as de ningún dos meus antigos / actuais empregadores ou calquera outra parte.