Una investigación honesta y reproducible sobre si existen estrategias sistemáticas rentables en el oro. Spoiler: probamos 5 hipótesis con validación rigurosa out-of-sample y el resultado es una lección clásica del trading cuantitativo.
Aviso: Esto es investigación educativa, no es asesoría financiera. Datos del futuro del oro (
GC=F) vía Yahoo Finance; difieren del spot de un bróker.
Tras el máximo histórico del oro empezó un ciclo bajista. ¿Puede R decirnos "en tal rango de tiempo y a tal precio, haz tal operación"? Es decir: ¿existe un patrón sistemático que dé ventaja (edge)?
Cada hipótesis se sometió a la prueba de fuego: validación train/test (descubrir en una mitad de los datos, validar en la otra que el sistema nunca vio). Sin esto, es facilísimo "encontrar" patrones que son puro ruido del pasado.
| # | Hipótesis | Métrica clave | Veredicto |
|---|---|---|---|
| 1 | Vender rebotes a Fibonacci (diario) | PF 1.35 con 13 ops | |
| 2 | Filtro por hora del día | PF 1.01 → 0.99 con filtro | ❌ No aporta |
| 3 | Fibonacci en 4h | PF 1.64 con 65 ops | |
| 4 | …validado train/test | train 1.60 → test 0.22 | ❌ Colapsó (sobreajuste) |
| 5 | Vender rupturas (cortos, 26 años) | PF 0.41 con 104 ops | ❌ Estructuralmente perdedor |
| 6 | Comprar rupturas (largos, 26 años) | PF 1.53 por trade | |
| 7 | …vs comprar y mantener | Sistema Sharpe 0.30 vs B&H 0.68 | ❌ No le gana al buy&hold |
Para el oro, en este periodo, ninguna estrategia activa que probamos le gana a simplemente comprar y mantener en términos de riesgo-retorno (Sharpe).
- Vender el oro sistemáticamente (rebotes o rupturas) no tiene edge.
- El lado largo tiene edge por operación, pero al estar fuera del mercado el 57% del tiempo, se pierde el gran movimiento alcista secular.
- La única virtud del sistema activo: menor drawdown (−25% vs −44%), útil solo si se combina con apalancamiento.
Este es uno de los hallazgos más comunes y valiosos del trading cuantitativo: en un activo con tendencia secular fuerte, la mayoría de sistemas activos pierden contra el buy & hold. Lo comprobamos con datos reales y validación seria — que es justo lo que casi nadie hace antes de arriesgar dinero.
Estacionalidad intradía (frágil, no sobrevivió al backtest):
Sistema de tendencia largo vs Comprar y mantener (el buy&hold gana):
| Script | Qué hace |
|---|---|
00_setup.R |
Instala paquetes (correr una vez) |
01_analisis_oro.R |
Máximo histórico, ciclo bajista, niveles de Fibonacci |
02_backtest_niveles.R |
Backtest de venta en rebotes a Fibonacci |
03_backtest_con_costos.R |
Igual, con spread + comisión |
04_estacionalidad_intradia.R |
¿A qué horas cae más? (datos horarios) |
05_cruce_fib_horas.R |
Cruce Fibonacci × hora del día |
06_multi_temporalidad.R |
Misma estrategia en Semanal/Diario/4h/1h/15m |
07_train_test_4h.R |
Validación out-of-sample en 4h |
08_tendencia_rupturas.R |
Estrategia de tendencia (Donchian) en el ciclo |
09_tendencia_historia.R |
Tendencia simétrica sobre 26 años de historia |
10_sistema_largo.R |
Sistema largo vs buy & hold (equity, Sharpe, DD) |
Requiere R (probado en 4.6.1). No necesitas MetaTrader ni API keys: los datos se bajan gratis de Yahoo Finance.
# 1. Instala dependencias (una sola vez)
source("00_setup.R")
# 2. Corre cualquier análisis, por ejemplo:
source("01_analisis_oro.R")
source("10_sistema_largo.R")Desde consola (Windows PowerShell):
$env:R_LIBS_USER = "$env:USERPROFILE\Documents\R\win-library\4.6"
& "C:\Program Files\R\R-4.6.1\bin\Rscript.exe" "10_sistema_largo.R"Dependencias: quantmod, TTR, PerformanceAnalytics, xts, jsonlite.
- Datos: diario vía
getSymbols("GC=F", src="yahoo"); intradía vía la API chart de Yahoo (query1.finance.yahoo.com/.../GC%3DF?interval=1h). El intradía a veces devuelve HTTP 422 por rate-limit: reintentar tras unos segundos. - Costos: se descuenta ~0.08% por operación (spread + comisión) en los backtests.
- Anti-look-ahead: las señales usan la barra ya cerrada (
i-1) antes de operar.
MIT — ver LICENSE. Úsalo, apréndelo, rómpelo.

