Estudio
Estudio 01: el cruce de EMA 9/20 en EUR/USD diario, con protocolo registrado y bitácora de intentos
Respuesta primero
Registramos el protocolo el 12 de octubre de 2026, antes de descargar la serie de precios, y después corrimos las cuatro configuraciones que declaramos en él (EMA 9/20, 9/21, 12/26 y 50/200) sobre 5,958 fijos diarios de EUR/USD, de 2002-12-24 a 2026-09-30, con spread y swap. La regla 9/20 terminó con un Sharpe anualizado de 0.136; descontado por las cuatro variantes, su Deflated Sharpe Ratio (DSR) quedó en 0.619, por debajo del 0.95 fijado de antemano, así que la hipótesis del estudio se descarta. Como lectura secundaria, que no decide nada, la probabilidad de sobreajuste del backtest (PBO) entre las cuatro configuraciones salió en 0.787.
Protocolo registrado
El protocolo fija la hipótesis, las reglas, los datos, los costos, las métricas y el criterio de descarte antes de correr nada. Su huella sha256 se publicó en X el 2026-10-12 a las 15:00 UTC (post del registro):
ed02a661f8083632137b667f17e3bc4d92121bad356fe413fde356cbb12e22e1
El archivo se publica íntegro con este estudio, byte a byte (protocolo-v0_4.md). Si un solo carácter cambiara, la huella sería otra. El protocolo declara también lo que se consultó antes del registro: las páginas de condiciones de uso y de descripción de las fuentes; las tablas públicas de tasas del BCE y de la Reserva Federal; algunas filas de la página histórica del euro de la H.10 (enero de 2000 y octubre-noviembre de 2002, estas últimas dentro del calentamiento), al verificar su formato; la página de cargos y un artículo de ayuda de un bróker, y dos scripts públicos de la regla en una plataforma de gráficos. No se había descargado la serie ni calculado ninguna media, señal o métrica.
| Elemento | Qué fija el protocolo |
|---|---|
| Hipótesis (H1) | El cruce de EMA 9/20, en su versión canónica, produce en el escenario de costos base un Sharpe cuyo DSR es igual o mayor que 0.95 |
| Instrumento y datos | EUR/USD diario: el fijo del mediodía de Nueva York que publica la Reserva Federal (publicación H.10), de 1999-01-04 a 2026-09-30 |
| Reglas | Dos direcciones; señal detectada en la barra t y ejecutada en la barra t + 1; cada señal cierra la posición vigente y abre la contraria; sin filtros, stops ni objetivos; exposición 1× rebalanceada en cada barra |
| Calentamiento | Las barras 1 a 1,000 solo calculan las medias; la evaluación empieza en la barra 1,001, igual para las cuatro variantes |
| Costos base | Spread de 2 pips por lado; swap con la tasa de depósito del BCE y el objetivo de la Fed, menos un margen de 1.0 % anual en contra; comisión 0; impuestos no modelados |
| Sensibilidad | Escenario bajo (1 pip; 0.5 %) y alto (4 pips; 2.0 %): se reportan y no deciden nada |
| Criterio de descarte | H1 se descarta si el DSR de la variante 1 en el escenario base es menor que 0.95, evaluado en precisión completa |
| Publicación | El resultado se publica sea cual sea |
Datos
Los cinco archivos se descargaron una sola vez, el 2026-10-22, y se guardan sin ninguna modificación: la serie del euro del Data Download Program de la Reserva Federal, la página histórica del euro de la H.10 (solo como control), las dos páginas de decisiones del FOMC y la serie de la tasa de depósito del ECB Data Portal. Un anexo de datos fechado fija la URL, la hora de descarga, los bytes y el sha256 de cada archivo, los conteos y las anomalías. Su huella se publicó en X el 2026-10-23 a las 17:47 UTC, en el mismo hilo del registro (sello de los datos), antes del primer cálculo del estudio (2026-10-29):
debb30d7ae5960c6d0859d25309e058c253c72e3fed2d90aee29c0b447528a0f
El anexo tiene además un recibo OpenTimestamps (anexo-datos-2026-10-22.md.ots), verificable con ots verify.
| Concepto | Valor |
|---|---|
| Barras (fijos numéricos hasta 2026-09-30) | 6,958 |
| Días «ND» (sin dato), fuera del cálculo | 280 |
| Barra 1,001 (inicio de la evaluación) | 2002-12-24 |
| Última barra | 2026-09-30 |
| Retornos evaluados (T) | 5,958 |
| Control contra la página histórica | 0 diferencias en 6,706 fechas |
Dos anomalías quedaron escritas en el anexo antes de correr: la página histórica del FOMC no nombra la tasa de su columna (se identifica por el enlace y el encabezado de la página vigente), y desde 2008-12-16 el objetivo es un rango, del que el código toma el punto medio. La tabla del FOMC trae además una fecha corregida por la propia fuente («March 4*»: el 4 de marzo de 2020, antes registrado como 3 de marzo); el código usa la fecha corregida. Al revisar el resultado vimos que varias fechas de esa tabla son las del día siguiente a la reunión (por ejemplo, 2015-12-17 para la decisión del 16 de diciembre), mientras el protocolo supone la fecha de la decisión; con su regla («fecha anterior a la de t»), esas tasas entran un fijo más tarde. Se aplicó la regla registrada. Con la regla «fecha igual o anterior», el Sharpe anualizado de la variante 1 pasaría de 0.1357 a 0.1358 (bitácora, fila 5).
Los datos de la Reserva Federal son de dominio público y las estadísticas del BCE admiten reutilización citando la fuente. Por eso los cinco archivos se publican tal cual.
Bitácora de intentos
La bitácora usa las cinco columnas de Cómo contar tus variantes: número, fecha, qué cambió, qué se vio antes que llevó al cambio, y qué resultado se miró. Las cuatro variantes se declararon en el protocolo antes de correr, y no se corrió ninguna otra.
| Nº | Fecha | Qué cambió | Por qué | Resultado mirado (escenario base) |
|---|---|---|---|---|
| 0 | 2026-10-08 | El instrumento pasó de BTCUSDT perpetuo (borradores v0.1–v0.3) a EUR/USD | En ninguna de las fuentes de precios de BTC revisadas encontramos términos que autorizaran expresamente a una firma comercial a publicar resultados derivados sin una licencia escrita | Ninguno: no se descargó ni se corrió nada. No cuenta como intento |
| 1 | 2026-10-29 | EMA 9/20 (H1) | Declarada en el protocolo antes de correr | Sharpe 0.136 · conservada |
| 2 | 2026-10-29 | EMA 9/21 | Declarada en el protocolo antes de correr | Sharpe 0.133 · conservada |
| 3 | 2026-10-29 | EMA 12/26 | Declarada en el protocolo antes de correr | Sharpe 0.078 · conservada |
| 4 | 2026-10-29 | EMA 50/200 | Declarada en el protocolo antes de correr | Sharpe −0.013 · conservada |
| 5 | 2026-10-29 | Convención de fechas del FOMC: «igual o anterior» en lugar de «anterior», solo como comprobación | La tabla del FOMC trae fechas del día siguiente a la reunión | Variante 1: Sharpe 0.1358 contra 0.1357 · descartada; no es una configuración de la regla y no cuenta en n_trials |
n_trials = 4. Son las filas 1 a 4: las configuraciones de la regla con un resultado mirado. La fila 5, los escenarios de costos, los cálculos de atribución y la referencia no son intentos. Ninguna configuración se volvió a correr por un error de código.
Resultado
Las cuatro variantes en el escenario base, sobre los mismos 5,958 retornos:
| Variante | Sharpe anualizado | Retorno total | Drawdown máximo | Ejecuciones |
|---|---|---|---|---|
| 1 · EMA 9/20 | 0.136 | 21.2 % | 32.5 % | 251 |
| 2 · EMA 9/21 | 0.133 | 20.5 % | 28.6 % | 249 |
| 3 · EMA 12/26 | 0.078 | 7.2 % | 30.9 % | 193 |
| 4 · EMA 50/200 | −0.013 | −11.5 % | 36.8 % | 37 |
Gráfico. Curva de capital de las cuatro variantes, escenario base, de 2002-12-23 (barra 1,000, capital = 1) a 2026-09-30.
El descuento por las cuatro variantes (DSR). El Sharpe por barra de la variante 1 es 0.00855 (0.136 anualizado). El umbral SR₀, el Sharpe máximo que cabría esperar entre cuatro configuraciones cuyo Sharpe verdadero es cero dada la dispersión observada entre ellas, es 0.00462 por barra (0.073 anualizado). Los retornos tienen asimetría 0.103 y curtosis 6.01 (en una distribución normal sería 3): colas pesadas. La fórmula del DSR las toma en cuenta, pero con un Sharpe por barra tan pequeño su efecto es despreciable. La variante 1 se designó antes de correr; aun así se descuenta como si se hubiera elegido entre las cuatro (criterio conservador del protocolo). Con T = 5,958, el DSR es 0.619. El criterio pedía 0.95: H1 se descarta.
El PSR contra cero, la misma expresión sin descontar las variantes, es 0.745. Es decir, la regla tampoco llega a 0.95 antes del descuento: con este nivel de Sharpe, 23.8 años de datos diarios no bastan para separarla del ruido estadístico.
Probabilidad de sobreajuste (PBO). Los 5,952 retornos más recientes se dividen en 16 bloques contiguos de 372 retornos (unos 18 meses cada uno) y se recorren las 12,870 formas de elegir 8 bloques como muestra de ajuste y dejar 8 como prueba. En cada una, la configuración con mejor Sharpe en la muestra de ajuste recibe su lugar en la prueba:
| Lugar de la ganadora en la prueba | Combinaciones | Proporción |
|---|---|---|
| 4.º (la peor) | 5,870 | 45.6 % |
| 3.º | 4,264 | 33.1 % |
| 2.º | 2,516 | 19.5 % |
| 1.º (la mejor) | 220 | 1.7 % |
En el 78.7 % de las combinaciones, la configuración que ganaba en la muestra de ajuste quedó en la mitad de abajo fuera de ella: PBO = 0.787. Solo en el 1.7 % la ganadora del ajuste fue también la mejor en la prueba.
Costos. Para la variante 1, el mismo cálculo sin spread termina en 31.7 % y sin swap en 55.4 %, contra 21.2 % con ambos. El swap pesa más que el spread: con la posición abierta prácticamente toda la ventana, el margen de 1.0 % anual en contra se paga por cada día de posición abierta, en largos y en cortos.
| Escenario | Sharpe 9/20 | Sharpe 9/21 | Sharpe 12/26 | Sharpe 50/200 | DSR de la variante 1 |
|---|---|---|---|---|---|
| Bajo (1 pip; 0.5 %) | 0.213 | 0.210 | 0.150 | 0.047 | 0.738 |
| Base (2 pips; 1.0 %) | 0.136 | 0.133 | 0.078 | −0.013 | 0.619 |
| Alto (4 pips; 2.0 %) | −0.018 | −0.020 | −0.067 | −0.133 | 0.358 |
Ni con costos bajos llega el DSR a 0.95. Con costos altos, las cuatro variantes quedan con Sharpe negativo.
Cuándo se ganó. La curva de la variante 1 tocó su máximo el 2011-05-03, con el capital 55.2 % arriba del inicio. De ahí cayó 32.5 % hasta el 2020-05-22 y cerró la ventana 21.9 % por debajo de ese máximo. El retorno total de 21.2 % es lo que quedó de lo ganado hasta mayo de 2011; en los 15.4 años siguientes la curva no volvió a ese nivel.
Tramo final. Los últimos 24 meses (2024-10-01 a 2026-09-30, 500 barras) se reportan por separado, sin reabrir la posición. No deciden nada. Variante 1: retorno 2.6 %, Sharpe anualizado 0.221, drawdown máximo 9.0 %, 22 ejecuciones.
Referencia de contexto, no comparación de mérito. Estar comprado 1× en EUR/USD toda la ventana, con el mismo spread y el mismo swap, termina en −31.6 %, con drawdown máximo de 52.5 % (tramo final: −3.7 %).
Qué dice y qué no
Dice que, con estas reglas, estos datos y estos costos, el resultado del 9/20 no se distingue del ruido estadístico con el nivel de evidencia fijado antes de correr. Dice también que, entre estas cuatro configuraciones, la que mejor se veía en la muestra de ajuste (8 de los 16 bloques) quedó en la mitad de abajo en los otros 8 en el 78.7 % de las particiones.
No dice nada fuera de este caso. Sus límites, declarados en el protocolo:
- Un instrumento, una fuente, un marco temporal. EUR/USD diario de la H.10. Otro activo, otro horario de cierre u otra fuente de precio son otro estudio.
- Cuatro variantes, tres muy parecidas. Con N = 4, la dispersión entre Sharpe se estima con tres grados de libertad y la deflación es débil; por eso se reportan también SR₀ y el PSR contra cero. El PBO solo puede tomar cuatro lugares y lo pueden dominar configuraciones casi idénticas; además, la 50/200, la peor en la ventana completa, ganó la muestra de ajuste en 2,720 de las 12,870 particiones. Un PBO alto aquí describe a estas cuatro configuraciones, no a la regla 9/20 sola.
- Costos aproximados. El spread base (2 pips por lado) es unas 6.7 veces el medio spread mínimo que publicaba un bróker minorista grande el 2026-10-08 (protocolo §4); no encontramos una fuente pública verificable de spreads minoristas para los primeros años. El swap usa las tasas de política monetaria como aproximación y el margen m es una convención.
- Supuestos de ejecución. El fijo del mediodía se trata como precio medio; el rebalanceo diario no paga spread; no se modela el cargo triple de los miércoles; no se modelan impuestos.
- Un periodo. 23.8 años incluyen varios tramos del mercado, pero no todos los posibles.
Descartar H1 no es un veredicto sobre la regla fuera de esta serie, este periodo, estas reglas y estos costos. Nada de esto garantiza resultados.
Reproducir
Todo se publica junto a este estudio en travidence.com/recursos/estudios/cruce-ema-9-20-eurusd/archivos/: el protocolo, los cinco archivos de datos con SHA256SUMS, el anexo y su recibo, el código, las pruebas con datos sintéticos, requirements.lock, las salidas y la bitácora. El código del estudio (run_study.py y estudio01/) usa la biblioteca estándar de Python y numpy, no usa ningún componente de la plataforma TRAVIDENCE y no se conecta a la red; la única descarga la hizo download.py, una sola vez, el 2026-10-22. requirements.lock fija también pandas porque el protocolo (§8) lo preveía; el código no lo importa.
Verificar los datos:
cd data && shasum -a 256 -c SHA256SUMS
Correr el estudio desde una copia de la carpeta sin outputs/, con Python 3.11.15 y las versiones de requirements.lock:
python -B run_study.py --run-utc 2026-10-29T15:39:49Z
El comando comprueba las seis huellas (cinco archivos y el anexo) y se detiene sin escribir nada si alguna no coincide. Con esa hora, los 21 archivos que escribe salen idénticos byte a byte a los publicados; se comprobó el 2026-10-29 en dos sistemas, macOS y Linux x86_64. bitacora.md se redacta a mano y no entra en la comparación.
| Archivo | sha256 |
|---|---|
protocolo-v0_4.md |
ed02a661f8083632137b667f17e3bc4d92121bad356fe413fde356cbb12e22e1 |
data/anexo-datos-2026-10-22.md |
debb30d7ae5960c6d0859d25309e058c253c72e3fed2d90aee29c0b447528a0f |
run_study.py |
98901fad65c2e8fb49d62aa47db34b732d4c38ed7585768bc1c9173cd417f0d6 |
requirements.lock |
b883865636ee3268395c9669ad793410eae6dc3ce29260dba2f3979e0a66fcfa |
outputs/run-log.json |
3adb49bcc5917f79b54d34eaaca9ff7c1235b4df0158cecc006370e7f64de694 |
outputs/bitacora.md |
59a6e8b96b0b682605dc729b18c54465667abf4da51dceeb84b5802d20ed1192 |
Las huellas de los cinco archivos de datos están en data/SHA256SUMS; las de los módulos de estudio01/ y de cada salida, en el README.md de la carpeta; las de las salidas, también en outputs/run-log.json.
Fuentes: «Source: Board of Governors of the Federal Reserve System, H.10 Foreign Exchange Rates» · «Source: Board of Governors of the Federal Reserve System, Open Market Operations» · «Source: ECB statistics».
Referencias
Bailey, D. H. y López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.
Bailey, D. H., Borwein, J. M., López de Prado, M. y Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69. https://doi.org/10.21314/JCF.2016.322