La Ley de Atribución de Quant: Si el PnL post-change está arriba, es el cambio; Si el PnL post-change está abajo, es el mercado. La Ley de Atribución de Quant: Si el PnL de post-cambio está arriba, fue el cambio. Si el PnL después del cambio ha descendido, es el mercado. Trabajo en el comercio cuantitativo y construyo entornos de investigación totalmente automatizados y sistemas de comercio que me ayudan a pasar de los datos del mercado a las estrategias de comercio de producción a los análisis de rendimiento. Uno de los requisitos clave de tales sistemas es permitirme probar rápidamente mis ideas e iterar rápidamente para mejorar el rendimiento general del comercio. Es una métrica muy obvia para decir si estoy haciendo mejor que antes o no. PnL Si alguna vez ha ejecutado una estrategia de comercio en vivo, conocerá este ritual diario: abrir tableros para comprobar los rellenos, las latencias, el inventario y, inevitablemente, mirar en PnL. Este gráfico es seductor ya que es el tablero final que resume cuán exitoso es el negocio. Los mercados son no estacionarios, los clústeres de relleno, los regímenes de volatilidad se vuelven, los cambios de microstructure y la distribución de los resultados es grasa.Si “optimiza” reaccionando a los caminos de PnL, acabará persiguiendo el ruido. fool yourself Este artículo da a Visión sobre cómo reemplazar PnL-chasing con Su ciclo de iteración recibe más señal por unidad de tiempo. practical statistical hypothesis testing Por qué PnL es una métrica ruidosa El PNV es un de muchos componentes aleatorios: agregado Su dispersión diaria de PnL puede duplicarse en un día de noticias, incluso si su sistema es inalterado. Tiempo de microsegundo, posición de cola, niveles de tarifas, interacción oculta vs. iluminada: todo inyecta aleatoriedad en los resultados comerciales. Un par de ganancias tempranas se combinan en una mayor exposición nocional más tarde (o viceversa), haciendo que la curva parezca convincente sin cambiar el resultado medio subyacente por comercio. Cambios en las capas de inventario, ancho de cita, cruce interno o enrutamiento pueden mover PnL en direcciones opuestas y cancelarse o amplificarse mutuamente. PnL es un gran objetivo para rastrear el negocio, pero no necesariamente una métrica adecuada para aceptar / rechazar cambios de investigación en ventanas cortas. Lo que nosotros Quieren saber por por Cuando enviamos un cambio (por ejemplo, una nueva característica en la señal, una lógica de citas diferente, una regla de ejecución diferente), queremos responder: ¿Es probable que la mejora observada persista, o es algo que vimos por casualidad? Is the observed improvement likely to persist, or is it something we saw by chance? Esto nos lleva al mundo de las pruebas de hipótesis estadísticas, donde cuestionamos la importancia estadística de los resultados observados. Esta probabilidad es la Los valores de p pequeños significan “esto sería raro si no hubiera un efecto real”. 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? No hace nada p-value No hace nada Un ejemplo práctico: dos estrategias que Diferentes pero no mirando mirando Vamos a fingir que hemos enviado un cambio y hemos obtenido algunos negocios en una estrategia antes y después del cambio (ya sea de backtest o de comercio en vivo). Estrategia A: Antes del cambio Estrategia B: después del cambio Abajo generé dos series de PnL sintéticas por comercio. —exactamente el tipo de imagen que tenta a los equipos a declarar la victoria. Pero ¿podemos realmente confiar en lo que estamos viendo y sacar conclusiones basadas en ello? Después de todo, ¿no es PnL el objetivo final de una estrategia de comercio? diverge visibly El código que usé para producir las tramas y ejecutar una prueba estadí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(); Aquí están los números que emite: mean_A=0.0611, mean_B=0.0037 Welch t-statistic=1.380, p-value=0.168 Vemos las dos salidas estándar de una prueba estadística —una t-estadística y un valor p. Le contaré más acerca de ellos más adelante en la historia. Para decir que el PnL promedio por comercio es diferente. Sin embargo, las dos líneas acumulativas parecen bastante lejanas. there is not enough evidence ¿Qué es lo que acaba de suceder? (desmistificación de la prueba de hipótesis) Personalmente, no me gustó mucho este enfoque la primera vez que estaba aprendiendo sobre la prueba de hipótesis estadística, porque la mayoría de los tutoriales no explican la idea detrás de ella y simplemente te permiten memorizar una tonelada de cosas.Aunque pude trabajar con ella y calcular algunos resultados siguiendo ciegamente el algoritmo de cómo hacer y mirando las cosas en tablas masivas, el momento en que aprendí los mecanismos para derivarlo y de dónde todo realmente viene fue un gran alivio para mí. 1) La pregunta que nos hacemos Hipótesis nula (H0): el PnL promedio real por comercio es el mismo antes y después del cambio. Alternativa (H1): difieren (dos lados), o uno es más grande (un lado), dependiendo de su pregunta. 2) Las estadísticas que calculamos En su núcleo, el es : t-statistic La diferencia en la muestra significa dividida por el error estándar de esa diferencia. Dividido por . difference in sample means the standard error of that difference Si las dos muestras significan que están lejos , el t-stat se hace grande en magnitud. Si están cerca en relación al ruido, el t-stat es pequeño. En cuanto a lo ruidosos que son d) de donde proviene el valor p Bajo H0 (sin diferencia real), la t-estadística sigue una distribución conocida (a con algún grado de libertad). Es simplemente: t-distribution p-value la probabilidad, bajo H0, de observar un t-stat al menos tan extremo (valor grande de un t-stat) como el que obtuvo. the probability, under H₀, of observing a t-stat at least as extreme (large value of a t-stat) as the one you got. Eso es todo lo que las tablas (que puede haber enfrentado en diferentes guías de prueba de hipótesis) están haciendo- Un pequeño valor p significa que la diferencia observada sería rara si no hubiera un efecto real. looking up a quantile 4) Cómo leer los números reales producidos por el código Python anterior Aquí está lo que estos números te dicen: t ≈ 1.380 dice: la diferencia observada en el PnL promedio por comercio entre A y B es 1.380 errores estándar lejos de cero. p ≈ 0.168 (dos lados) dice: si realmente no hubiera diferencia en los medios, vería una diferencia al menos tan grande alrededor del 16-17% del tiempo por casualidad. Esto no es lo suficientemente raro como para reclamar un efecto real. Usualmente los investigadores esperan que el valor de p sea al menos tan bajo como 0.05 (5%) para reclamar significado estadístico. 5) Por qué los mapas nos engañaron El PnL acumulativo es un alrededor de la media subyacente. Con miles de comercios, las caminatas aleatorias se separan regularmente por cantidades oculares, incluso si los medios son idénticos.Nuestros cerebros están ajustados para detectar pendientes y separación, pero no demasiado para integrar la variación correctamente. . random walk against the per-trade dispersion 6) ¿Qué habría sido “significativo” aquí? Prácticamente hablando, vería el valor p en 0.05 si el absoluto de t-estadística es 1.96 (sólo el 5% de los posibles valores t-estadísticos están más allá de eso). Manteniendo la varianza y la estructura del tamaño de la muestra la misma, necesitaría aproximadamente una diferencia media del 42% mayor (porque 1.96 / 1.38 ≈ 1.42) para llegar a la barra de dos lados del 5% .Equivocadamente, si el efecto real permaneciera el mismo, necesitaría aproximadamente 2x más datos por brazo (desde (1.96 / 1.38)^2 ≈ 2.0) para empujar la estadística t sobre 1.96. “Pero PnL es lo que paga las facturas”. ...no estamos desechando el PnL. Estamos : separating roles PnL le dice si el negocio en su conjunto está funcionando. Las pruebas de hipótesis te dicen si este cambio específico es probable que ayude fuera de la muestra que acabas de ver. Cuando los dos no están de acuerdo, has aprendido algo: tal vez el entorno fue inusual, tal vez un ajuste de enrutamiento amplificó la exposición, tal vez has enviado múltiples cambios. El efecto . Incremento Modelo de implementación que recomiendo (iteración rápida sin autoengaño) Per-trade PnL es bueno, en estrategias de alta frecuencia / creación de mercado es común usar agregaciones como per-interval PnL (por ejemplo, 1 minuto, 5 minutos) para reflejar el inventario, la tarifa y la agregación de riesgos - y para reducir la correlación de serie. 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 Precompromete la regla de parada. Opcional parada (“veremos cada hora y enviar cuando p < 0.05”) inflama positivos falsos. Decide el horizonte o el número de comercios antes de lanzar el experimento. Gestione múltiples comparaciones. Si intenta 20 botones, uno “ganará” por suerte. Utilice la tasa de descubrimiento falsa (Benjamini-Hochberg) o Bonferroni en contextos de apuestas altas. Mantenga un registro central de todas las pruebas que realice. Guarde contra las fugas y el exceso de backtest. mercados o tiempo divididos, no duplique las características de tren / prueba, y sea explícito acerca de las fechas de congelación. Un valor de p puede ser pequeño para un millón de operaciones, pero el efecto es económicamente insignificante después de las tarifas y el riesgo.El tamaño del efecto de rastreo (por ejemplo, la diferencia media en puntos de base por comercio) y el PnL ajustado al riesgo (Sharpe, drawdown), no sólo significado estadístico. Monitoreo de la estabilidad.Un borde real debe sobrevivir a las divisiones: por el barril de liquidez del símbolo, por el tiempo del día, por el régimen de volatilidad.Si tu "ganar" existe sólo en una fila delgada, tenga cuidado. Volver a nuestro ejemplo: lo que debe concluir Dados los números anteriores (t ≈ 1,380, p ≈ 0,168): No hay suficiente evidencia de que el PnL medio por comercio de la Estrategia B difiera de la Estrategia A. La bastante divergencia en la PnL acumulativa es compatible con la aleatoriedad bajo procesos de media igual. O recopilar más datos (predefinir una muestra más grande), reforzar la hipótesis (mejores características, control de riesgos), o ejecutar un A/B más limpio (isolando confundidores). Debido a Las trampas comunes (los he hecho todos para que no tengas que) Peeking en la prueba repetidamente y deteniéndose cuando el valor de p desciende por debajo de 0.05.Use métodos de horizonte fijo o secuenciales que cuentan con peeking, de lo contrario se elevan positivos falsos. Usando los resultados "por relleno" cuando los rellenos están altamente correlacionados. Usted piensa que tiene 100k muestras, pero podría ser que realmente tiene 2k eventos independientes. Comparación de curvas acumulativas entre períodos con diferentes volúmenes/liquidez y llamándolo ganancia. Equalizando “significado estadístico” con “valor económico”.Una pequeña ventaja puede ser borrada por las tarifas, el deslizamiento de la latencia o el riesgo de inventario. Si ajusta 20 características y mantiene el mejor, su valor p debe ser corregido para esa selección. Una mnemónica para la prueba t que realmente se coloca Cuando te sientas tentado a mirar un gráfico de PnL, recuerde: t = “cuán lejos están los medios de las dos muestras” ÷ “cuán inciertos son esos medios”. t = “how far the two sample means are” ÷ “how uncertain those means are.” Si duplica el tamaño de su muestra, el denominador (incertidumbre) se contrae; las diferencias triviales dejan de parecer “significativas”. Fin de notas Espero que haya tenido alguna intuición detrás de por qué no es obvio juzgar los cambios en su estrategia de negociación mirando sólo la diferencia de PnL, qué herramientas estadísticas se pueden utilizar para hacer el proceso de investigación más robusto, y posiblemente alguna claridad sobre qué está detrás de todos estos términos utilizados en la prueba de hipótesis estadística y cómo derivarlos sin seguir ciegamente las instrucciones del libro de texto. Muchos equipos de investigación porque equivocan la suerte por la mejora. Ciclan a través de ajustes impulsados por el dashboard hasta que el gráfico se ve bien, lo envían, y luego pasan meses desviando el daño. No necesitas estadísticas pesadas para hacer mejor. Solo tienes que declarar la hipótesis, elegir una unidad razonable de análisis, usar una prueba que mide la señal relativa a la incertidumbre, respete las reglas de prueba y parada múltiples y decide basándose en ambas estadísticas Los equipos construyen marcos más complejos que se ajustan a su propósito, pero este es un buen lugar para empezar. fail to iterate y Haga esto, y su ciclo de iteración se vuelve más tranquilo, más rápido y más complejo. Esta publicación utiliza sólo información disponible públicamente y es para fines educativos, no asesoramiento de inversión.Todas las opiniones y opiniones expresadas son mías y no representan las de ninguno de mis antiguos/actuales empleadores o cualquier otra parte.