Las 20 estrategias populares (P01–P20)¶
Qué vas a aprender¶
- Qué hace cada una de las 20 recetas "populares": idea, reglas de entrada y salida, features, defaults, timeframes y activos.
- Qué limitaciones tienen (P12/P13 solo intradía; P12/P13 en 1h UNSUPPORTED con defaults; variantes nativas de Nautilus en P16/P18).
- A seguir un trade barra a barra en cinco recetas (P01, P02, P04, P06, P11): señal al cierre de
t, fill en la apertura det+1, posición y equity con y sin costes.
De dónde salen los números de los ejemplos
Las tablas paso a paso son los fixtures a mano de docs/estrategias/P01.md, P02.md, P04.md, P06.md y P11.md (§6). Esos fixtures usan parámetros pequeños (por ejemplo EMA 3/5) para que se puedan calcular con lápiz, cash_inicial = 1.000,00, tick 0,01 y sin costes. Los tests del proyecto comprueban que el código reproduce esas tablas exactamente. La columna "equity con costes" la hemos añadido en este manual aplicando el escenario hypothetical_5bps que usan los ejemplos de la API (fee_rate = 0,0005, sin spread ni deslizamiento): comisión por fill = |delta| · precio · 0,0005, redondeada al céntimo half-even (la regla del ledger SIM-S, docs/POLITICAS_Y_LEDGER.md §2), y restada de la caja en la barra del fill. Esa columna no la producen los tests ni el repositorio: es un cálculo de este manual. Se ha comprobado a mano, fill por fill, en las cinco tablas (por ejemplo P01: 0,05 + 0,10 → 1.001,35; P06: 0,05 + 0,10 + 0,10 → 1.004,25). Las columnas sin costes sí son literales de los fixtures.
1. Mapa rápido¶
| ID | Nombre | Familia | Hito | Features | Defaults | fdi |
|---|---|---|---|---|---|---|
| P01 | Cruce de medias EMA | tendencia, dirección continua | H1 | ema_fast, ema_slow |
fast 20, slow 50 | 49 |
| P02 | RSI reversión desde extremos | reversión, desde plano | H1 | rsi |
period 14, lower 30, upper 70 | 14 |
| P03 | MACD cruce de señal | tendencia, dirección continua | H2 | EMA ×2, señal | 12 / 26 / 9 | 33 |
| P04 | Bollinger reentrada | reversión, desde plano | H1 | SMA, std, bandas | period 20, k 2,0 | 19 |
| P05 | Bandwidth ruptura tras compresión | volatilidad, armado con TTL | H2 | bbands, bandwidth, cuantil | 20 / 2,0 / q 0,2 / W 252 / TTL 10 | 271 |
| P06 | Supertrend | tendencia, siempre en mercado | H1 | ATR, bandas, dirección | period 10, mult 3,0 | 9 |
| P07 | UT Bot trailing ATR | tendencia con memoria | H2 | ATR, stop recursivo | period 10, key 1,0 | 9 |
| P08 | Squeeze Momentum | evento + salida por signo | H2 | BB, Keltner, regresión | 20 / 2,0 / 1,5 | 38 |
| P09 | WaveTrend | oscilador, desde plano | H2 | HLC3, EMA, WT | 10 / 21 / 60 | 41 |
| P10 | Ichimoku TK + nube causal | tendencia, desde plano | H2 | tenkan, kijun, senkou | 9 / 26 / 52 / 26 | 77 |
| P11 | Donchian / Turtle simplificado | ruptura, desde plano | H1 | máximos/mínimos previos | entry 20, exit 10 | 20 |
| P12 | Opening Range Breakout | sesión intradía | H2 | rango de apertura, sesión | range_minutes 30 | por sesión |
| P13 | VWAP de sesión | sesión intradía, reversión | H2 | VWAP, varianza ponderada | z 2,0, min 30 | por sesión |
| P14 | Parabolic SAR | tendencia, dirección continua | H2 | PSAR | 0,02 / 0,2 | 1 |
| P15 | DMI/ADX filtrado | tendencia con histéresis | H2 | +DI, −DI, ADX | 14 / 25 / 20 | 26 |
| P16 | Keltner ruptura | ruptura, desde plano | H2 | EMA, ATR | 20 / 10 / 2,0 | 19 |
| P17 | Stochastic RSI | oscilador, desde plano | H2 | RSI, stoch K/D | 14 / 14 / 3 / 3 | 31 |
| P18 | Hull Suite | tendencia, dirección continua | H2 | WMA, HMA | period 55, lag 2 | 62 |
| P19 | Chandelier Exit | tendencia, siempre en mercado | H2 | ATR, HH/LL, stop recursivo | 22 / 3,0 | 21 |
| P20 | SMC / BOS con pivotes confirmados | estructura | H2 | pivotes confirmados | half_window 3 | 6 |
fdi = first_decision_index con los defaults (primera barra en la que la receta puede decidir).
Datos: qué activos y timeframes sirven¶
| Receta | NVDA/KO intradía (1min–1h) | NVDA/KO 1d | US Yahoo 1d (AMZN, INTC, MSFT, TSLA) | BME / FX 1d |
|---|---|---|---|---|
| P01–P11, P14–P20 | sí (los 7 TF) | sí | sí | sí, con las reservas de FX (OHLC reparado) |
| P05 | sí | sí (historia ≥ 271 barras) | sí | sí |
| P12 | sí (única fuente), range_minutes múltiplo de la barra |
UNSUPPORTED | UNSUPPORTED | UNSUPPORTED |
| P13 | sí (única fuente), volumen real | UNSUPPORTED (var = 0) |
UNSUPPORTED | UNSUPPORTED (FX sin volumen) |
Fuente: docs/DATOS_POR_ESTRATEGIA.md y docs/estrategias/README.md §2. KO es un "activo con hueco": le faltan 271 sesiones (D-17); las recetas por observación siguen calculando a través del hueco y el runner avisa.
P12 y P13 en 1h con los defaults
P12 y P13 necesitan que la ventana (range_minutes, min_minutes) sea múltiplo del tamaño de la barra. El default es 30 minutos. En 1h, 30 no es múltiplo de 60, así que el caso es UNSUPPORTED: hay que pedir M = 60. Además, en 1h la última barra regular (15:30–16:00) dura 30 minutos, y en sesión corta con M = 60 queda una sola barra operable. No es un error: es aritmética, y la especificación de P12 lo declara.
2. Fichas de las 20 recetas¶
Cada ficha resume la canonical_rule del catálogo. "Desde plano" significa que tras una salida se vuelve a 0 y no se invierte en la misma decisión; "dirección continua" significa que el objetivo salta de +1 a −1 directamente (delta 2).
P01 · Cruce de medias EMA¶
Figura 1. P01 con los parámetros por defecto (20/50): largo mientras la EMA rápida está por encima de la lenta; fills en el open siguiente.
- Idea: la media rápida por encima de la lenta indica tendencia alcista.
- Regla: con ambas EMA válidas, objetivo +1 si
EMA(fast) > EMA(slow), −1 si es menor; la igualdad conserva el objetivo anterior. Estado inicial 0. Solo hay orden cuando el objetivo cambia. - Rejilla:
fast ∈ {5,10,20,40},slow ∈ {50,100,150,200}→ 16 candidatos, 8 curvas EMA. - Nota: la EMA se siembra con la SMA de las primeras
periodbarras. La EMA nativa de Nautilus se siembra con el primer valor (nt_seed_first_value) y por eso es una variante declarada, no el camino por defecto.
P02 · RSI: reversión desde extremos¶
Figura 2. P02 (RSI 14, 30/70): entra al salir de sobreventa y sale al alcanzar sobrecompra.
- Idea: tras un exceso vendedor (RSI < 30) el precio tiende a rebotar.
- Regla: desde plano, largo cuando el RSI cruza hacia arriba
lower; corto cuando cruza hacia abajoupper. Cerrar largo si RSI ≥ 50; cerrar corto si RSI ≤ 50. La salida tiene prioridad. - Rejilla: 4 × 3 × 3 = 36 candidatos, solo 4 curvas RSI (los umbrales son de política).
P03 · MACD: cruce de señal¶
- Regla:
MACD = EMA(f) − EMA(s),señal = EMA(g)del MACD,hist = MACD − señal. Objetivo +1 con histograma > 0, −1 con < 0; cero conserva. Solo tras la validez de toda la cadena. - Rejilla: 27 candidatos.
P04 · Bollinger: reversión por reentrada¶
- Regla: bandas
SMA(n) ± k·std(n, ddof=0). Largo cuandoC[t−1] < lower[t−1]yC[t] ≥ lower[t](el precio vuelve a entrar en la banda). Corto simétrico desde arriba. Salir largo conC ≥ media, corto conC ≤ media. No se invierte en la decisión de salida. - Caso degenerado: si la desviación es exactamente 0, no hay entrada (D-31).
P05 · Bollinger Bandwidth: ruptura tras compresión¶
- Regla:
BW = (upper − lower) / |media|. Se "arma" cuandoBW[t]está por debajo del cuantilqde lasWbarras anteriores (excluidat). El armado caduca trasarmed_ttlbarras. Armado, largo siC > upper, corto siC < lower. Salida al cruzar la media contra la posición. - Límite: necesita ≥ 271 barras de historia: no sirve para series cortas.
P06 · Supertrend¶
Figura 3. P06 (period 10, multiplier 3): largo mientras Supertrend está en modo alcista.
- Regla: bandas básicas
HL2 ± m·ATR(n); las bandas finales son recursivas (la superior solo baja, salvo ruptura). Dirección inicial +1; cambia a −1 siC < banda inferior final, a +1 siC > banda superior final. Objetivo = dirección. - Nota: siempre en mercado desde la primera barra válida; reversiones con delta 2.
P07 · UT Bot: trailing ATR¶
- Regla:
nLoss = key·ATR(n); un stop recursivo que sigue al precio (sube con él en largo, baja en corto). Objetivo +1/−1 al cruce del cierre sobre/bajo el stop. - Límite: en 1min con
key_valuebajo,nLosspuede ser menor que el tick: se avisa enrun_metrics.
P08 · Squeeze Momentum (TTM/LazyBear)¶
- Regla: squeeze cuando Bollinger está estrictamente dentro de Keltner. Liberación = había squeeze en
t−1y no ent. El momentomes el valor final de una regresión lineal rolling. Entrar en la liberación según el signo dem; salir cuandomcambia de signo (variante explícita).
P09 · WaveTrend¶
- Regla:
AP = HLC3,ESA = EMA(AP),CI = (AP − ESA)/(0,015·D),WT1 = EMA(CI),WT2 = SMA(WT1, 4). Desde plano: largo al cruce WT1 sobre WT2 siWT1 < −level; corto simétrico. Salida al cruce contrario. - Límite: FX con reserva grave (
hlc3contaminado por OHLC inválidos).
P10 · Ichimoku: Tenkan/Kijun y nube causal¶
- Regla: Tenkan, Kijun y Senkou B son puntos medios de máximos/mínimos. La nube que "se dibuja" en
tusaA[t−26],B[t−26]: causal, sin mirar al futuro. Largo al cruce TK alcista con el cierre sobre ambas líneas; salida si el cierre entra en la nube o hay cruce contrario.
P11 · Donchian / Turtle simplificado¶
Figura 4. P11 (entrada 20, salida 10): ruptura del máximo de 20 barras para entrar; pérdida del mínimo de 10 para salir.
- Regla: canal de entrada = máximo y mínimo de las
entrybarras estrictamente anteriores. Largo siCsupera el máximo; corto si rompe el mínimo. Salida con el canal deexitbarras. Sin piramidación. - Rejilla: 15 cartesianos, 14 válidos (se excluye
entry = exit = 20).
P12 · Opening Range Breakout¶
Figura 5. P12 (range_minutes 30): el rango de los primeros 30 minutos define los niveles; la ruptura se ejecuta en el open siguiente y la posición se cierra con la sesión.
- Regla: rango = máximo/mínimo de los primeros
Mminutos completos de la sesión regular. Después, primera ruptura de cierre; como máximo una entrada por sesión. Salida al cruzar el punto medio o cierre programado en la apertura de la última barra regular. - Límite: solo NVDA y KO intradía. La última barra se determina por
session_id, nunca por la hora del reloj (falla con DST y cierres anticipados a las 13:00).
P13 · VWAP de sesión: reversión¶
- Regla:
VWAP = Σ(V·HLC3)/ΣV,z = (C − VWAP)/√var. Trasmin_minutes, largo al volver por encima de−z_entry; corto simétrico. Salida al cruzar cero o con el cierre programado de ORB. - Límite: necesita volumen real: FX no sirve; 1d tampoco (
var = 0).
P14 · Parabolic SAR¶
- Regla: objetivo +1 cuando
SAR < C, −1 cuandoSAR > C; igualdad conserva. El punto SAR produce una señal de cierre, no una orden stop intrabarra (SIM-S).
P15 · DMI/ADX filtrado¶
- Regla: con
ADX ≥ entry_adx, objetivo según qué DI domina. ConADX < exit_adx, objetivo 0. Entre umbrales, conserva (histéresis). El ADX mide fuerza, no dirección.
P16 · Keltner: ruptura tendencial¶
- Regla: canal
EMA(C, n) ± k·ATR(a). Largo al cruce del cierre sobre la banda superior; corto bajo la inferior. Salida al atravesar la EMA contra la posición. - Divergencia nativa: con
indicator_provider=native, Nautilus usa dos semillas distintas de la canónica (EMAnt_seed_first_value; ATRnt_seed_first_value_sma_inner, que no converge con elma_typepor defecto). Una banda distinta cambia el índice exacto del cruce → señales distintas. Se ejecuta comoVARIANTy se reporta con su primera divergencia; no se usaKeltnerChannelnativo (otra fórmula).
P17 · Stochastic RSI¶
- Regla:
Stoch = 100·(RSI − min)/(max − min),K = SMA(Stoch, 3),D = SMA(K, 3). Largo en cruce K>D con K<20; corto en cruce K80. Si el rango del RSI es cero, Stoch = 50.
P18 · Hull Suite (dirección de HMA)¶
- Regla:
HMA(n) = WMA(2·WMA(C, ⌊n/2⌋) − WMA(C, n), round_half_up(√n)). Objetivo +1 siHMA[t] > HMA[t−lag], −1 si menor. - Trampas de redondeo:
int(√32) = 5peroround_half_up(√32) = 6;round(55/2) = 28pero⌊55/2⌋ = 27. Los tests usanperiod = 32, el caso discriminante. - Divergencia nativa: la
HullMovingAveragede Nautilus no tiene semilla (tres ventanas finitas), así que es la candidata a primera variante nativa que coincida bit a bit. Mientras no se verifique, se mapea comoVARIANTcon su primera divergencia (D-39).
P19 · Chandelier Exit¶
- Regla:
long_stop = HH(n) − k·ATR(n)(solo sube mientras el cierre previo esté por encima),short_stop = LL(n) + k·ATR(n)simétrico. Dirección +1 siC > short_stop_prev, −1 siC < long_stop_prev.
P20 · SMC / BOS con pivotes confirmados¶
- Regla: un pivote alto en
jexigeH[j]estrictamente mayor que lospvecinos a cada lado; solo está disponible enj + p(confirmación causal). Objetivo +1 si un cierre rompe el último swing alto; −1 si rompe el bajo. Consumir el nivel roto.
3. Cómo leer las tablas paso a paso¶
Todas las tablas siguientes tienen las mismas columnas:
| Columna | Significado |
|---|---|
t |
Índice de barra |
| O / C | Apertura y cierre |
| Indicador(es) | El valor que decide |
| target / razón | Lo que la política decide al cierre de t |
| Orden / fill | Lo que el ledger ejecuta en la apertura de t (por una decisión de t−1) |
| pos | Posición al cierre de t |
| Equity | caja + pos · C[t] al cierre, sin costes |
| Equity con costes | La misma, restando las comisiones acumuladas (5 pb) |
sequenceDiagram
participant Pol as Política (cierre t)
participant Led as Ledger
participant Mer as Mercado (apertura t+1)
Pol->>Led: target[t] = +1 (razón ENTRY)
Led->>Led: delta = target − posición = +1
Led->>Mer: orden BUY 1 a mercado
Mer-->>Led: fill a open[t+1]
Led->>Led: caja −= precio + comisión
4. Ejemplo 1 — P01, cruce EMA 3/5¶
Fixture de P01.md §6: fast = 3, slow = 5 (fuera de la rejilla a propósito). Las barras 0–5 son planas a 100; la EMA3 es válida desde t = 2, la EMA5 desde t = 4.
| t | O | C | EMA3 | EMA5 | target | razón | orden / fill | pos | Equity | Eq. con costes |
|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 100,00 | 100,00 | 100,000000 | 100,000000 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 7 | 100,00 | 100,00 | 100,000000 | 100,000000 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 8 | 100,50 | 102,00 | 101,000000 | 100,666667 | +1 | ENTRY | — | 0 | 1.000,00 | 1.000,00 |
| 9 | 102,50 | 104,00 | 102,500000 | 101,777778 | +1 | HOLD | BUY 1 @ 102,50 (com. 0,05) | +1 | 1.001,50 | 1.001,45 |
| 10 | 104,50 | 106,00 | 104,250000 | 103,185185 | +1 | HOLD | — | +1 | 1.003,50 | 1.003,45 |
| 11 | 106,00 | 105,00 | 104,625000 | 103,790123 | +1 | HOLD | — | +1 | 1.002,50 | 1.002,45 |
| 12 | 104,50 | 103,00 | 103,812500 | 103,526749 | +1 | HOLD | — | +1 | 1.000,50 | 1.000,45 |
| 13 | 102,50 | 101,00 | 102,406250 | 102,684499 | −1 | REVERSAL | — | +1 | 998,50 | 998,45 |
| 14 | 100,50 | 99,00 | 100,703125 | 101,456333 | −1 | HOLD | SELL 2 @ 100,50 (com. 0,10) | −1 | 999,50 | 999,35 |
| 15 | 98,50 | 97,00 | 98,851562 | 99,970889 | −1 | HOLD | — | −1 | 1.001,50 | 1.001,35 |
Qué observar:
- Barras 4–7: empate exacto. Las dos EMA valen 100,000000 bit a bit. La igualdad conserva el estado inicial 0: ninguna orden.
- Barra 8: la señal.
EMA3 = 0,5·102 + 0,5·100 = 101;EMA5 = (1/3)·102 + (2/3)·100 = 100,666667. Rápida > lenta → +1. Pero la barra 8 ya cerró: el fill es enopen[9] = 102,50, no enclose[8] = 102,00. - Barra 13: la reversión. Pasar de +1 a −1 es una orden de 2 unidades en
open[14] = 100,50, y paga comisión por 2 (2 · 100,50 · 0,0005 = 0,1005 → 0,10). - Final: la posición corta queda abierta; la equity se valora al último cierre:
1.098,50 − 97,00 = 1.001,50. No se liquida automáticamente.
5. Ejemplo 2 — P02, RSI(3) 30/70¶
Fixture de P02.md §6: period = 3, lower = 30, upper = 70. El precio cae de 100 a 94 (RSI a 0) y luego rebota.
| t | O | C | RSI | target | razón | orden / fill | pos | Equity | Eq. con costes |
|---|---|---|---|---|---|---|---|---|---|
| 6 | 95,50 | 94,00 | 0,000000 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 7 | 94,00 | 94,50 | 15,083799 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 8 | 94,60 | 95,00 | 30,751708 | +1 | ENTRY | — | 0 | 1.000,00 | 1.000,00 |
| 9 | 95,20 | 96,00 | 55,425220 | 0 | EXIT | BUY 1 @ 95,20 | +1 | 1.000,80 | 1.000,75 |
| 10 | 96,50 | 98,00 | 78,454996 | 0 | HOLD | SELL 1 @ 96,50 | 0 | 1.001,30 | 1.001,20 |
| 11 | 98,50 | 100,00 | 87,861849 | 0 | HOLD | — | 0 | 1.001,30 | 1.001,20 |
| 12 | 99,80 | 99,00 | 66,187916 | −1 | ENTRY | — | 0 | 1.001,30 | 1.001,20 |
| 13 | 98,80 | 98,00 | 48,311539 | 0 | EXIT | SELL 1 @ 98,80 | −1 | 1.002,10 | 1.001,95 |
| 14 | 97,80 | 97,00 | 34,382309 | 0 | HOLD | BUY 1 @ 97,80 | 0 | 1.002,30 | 1.002,10 |
| 15 | 96,80 | 96,00 | 24,001922 | 0 | HOLD | — | 0 | 1.002,30 | 1.002,10 |
Qué observar:
- Barra 8:
RSI[7] = 15,08 ≤ 30yRSI[8] = 30,75 > 30→ cruce hacia arriba → entrada larga. El RSI se calcula con la media de Wilder (RMA) sembrada con una SMA. - Barra 9: el RSI ya está en 55 ≥ 50 → salida. Resultado: una operación de una sola barra (compra en 95,20, venta en 96,50: +1,30 bruto).
- Barra 12:
RSI[11] = 87,86 ≥ 70yRSI[12] = 66,19 < 70→ cruce hacia abajo → corto. En la barra 13 el RSI ya es ≤ 50 → salida. - P02 nunca invierte: no hay ningún delta de 2. Tras salir siempre vuelve a 0.
- Cuatro fills × 0,05 = 0,20 de comisiones: sobre una ganancia bruta de 2,30, los costes se comen casi un 9 %. En 5 minutos con cientos de operaciones esto se nota mucho (lo verás en el ejemplo completo).
6. Ejemplo 3 — P04, Bollinger(3, k = 1)¶
Fixture de P04.md §6: period = 3, k = 1,0. En las barras 2–3 la desviación es exactamente 0 (caso degenerado): no se puede entrar.
| t | O | C | media | lower | upper | target | razón | orden / fill | pos | Equity | Eq. con costes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 99,50 | 97,00 | 99,000000 | 97,585786 | 100,414214 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 5 | 97,50 | 99,00 | 98,666667 | 97,419448 | 99,913886 | +1 | ENTRY | — | 0 | 1.000,00 | 1.000,00 |
| 6 | 99,50 | 101,00 | 99,000000 | 97,367007 | 100,632993 | 0 | EXIT | BUY 1 @ 99,50 | +1 | 1.001,50 | 1.001,45 |
| 7 | 100,50 | 96,00 | 98,666667 | 96,611862 | 100,721471 | −1 | ENTRY | SELL 1 @ 100,50 | 0 | 1.001,00 | 1.000,90 |
| 8 | 96,50 | 100,00 | 99,000000 | 96,839753 | 101,160247 | −1 | HOLD | SELL 1 @ 96,50 | −1 | 997,50 | 997,35 |
| 9 | 100,50 | 101,00 | 99,000000 | 96,839753 | 101,160247 | −1 | HOLD | — | −1 | 996,50 | 996,35 |
| 10 | 101,50 | 103,00 | 101,333333 | 100,086114 | 102,580552 | −1 | HOLD | — | −1 | 994,50 | 994,35 |
| 11 | 103,50 | 105,00 | 103,000000 | 101,367007 | 104,632993 | −1 | HOLD | — | −1 | 992,50 | 992,35 |
| 12 | 105,50 | 110,00 | 106,000000 | 103,056080 | 108,943920 | −1 | HOLD | — | −1 | 987,50 | 987,35 |
| 13 | 109,50 | 104,00 | 106,333333 | 103,708664 | 108,958003 | 0 | EXIT | — | −1 | 993,50 | 993,35 |
| 14 | 104,50 | 103,00 | 105,666667 | 102,575461 | 108,757873 | 0 | HOLD | BUY 1 @ 104,50 | 0 | 993,00 | 992,80 |
| 15 | 103,50 | 100,00 | 102,333333 | 100,633660 | 104,033007 | 0 | HOLD | — | 0 | 993,00 | 992,80 |
Qué observar:
- Barra 5 (reentrada):
C[4] = 97 < lower[4] = 97,585786yC[5] = 99 ≥ lower[5] = 97,419448. El precio salió por abajo y volvió a entrar: largo. - Barra 6:
C = 101 ≥ media = 99→ salida. Buen trade: +1,00 bruto. - Barra 7:
C[6] = 101 > upper[6]yC[7] = 96 ≤ upper[7]→ reentrada por arriba → corto. - Barras 8–12: el trade malo. El corto se abre a 96,50 y el precio sube hasta 110. En la barra 8 la condición de largo se cumple, pero se ignora porque el estado es −1: solo cuenta la salida (
C ≤ media), que no llega hasta la barra 13. - Resultado final −7,00 sin costes, −7,20 con costes: una estrategia de reversión sufre cuando el mercado se pone en tendencia.
7. Ejemplo 4 — P06, Supertrend(3, m = 1)¶
Fixture de P06.md §6: period = 3, multiplier = 1,0. Supertrend está siempre en mercado desde la primera barra válida (dirección inicial +1).
| t | O | C | banda sup. final | banda inf. final | dirección | razón | orden / fill | pos | Equity | Eq. con costes |
|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 101,50 | 102,00 | 104,000000 | 100,000000 | +1 | ENTRY | — | 0 | 1.000,00 | 1.000,00 |
| 3 | 102,50 | 103,00 | 104,000000 | 101,000000 | +1 | HOLD | BUY 1 @ 102,50 | +1 | 1.000,50 | 1.000,45 |
| 4 | 103,50 | 103,00 | 104,000000 | 101,166667 | +1 | HOLD | — | +1 | 1.000,50 | 1.000,45 |
| 5 | 102,50 | 101,00 | 104,000000 | 101,166667 | −1 | REVERSAL | — | +1 | 998,50 | 998,45 |
| 6 | 100,50 | 99,00 | 102,203704 | 96,796296 | −1 | HOLD | SELL 2 @ 100,50 | −1 | 999,50 | 999,35 |
| 7 | 98,50 | 97,00 | 100,302469 | 96,796296 | −1 | HOLD | — | −1 | 1.001,50 | 1.001,35 |
| 8 | 96,50 | 95,00 | 98,368313 | 96,796296 | −1 | HOLD | — | −1 | 1.003,50 | 1.003,35 |
| 9 | 94,50 | 95,00 | 97,412209 | 91,587791 | −1 | HOLD | — | −1 | 1.003,50 | 1.003,35 |
| 10 | 95,50 | 97,00 | 97,412209 | 93,558528 | −1 | HOLD | — | −1 | 1.001,50 | 1.001,35 |
| 11 | 97,50 | 99,00 | 97,412209 | 95,539018 | +1 | REVERSAL | — | −1 | 999,50 | 999,35 |
| 12 | 99,50 | 101,00 | 103,473988 | 97,526012 | +1 | HOLD | BUY 2 @ 99,50 | +1 | 1.000,50 | 1.000,25 |
| 13 | 101,50 | 103,00 | 103,473988 | 99,517342 | +1 | HOLD | — | +1 | 1.002,50 | 1.002,25 |
Al cierre de la barra 15 (última) la posición larga sigue abierta: equity 1.004,50 sin costes y 1.004,25 con costes (0,05 + 0,10 + 0,10).
Qué observar:
- La banda "tiene memoria". En la barra 5 la banda inferior básica sería 98,944444, pero la final se queda en 101,166667 (la de la barra 4): la banda inferior solo sube. El cierre 101 < 101,166667 → cambio a −1. Con una banda rolling sin memoria no habría habido corte en la barra 5.
- Dos reversiones con delta 2 (barras 6 y 12): comisión doble.
- La banda superior va bajando durante la caída (102,20 → 100,30 → 98,37 → 97,41): el stop "persigue" al precio hasta que en la barra 11 el cierre 99 la supera.
8. Ejemplo 5 — P11, Donchian(4, 2)¶
Fixture de P11.md §6: entry = 4, exit = 2. Los canales usan barras estrictamente anteriores (EU = máximo de high[t−4..t−1]).
| t | O | C | EU (máx 4) | EL (mín 4) | XU (máx 2) | XL (mín 2) | target | razón | orden / fill | pos | Equity | Eq. con costes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 101,20 | 102,50 | 102,50 | 99,00 | 102,50 | 99,50 | 0 | HOLD | — | 0 | 1.000,00 | 1.000,00 |
| 5 | 102,50 | 104,00 | 103,00 | 99,50 | 103,00 | 100,50 | +1 | ENTRY | — | 0 | 1.000,00 | 1.000,00 |
| 6 | 104,50 | 105,00 | 105,00 | 99,50 | 105,00 | 101,00 | +1 | HOLD | BUY 1 @ 104,50 | +1 | 1.000,50 | 1.000,45 |
| 7 | 103,50 | 102,00 | 106,00 | 100,50 | 106,00 | 102,00 | +1 | HOLD | — | +1 | 997,50 | 997,45 |
| 8 | 101,50 | 100,00 | 106,00 | 101,00 | 106,00 | 101,00 | 0 | EXIT | — | +1 | 995,50 | 995,45 |
| 9 | 99,50 | 98,00 | 106,00 | 99,00 | 104,00 | 99,00 | −1 | ENTRY | SELL 1 @ 99,50 | 0 | 995,00 | 994,90 |
| 10 | 98,50 | 97,00 | 106,00 | 97,00 | 102,00 | 97,00 | −1 | HOLD | SELL 1 @ 98,50 | −1 | 996,50 | 996,35 |
| 11 | 97,50 | 96,00 | 104,00 | 96,00 | 100,00 | 96,00 | −1 | HOLD | — | −1 | 997,50 | 997,35 |
| 12 | 96,50 | 95,00 | 102,00 | 95,00 | 99,00 | 95,00 | −1 | HOLD | — | −1 | 998,50 | 998,35 |
| 13 | 96,50 | 98,00 | 100,00 | 94,00 | 98,00 | 94,00 | −1 | HOLD | — | −1 | 995,50 | 995,35 |
| 14 | 98,50 | 100,00 | 99,00 | 94,00 | 99,00 | 94,00 | 0 | EXIT | — | −1 | 993,50 | 993,35 |
| 15 | 100,50 | 102,00 | 101,00 | 94,00 | 101,00 | 96,00 | +1 | ENTRY | BUY 1 @ 100,50 | 0 | 993,00 | 992,80 |
Qué observar:
- Barra 4: igualdad no es ruptura.
C = 102,50yEU = 102,50: "supera" exige>, así que no hay entrada. - Barra 8: salida y entrada contraria a la vez.
C = 100 < XL = 101(salida del largo) yC < EL = 101(entrada corta). Como es una estrategia desde plano, la salida gana y no se invierte en esa decisión; el corto llega en la barra 9 con su propia señal. - Barra 15: señal sin fill. Hay una entrada larga en la última barra, pero no existe
open[16]. El ledger no inventa un fill futuro: la equity final se calcula con posición 0.
9. Lo que enseñan los cinco ejemplos¶
| Receta | Fills | Deltas de 2 | Equity final sin / con costes | Estilo |
|---|---|---|---|---|
| P01 | 2 | 1 | 1.001,50 / 1.001,35 | dirección continua |
| P02 | 4 | 0 | 1.002,30 / 1.002,10 | desde plano, operaciones cortas |
| P04 | 4 | 0 | 993,00 / 992,80 | reversión, sufre en tendencia |
| P06 | 3 | 2 | 1.004,50 / 1.004,25 | siempre en mercado |
| P11 | 4 | 0 | 993,00 / 992,80 | ruptura, salida con canal corto |
Esto no dice qué estrategia es mejor
Son 16 barras sintéticas diseñadas para ejercitar casos límite (empates, reversiones, última señal). Sirven para entender la mecánica y para que los tests comprueben el código al céntimo. Para evaluar una estrategia necesitas datos reales, costes realistas y validación fuera de muestra: ver Walk-forward.
Fichas completas¶
Este capítulo solo recorre cinco recetas. La ficha completa de cada una (fórmula, parámetros, rejilla, fixture y tests) está en populares/Pxx.md (índice):
P01 · P02 · P03 · P04 · P05 · P06 · P07 · P08 · P09 · P10 · P11 · P12 · P13 · P14 · P15 · P16 · P17 · P18 · P19 · P20
Resumen¶
- Las 20 recetas P comparten tubería (features → política → ledger SIM-S) y contrato next-open: se decide al cierre de
t, se ejecuta en la apertura det+1. - Hay dos estilos: desde plano (P02, P04, P11, P16…) y dirección continua (P01, P06, P14, P18…), que produce reversiones de 2 unidades.
- P12 y P13 solo sirven en intradía NVDA/KO; en 1h con los defaults son UNSUPPORTED (30 no es múltiplo de 60).
- P16 y P18 tienen variantes nativas de Nautilus que se ejecutan y se reportan como
VARIANTcon su primera divergencia, nunca se ocultan. - Los costes importan: con 5 pb, cada fill cuesta y las reversiones pagan doble.
Para practicar¶
- En el ejemplo de P01, recalcula la EMA5 de la barra 9 a mano:
(1/3)·104 + (2/3)·100,666667. - En P04, ¿por qué la barra 8 tiene
enter_longcierto pero el objetivo sigue en −1? - En P06, calcula cuánto habría costado la barra 12 con un escenario de 10 pb.
- Ejecuta P11 con
entry = 20, exit = 20. ¿Qué error esperas y por qué? - Localiza en
docs/estrategias/P12.mdla tabla derange_minutesválidos por timeframe y explica qué candidatos quedan en 1h.