Inicio fase
|
v
Completa checklist técnico + documentación
|
v
Cumple criterios duros? (PF >= 1.10, DD <= 15%, 100+ trades) |\ | Si | v | Pasar a siguiente
fase | No | v Descartar idea o iterar solo 1 variable por vez
Si pasa X, haz Y
Si pasa X
Haz Y
No hagas
PF < 1.10 en validación
Volver a Fase 1/3, simplificar y revalidar
No pasar a dry-run
Drawdown > 15%
Bajar riesgo, stake, max_open_trades y revisar salidas
No subir capital
Backtest bueno, dry-run malo
Auditar fees, slippage, ejecución y leakage
No "ajustar a ojo" cada trade
Modelo predice casi una sola clase
Revisar target, balance de labels y features
No confiar en accuracy sola
5 perdidas seguidas en live
Parar bot y volver a paper con post-mortem
No promediar perdidas
Gráficos didácticos rápidos
Equity ideal (estable) vs sobreoptimizada (frágil)
Ideal:
crecimiento con retrocesos controlados
Sobreoptimizada: sube mucho y colapsa fuera de muestra
Matriz riesgo vs validación
Riesgo bajo + validación alta Escalar gradual
Riesgo medio + validación alta Seguir en dry-run
Riesgo alto + validación alta Reducir exposición
Riesgo bajo + validación media Iterar setup
Riesgo medio + validación media No avanzar de fase
Riesgo alto + validación media Descartar
Riesgo bajo + validación baja Rehacer validación
Riesgo medio + validación baja Descartar
Riesgo alto + validación baja Parar de inmediato
0
Fundamentos de Trading
Semanas 1-3 · 20-40 horas
Entender como funcionan los mercados
crypto, la terminologia, y los mecanismos básicos antes
de tocar una sola linea de código.
Esta fase existe para que puedas mirar un resultado de backtest o un trade y entender
si tiene sentido. Si no sabes que es spread, fee, slippage o drawdown, cualquier numero
verde en una pantalla puede enganarte. No necesitas ser trader profesional, pero si
necesitas vocabulario basico para no operar a ciegas.
Lee esta fase como si fuera un mapa del idioma del trading. No busques memorizar
todo; busca poder explicar cada concepto con tus palabras.
Cuando veas una palabra desconocida en Fase 1-5, vuelve al glosario de esta fase.
Tu primera meta no es ganar dinero; es aprender a diferenciar una idea razonable de
una fantasia peligrosa.
Que archivo usar y cuando
progress/tracker.md
Desde el dia 1
Usalo como checklist. Marca solo lo que realmente entiendes. Si marcas sin entender,
te estas quitando control de riesgo.
progress/journal.md
Cada sesion
Anota que estudiaste, que no entendiste y que investigaras despues. Este diario te
evita repetir errores y te obliga a pensar con evidencia.
plan.md
Al cerrar la fase
Revisa los criterios duros y confirma que no estas acelerando por ansiedad. El plan
define cuando avanzar y cuando detenerte.
Ruta de aprendizaje de Fase 0
Entiende como se forma un precioEmpieza
por order book, bid, ask y spread. La idea clave: no existe un precio unico perfecto;
hay compradores, vendedores y liquidez disponible.
Entiende cuanto cuesta operarCalcula fee
de entrada, fee de salida y posible slippage. Una estrategia que gana 0.15% por trade
puede perder dinero si el costo total es 0.20%.
Entiende riesgo antes que
gananciaDrawdown y perdida consecutiva importan mas que el trade
ganador aislado. Un bot puede tener muchos aciertos pequenos y una perdida grande que
destruya todo.
Haz 10 trades ficticiosNo busques
acertar. Busca practicar el proceso: razon de entrada, razon de salida, resultado y
que aprendiste. Esto entrena disciplina.
Escribe tus reglas con palabras
simplesEjemplo: "solo compro si hay tendencia, volumen y riesgo
definido". Si no puedes escribir la regla, no deberias automatizarla.
Errores comunes y como evitarlos
Saltarte esta fase porque "solo quieres programar"
Es tentador ir directo a Docker y Python, pero el bot no elimina la necesidad de
entender mercado. Si no entiendes una comision o un drawdown, puedes optimizar algo que
parece rentable pero no lo es.
Como evitarlo: antes de Fase 1, explica en tu journal que pasa si compras
con $20, pagas 0.1% al entrar, 0.1% al salir y el precio se mueve solo 0.15% a favor.
Confundir indicador con estrategia
RSI, EMA o MACD son mediciones. Una estrategia completa define entrada, salida, tamano
de posicion, stoploss, condiciones para no operar y criterios para apagar el bot.
Como evitarlo: cuando estudies un indicador, responde: que mide, cuando
falla y como lo combinaria con gestion de riesgo.
Creer promesas de rentabilidad rapida
En redes vas a ver gente prometiendo 20%, 50% o 100% mensual. Casi siempre es
marketing, survivorship bias o riesgo oculto. Con $200, tu objetivo inicial es aprender
proceso y ejecucion.
Como evitarlo: compara cualquier promesa con la tabla de retornos
realistas. Si parece demasiado bueno, tratalo como senal de alerta.
No documentar lo que aprendes
Si no escribes, no puedes distinguir aprendizaje real de sensacion de avance. En
trading, la memoria suele justificar malas decisiones despues de perder.
Como evitarlo: usa `progress/journal.md` incluso para conceptos. Anota
dudas como "no entiendo slippage" y vuelve a ellas.
Checkpoint para avanzar
Vocabulario minimoPuedes explicar order book,
bid, ask, spread, fee y slippage sin mirar definiciones.
Riesgo basicoPuedes explicar drawdown y por que
una perdida grande importa mas que varios trades pequenos ganadores.
Practica manualTienes 10 trades ficticios
escritos con razon de entrada y salida.
DisciplinaNo has depositado dinero real todavia.
Glosario de Fase 0
Order bookLista de ordenes de compra y
venta pendientes. Muestra liquidez disponible a distintos precios.
BidPrecio maximo que compradores estan
dispuestos a pagar en ese momento.
AskPrecio minimo al que vendedores estan
dispuestos a vender en ese momento.
SpreadDiferencia entre bid y ask. Es un
costo implicito de operar.
SlippageDiferencia entre precio esperado
y precio real de ejecucion. Aumenta con baja liquidez o alta volatilidad.
Market orderOrden que compra/vende al
mejor precio disponible ahora. Ejecuta rapido, pero puede sufrir slippage.
Limit orderOrden con precio
maximo/minimo definido. Controla precio, pero puede no ejecutarse.
OHLCVOpen, High, Low, Close, Volume.
Datos básicos de cada vela.
TimeframeDuracion de cada vela: 1m, 5m,
1h, 4h, etc. Cambia el ruido y frecuencia de senales.
FeeComision cobrada por el exchange. En
Binance spot suele rondar 0.1% por lado.
DrawdownCaida desde el pico de capital
hasta un minimo posterior. Mide dolor/riesgo de una estrategia.
Profit FactorGanancia bruta dividida
entre perdida bruta. Mayor a 1 significa que gana mas de lo que pierde, pero no basta
solo.
1
Freqtrade + Estrategia sin ML
Semanas 4-7 · 30-50 horas
Tener Freqtrade corriendo en Docker,
entender su arquitectura, y crear/backtestear la estrategia 📄 EmaCrossRsi.py
Archivos del proyecto
docker-compose.yml
Orquestacion Docker: Freqtrade + FreqUI en puerto 8080
No estas intentando crear una estrategia ganadora todavia. Estas aprendiendo a correr
Freqtrade, descargar datos, entender una estrategia simple y evaluar resultados sin
enganarte. `EmaCrossRsi.py` es una baseline: una referencia para comparar, no una
promesa de rentabilidad.
Si algo falla en Docker o config, arreglalo aqui antes de tocar ML. FreqAI depende
de que esta base funcione.
Si el backtest sale muy bueno, sospecha primero. Resultados exagerados suelen
indicar sobreoptimizacion, periodo favorable o pocos trades.
Tu foco debe estar en reproducibilidad: que puedas correr el mismo comando y obtener
un resultado rastreable.
Que archivo usar y cuando
docker-compose.yml
Inicio de fase
Define como se ejecuta Freqtrade dentro de Docker. Tocalo solo si necesitas cambiar
config/strategy por defecto o puertos.
config/config-backtest.json
Antes de backtestear
Controla stake, pares, fee, exchange y formato de datos. Aqui verificas que el
backtest se parezca al capital real esperado.
scripts/download_data.ps1
Antes de cualquier backtest
Descarga velas historicas. Si no hay datos o son insuficientes, el backtest no vale.
strategies/EmaCrossRsi.py
Al aprender estrategia
Lee `populate_indicators`, `populate_entry_trend` y `populate_exit_trend`. Eso te
ensena donde se calculan indicadores y donde se definen senales.
scripts/backtest.ps1
Para evaluar
Corre train, validation y final-test. No uses solo un periodo porque puedes ajustar
sin darte cuenta al pasado.
progress/tracker.md
Al cerrar la fase
Registra PF, drawdown, numero de trades y si realmente entiendes el resultado.
Ruta de ejecucion recomendada
Inicializa entornoEjecuta `docker
compose run --rm freqtrade create-userdir --userdir /freqtrade/user_data`. Esto crea
estructura interna para datos, logs y resultados.
Descarga datosEjecuta
`./scripts/download_data.ps1`. Revisa que aparezcan archivos en
`user_data/data/binance/`. Sin datos no hay backtest confiable.
Lee la estrategia antes de correrlaAbre
`strategies/EmaCrossRsi.py`. Entiende que columnas agrega y bajo que condiciones pone
`enter_long=1` o `exit_long=1`.
Corre backtest completoEjecuta
`./scripts/backtest.ps1`. Mira train, validation y final-test. El resultado importante
no es el mejor periodo, sino la consistencia.
Documenta numerosAnota Profit Factor,
drawdown, trades, win rate y comentarios en `progress/tracker.md`. Si no esta
documentado, no cuenta.
En que poner foco al leer EmaCrossRsi.py
Parte
Que significa
Por que importa
`timeframe = "1h"`
Cada vela representa 1 hora.
Define frecuencia de senales. Timeframes bajos tienen mas ruido y costos.
`stoploss = -0.05`
Si el trade cae 5%, se cierra.
Limita perdida por trade, aunque puede ejecutarse peor si hay gaps/slippage.
`minimal_roi`
Objetivos de ganancia por tiempo.
Define cuando tomar ganancias aunque no haya senal de salida.
`populate_indicators`
Calcula EMA, RSI, ATR, volumen.
Sin estas columnas no existen condiciones de entrada/salida.
`populate_entry_trend`
Marca compras.
Aqui se decide cuando el bot puede abrir un trade.
`populate_exit_trend`
Marca ventas.
Aqui se decide cuando salir por senal, aparte de stoploss/ROI.
Errores comunes y como evitarlos
Creer que un backtest positivo ya valida una
estrategia
Un backtest es una simulacion historica. Puede estar bien hecho y aun asi fallar en
vivo porque el mercado cambio, porque hubo sobreoptimizacion o porque las condiciones de
ejecucion real difieren.
Como evitarlo: exige validation/final-test, minimo 100 trades historicos
y dry-run posterior. Nunca saltes de backtest a live.
Mirar solo Profit Factor
PF alto con pocos trades puede ser casualidad. PF alto con drawdown enorme puede ser
psicologicamente imposible de operar. PF alto en un solo par puede ser curve fitting.
Como evitarlo: mira PF junto con drawdown, numero de trades, pares,
periodo, win rate y expectativa por trade.
Optimizar parametros demasiado pronto
Hyperopt o cambios manuales pueden encontrar combinaciones que funcionaron por
casualidad en el pasado. Eso no significa que exista una ventaja real.
Como evitarlo: cambia una cosa por vez, documenta hipotesis antes de
probar y protege un final-test que no toques.
No entender stake y capital
`stake_amount` define cuanto usa el bot por trade. Si backtest usaba unlimited y
dry-run usa 20 USDT, estas comparando cosas distintas.
Como evitarlo: usa stake fijo parecido al capital real esperado y revisa
que backtest/dry-run/live sean comparables.
Checkpoint para avanzar
InfraestructuraDocker corre y Freqtrade ejecuta
comandos sin errores.
DatosDescargaste datos suficientes para los pares
y timeframes definidos.
CódigoPuedes explicar que hace cada metodo
principal de `EmaCrossRsi.py`.
ValidaciónTienes resultados train, validation y
final-test documentados.
RiesgoDrawdown <= 15% y muestra historica con
100+ trades antes de confiar.
Glosario de Fase 1
FreqtradeFramework open-source para
crear, backtestear y ejecutar bots de trading.
StrategyClase Python que define
indicadores, entradas, salidas y reglas de riesgo.
BacktestSimulacion de una estrategia
usando datos historicos.
TrainPeriodo usado para explorar o
ajustar una idea.
ValidationPeriodo posterior usado para
ver si la idea generaliza mejor.
Final-testPeriodo intocable. Solo se
mira al final para decidir si descartar o seguir.
EMAMedia movil exponencial. Da mas
peso a precios recientes para estimar tendencia.
RSIIndicador de momentum que intenta
medir sobrecompra/sobreventa.
ATRIndicador de rango/volatilidad.
Aqui se usa para evitar volatilidad extrema.
Stake amountCantidad que el bot
arriesga/usa por trade.
enter_tag / exit_tagTexto guardado
para saber por que entro o salio un trade.
OverfittingAjustar tanto al pasado que
la estrategia deja de funcionar en datos nuevos.
2
Fundamentos de ML
Semanas 8-12 · 40-60 horas
Aprender Machine Learning suficiente
para usarlo con criterio. No necesitas un master, pero si entender que hace y que
NO hace.
contenido1. Cargar datos OHLCV (reales o sinteticos)
2. Feature Engineering: retornos, EMAs, RSI, volatilidad, volumen relativo
3. Definir target: "sube >1% en 4 velas?"
4. Walk-Forward Split con TimeSeriesSplit (NUNCA random)
5. Entrenar LightGBM y evaluar por fold
6. Feature Importance: que features importan realmente
7. Simulacion P&L: convertir predicciones en ganancias/perdidas
Como usar esta fase en la practica
Objetivo real de Fase 2
Machine Learning no es una caja magica que predice precios. En este proyecto, ML
sirve para aprender a transformar datos en features, definir un target, entrenar un
modelo y evaluar si agrega valor. Lo mas importante no es lograr accuracy alta: es
evitar errores de validación que te hagan creer que tienes una ventaja cuando no la
tienes.
Si no entiendes que es train/test temporal, no pases a FreqAI.
Si el modelo acierta 52%, eso no significa automaticamente que gane dinero. Debes
mirar fees, slippage, numero de trades y expectativa.
El notebook es educativo; la validación operativa real se hace despues con
Freqtrade.
Que archivo usar y cuando
notebooks/ml_fundamentals.ipynb
Durante toda la fase
Es el laboratorio para aprender features, target, entrenamiento y metricas. No lo
uses para decidir live; usalo para entender conceptos.
user_data/data/binance/*.feather
Antes de entrenar
Son datos reales descargados por Freqtrade. Siempre prioriza datos reales sobre
sinteticos.
progress/journal.md
Cada experimento
Anota feature usada, target elegido, resultado, duda y conclusion. En ML, sin
registro, los experimentos se vuelven ruido.
strategies/FreqaiLightgbm.py
Despues del notebook
No lo modifiques aun. Solo miralo para reconocer conceptos: features `%`, target
`&`, pipeline FreqAI.
Ruta de aprendizaje de ML para este proyecto
Carga datos realesEjecuta el notebook
y confirma si carga `BTC_USDT-1h.feather`. Si cae en datos sinteticos, entiende que
eso solo sirve para practicar código.
Crea features simplesFeatures son
columnas que describen el mercado: retornos, ratios de EMA, RSI, volatilidad,
volumen relativo. Evita empezar con 200 columnas.
Define target entendibleEjemplo: "el
precio sube mas de 1% en 4 velas". Si no entiendes que estas intentando predecir, no
puedes evaluar el modelo.
Separa tiempo correctamenteEntrena con
pasado y evalua con futuro. Nunca mezcles filas aleatoriamente porque en trading eso
filtra informacion del futuro.
Evalua trading, no solo MLAccuracy,
precision y recall ayudan, pero lo que importa para trading es profit factor,
drawdown, trades y expectativa por trade.
Que mirar dentro del notebook
Seccion
Que aprender
Senal de que entendiste
Carga de datos
Diferencia entre datos reales y sinteticos.
Sabes ubicar archivos `.feather` y sabes por que sintetico no valida trading.
Feature engineering
Convertir OHLCV en variables que el modelo pueda usar.
Puedes explicar por que retorno/ratio generaliza mejor que precio absoluto.
Target
Definir que intenta predecir el modelo.
Puedes explicar horizonte, umbral y distribucion de clases.
Walk-forward
Validación temporal sin mezclar futuro.
Puedes dibujar train -> test en orden cronologico.
Metricas
Diferencia entre metrica ML y metrica de trading.
No dices "accuracy 55% = rentable" sin revisar P&L.
Errores comunes y como evitarlos
Look-ahead bias
Ocurre cuando el modelo ve informacion del futuro aunque no parezca obvio. Ejemplo:
usar una columna calculada con datos futuros, normalizar usando todo el dataset o
mezclar aleatoriamente filas temporales.
Como evitarlo: toda transformacion debe poder calcularse con
informacion disponible hasta ese momento. Usa splits temporales y revisa `shift(-n)`
solo para targets, nunca para features.
Random split en series temporales
En datos normales a veces se mezclan filas al azar. En trading eso es peligroso
porque el modelo entrena con informacion de periodos posteriores y evalua en periodos
anteriores.
Como evitarlo: usa walk-forward o TimeSeriesSplit. Siempre piensa:
entreno con pasado, pruebo en futuro.
Usar accuracy como unica verdad
Un modelo puede acertar muchas veces movimientos pequenos y perder mucho en pocos
movimientos grandes. Accuracy no incluye comisiones, slippage ni tamano de perdida.
Como evitarlo: mira profit factor, max drawdown, numero de trades,
retorno promedio por trade y expectativa.
Target desbalanceado
Si tu target positivo ocurre solo 3% del tiempo, un modelo que siempre predice "no"
puede verse bien en accuracy pero no sirve para operar.
Como evitarlo: revisa `value_counts(normalize=True)` del target y
pregunta si ambas clases tienen suficiente representacion.
Checkpoint para avanzar
Datos realesEjecutaste notebook con datos
descargados por Freqtrade, no solo sinteticos.
Target claroPuedes explicar que significa clase
1 y clase 0.
Validación temporalEntiendes por que random
split no aplica aqui.
Metricas de tradingPuedes leer PF, DD y
expectativa sin depender solo de accuracy.
Glosario de Fase 2
Machine LearningConjunto de tecnicas
donde un modelo aprende patrones desde datos en lugar de reglas escritas a
mano.
FeatureColumna de entrada para el
modelo. Ejemplo: retorno 4h, RSI, volatilidad.
Target / LabelLo que el modelo intenta
predecir. En este caso puede ser si el precio sube mas de cierto umbral.
Train setDatos usados para entrenar el
modelo.
Test setDatos usados para evaluar el
modelo despues de entrenar.
Walk-forwardValidación que respeta el
tiempo: entrenar con pasado, probar con futuro, avanzar ventana y repetir.
AccuracyPorcentaje de predicciones
correctas. Util pero insuficiente en trading.
PrecisionDe las veces que el modelo
dijo "si", cuantas fueron correctas.
RecallDe los casos positivos reales,
cuantos encontro el modelo.
LightGBMModelo de arboles muy usado
para datos tabulares. Rapido y potente, pero puede sobreajustar.
OverfittingCuando el modelo aprende
ruido del pasado y falla en datos nuevos.
Class imbalanceCuando una clase
aparece mucho mas que otra. Puede hacer que metricas se vean mejor de lo que
son.
3
FreqAI - ML Integrado
Semanas 13-18 · 50-70
horas
Integrar modelos ML en Freqtrade
usando FreqAI. Pipeline completo: features → training → prediction →
signal.
Archivos del proyecto
strategies/FreqaiLightgbm.py
Estrategia ML clasificador: features %, target &s-up_or_down,
do_predict y filtro técnico
Ejecuta backtest con FreqAI (30-60 min). Usa LightGBMClassifier.
Tareas
Pipeline FreqAI en tu estrategia
pipelineFreqaiLightgbm.py:
feature_engineering_expand_all() → features tecnicas x periodos/timeframes/shifts
feature_engineering_expand_basic() → features basicas no periodicas (retorno, volumen, vela verde)
feature_engineering_standard() → features temporales no expandidas (hora, dia)
set_freqai_targets() → target clasificador &s-up_or_down: up/down
config-backtest-freqai.json:
train_period_days: 90 → Entrena con 90 dias de datos
backtest_period_days: 7 → Valida cada 7 dias
live_retrain_hours: 168 → Re-entrena cada 7 dias en vivo
DI_threshold: 0.9 → Filtra datos muy diferentes al training
use_SVM_to_remove_outliers → Limpia outliers antes de entrenar
Flujo FreqAI (de datos a trade)
Datos OHLCV crudos
-> features (%) por timeframe y periodo
-> target (&) bien definido
-> entrenamiento del modelo
-> prediccion (do_predict + score)
-> filtro técnico de estrategia
-> señal final
-> orden ejecutada
-> journal (entry_tag/exit_tag + resultado)
Ejemplos visuales de errores frecuentes
Error
Como se ve
Que hacer
Overfitting
Train PF alto, final-test mediocre
Reducir parametros, agregar final-test intocable
Look-ahead bias
Resultados irreales y demasiado estables
Revisar features/targets para evitar uso de futuro
Demasiadas features
Importancia dispersa, ruido alto, poca mejora
Empezar con set pequeno y agregar solo si mejora
Backtest bueno, dry-run malo
Divergencia de P&L y drawdown
Auditar fees, slippage, latencia y calidad de datos
Como usar esta fase en la practica
Objetivo real de Fase 3
Aqui conviertes lo aprendido en Fase 2 en una estrategia Freqtrade con FreqAI. La
meta no es "usar ML porque suena avanzado". La meta es demostrar que ML mejora algo
medible frente a la baseline: menos drawdown, mejor profit factor, menos trades malos
o mejor expectativa.
FreqAI debe ser tratado como una capa de validación adicional, no como piloto
automatico.
Si el modelo no supera la baseline, no pasa nada: se documenta y se descarta o se
usa solo como filtro.
Cada cambio en features, target o config debe tener nuevo `identifier` para no
mezclar modelos viejos con experimentos nuevos.
Que archivo usar y cuando
strategies/FreqaiLightgbm.py
Centro de la fase
Define features `%`, target `&`, setup técnico y como ML confirma entradas/salidas.
Leelo metodo por metodo.
config/config-backtest-freqai.json
Antes de correr ML
Controla ventanas de entrenamiento, timeframes, pares correlacionados, periodos de
indicadores, identifier y parametros del modelo.
scripts/backtest_freqai.ps1
Para comparar
Corre FreqAI y baseline en el mismo timerange. Genera resumen para que no aceptes
ML sin evidencia.
user_data/models/
Despues de correr
Carpeta donde FreqAI guarda modelos. Si cambias experimento y no cambias
identifier, puedes mezclar modelos.
progress/reports/
Runtime-generated
Se crea al correr `scripts/backtest_freqai.ps1` y guarda resumen ML vs baseline. No
falta si aun no corriste el script.
Ruta de ejecucion recomendada
Revisa version y documentación
FreqAIFreqAI cambia con el tiempo. Antes de confiar, verifica que los
nombres de columnas y hooks usados coinciden con tu version instalada.
Descarga datos extraFreqAI necesita
datos previos para entrenar ventanas. Si backtesteas 2024, necesitas datos antes de
2024 para cubrir `train_period_days` y `startup_candle_count`.
Define un experimento pequenoNo
cambies 10 cosas a la vez. Ejemplo: identifier `lightgbm_v2_rsi_ema_target1p_4h`.
Asi sabes que probaste.
Corre comparacion automaticaEjecuta
`./scripts/backtest_freqai.ps1`. Si ML no mejora algo frente a `EmaCrossRsi`, no hay
razon para agregar complejidad.
Documenta por que gana o pierdeSi ML
reduce trades malos pero baja retorno, podria ser util como filtro. Si mejora solo
en train y cae en final-test, descartalo.
En que poner foco al leer FreqaiLightgbm.py
Metodo / concepto
Que hace
Como interpretarlo
`feature_engineering_expand_all`
Crea features para varios periodos.
FreqAI multiplica estas features por timeframes, periodos y shifts. Pocas
columnas pueden crecer rapido.
`feature_engineering_expand_basic`
Crea features sin periodo, como retorno actual o cambio de volumen.
Se expande por timeframe/shift; no pongas aqui hora/dia si no quieres expansion
innecesaria.
`feature_engineering_standard`
Crea features que no se autoexpanden, como hora y dia.
Es el lugar recomendado para features temporales simples.
`set_freqai_targets`
Define que el modelo intenta predecir.
Es una de las decisiones mas importantes. Target mal definido = modelo inutil.
`self.freqai.start`
Activa pipeline de FreqAI.
Entrena o carga modelo, genera predicciones y columnas auxiliares.
`do_predict`
Indica si FreqAI considera confiable predecir.
Si FreqAI dice no predecir, la estrategia deberia no operar.
`enter_tag`
Etiqueta motivo de entrada.
Te permite auditar si entro por setup técnico + ML o por otra razon.
Errores comunes y como evitarlos
Agregar demasiadas features demasiado pronto
FreqAI expande features por periodos, timeframes, shifts y pares correlacionados. Lo
que parece 6 features puede convertirse en decenas o cientos. Mas features pueden
aumentar ruido y sobreajuste.
Como evitarlo: empieza pequeno, mide mejora real y elimina features que
no aportan. Si una feature no puedes explicarla, no la uses en live.
No comparar contra baseline
Si ML no supera una estrategia simple, la complejidad extra no se justifica. ML puede
hacer el sistema mas fragil, mas lento y mas dificil de auditar.
Como evitarlo: usa `scripts/backtest_freqai.ps1`, revisa el resumen y
exige mejora concreta: PF, DD, expectativa o calidad de trades.
Target mal balanceado
Si el target positivo casi nunca ocurre, el modelo puede aprender a decir siempre
"no". Si ocurre casi siempre, puede decir siempre "si". Ambos casos pueden dar
metricas enganadoras.
Como evitarlo: revisa distribucion de labels antes de confiar. Si una
clase domina demasiado, ajusta horizonte o umbral.
Reutilizar identifier sin querer
FreqAI usa `identifier` para guardar y reutilizar modelos. Si cambias features pero
mantienes el mismo identifier, puedes mezclar resultados y perder trazabilidad.
Como evitarlo: cambia identifier por cada experimento importante o
limpia modelos antiguos conscientemente.
Creer que ML debe decidir todo
Un modelo puede predecir subida en condiciones tecnicas malas. En trading, muchas
predicciones estadisticas pequenas se destruyen con costos y ruido.
Como evitarlo: usa ML como filtro sobre una condicion tecnica clara.
Eso reduce trades absurdos y mejora auditabilidad.
Checkpoint para avanzar
PipelinePuedes explicar datos -> features ->
target -> modelo -> prediccion -> trade.
IdentifierCada experimento importante tiene
identificador distinto.
ComparacionFreqAI fue comparado contra baseline
en el mismo periodo.
LabelsRevisaste distribucion de clases y no hay
degeneracion extrema.
DecisionSabes si ML mejora algo o si debe
descartarse.
Glosario de Fase 3
FreqAIModulo de Freqtrade para
integrar entrenamiento e inferencia ML dentro del bot.
IdentifierNombre del
experimento/modelo usado por FreqAI para guardar y reutilizar artefactos.
Feature `%`Columna que FreqAI usa como
entrada del modelo. Debe empezar con `%`.
Target `&`Columna que FreqAI intenta
predecir. Debe empezar con `&`.
InferenceMomento en que el modelo ya
entrenado genera predicciones.
RetrainReentrenar el modelo con datos
recientes para adaptarse al mercado.
DI thresholdFiltro de disimilitud.
Ayuda a detectar datos actuales muy distintos al entrenamiento.
OutlierDato raro o extremo que puede
distorsionar el entrenamiento.
BaselineEstrategia simple de
referencia contra la que comparas ML.
Feature importanceMedida aproximada de
cuanto usa el modelo cada feature.
Probability thresholdUmbral minimo de
confianza antes de aceptar una prediccion.
Modelo degeneradoModelo que predice
casi siempre lo mismo y parece funcionar por metrica enganosa.
4
Paper Trading
Semanas 19-30 · 8-12
semanas obligatorias
No negociable: NO poner dinero real hasta completar esta
fase. Minimo 8 semanas de dry-run (ideal 12) con datos de mercado reales.
Archivos del proyecto
config/config-dryrun.json
dry_run: true, wallet $200, stake $20/trade, API server en :8080,
max 3 trades
scripts/dryrun.ps1
Inicia paper trading. FreqUI en http://localhost:8080
progress/journal.md
Diario de trading con plantilla para cada trade y sesion
Tareas
Errores comunes
Paper trading solo 1-4 semanas
Para FreqAI es poco. Usa 8 semanas minimo (ideal 12) para ver degradacion del modelo.
Ignorar divergencias backtest vs paper
Si backtest = +10% y paper = -5%, hay bug o overfitting. No racionalices, investiga.
No tener reglas de apagado
Define kill switch antes de live: DD mensual >5%, 5 perdidas seguidas o errores
repetidos de API.
Bloques de accion (si X entonces Y)
Evento
Accion inmediata
Accion siguiente
Dry-run DD supera 10%
Bajar stake y max_open_trades
Revisar salidas y filtros
Dry-run DD supera 15%
Parar bot
Volver a backtest y validar nuevamente
Diferencia paper vs backtest > 30%
Congelar cambios
Auditar fees/slippage/data leakage
5 losses seguidas
Parar 24h
Analizar regimen y señales de entrada
Como usar esta fase en la practica
Objetivo real de Fase 4
Paper trading no es un tramite. Es la primera vez que el bot vive con mercado real,
latencia real, velas nuevas, API, logs, FreqUI, alertas y comportamiento continuo.
Aunque no usa dinero real, si revela problemas que el backtest no muestra.
No cambies la estrategia durante el periodo de evaluacion. Si la cambias, reinicia
el conteo porque ya no estas midiendo lo mismo.
El objetivo es comparar expectativa del backtest contra comportamiento en tiempo
real. No busques "salvar" cada trade malo.
Documenta fallos técnicos tambien: reinicios, errores de API, problemas de
Telegram, desconexiones o trades que no entiendes.
Que archivo usar y cuando
config/config-dryrun.json
Antes de iniciar
Define wallet ficticio, stake, pares, protecciones, API server y Telegram. Debe
parecerse lo mas posible al futuro live.
scripts/dryrun.ps1
Para arrancar el bot
Ejecuta Freqtrade en dry-run y lanza warnings si Telegram o credenciales parecen
mal configuradas.
progress/journal.md
Diario / por trade
Registra trades, entry_tag, exit_tag, spread estimado, fee, slippage y condicion de
mercado.
progress/tracker.md
Cada semana
Actualiza semanas completadas, trades, win rate, P&L y drawdown. Esto decide si
puedes avanzar.
FreqUI
Monitoreo
Dashboard en `http://localhost:8080`. Revisa trades abiertos, logs, estado del bot
y operaciones recientes.
Rutina semanal recomendada
Dia 1: arranque controladoInicia con
`./scripts/dryrun.ps1`, abre FreqUI y confirma que el bot esta vivo, conectado y sin
errores repetidos.
Diario: revisar sin intervenirMira
estado, trades y alertas. No cambies parametros por un trade malo. Solo
documenta.
Cada trade cerradoRegistra par,
entrada, salida, P&L, entry_tag, exit_tag y si la razon coincide con lo
esperado.
Cierre semanalCalcula trades, P&L, DD,
win rate y divergencia contra backtest. Escribe conclusion: continuar, observar o
pausar.
Semana 8/12: decisionSi no hay
suficientes trades o hay divergencia fuerte, no avances. Extiende dry-run o vuelve a
Fase 3.
Que mirar en config-dryrun.json
Campo
Que controla
Recomendacion
`dry_run`
Garantiza que no usa dinero real.
Debe estar en `true` durante toda Fase 4.
`dry_run_wallet`
Capital ficticio.
Usa monto parecido a tu capital real planeado.
`stake_amount`
Monto por trade.
Debe ser conservador y comparable con backtest.
`max_open_trades`
Trades simultaneos maximos.
Con poco capital, mantener bajo para no sobreexponer.
`strategy.protections`
Reglas de pausa automatica definidas dentro de la estrategia.
Probarlas en dry-run y backtest con `--enable-protections` antes de live.
`telegram`
Alertas externas.
Idealmente activo para corridas prolongadas.
Errores comunes y como evitarlos
Tratar dry-run como demo sin importancia
Dry-run es donde validas si el bot puede vivir fuera del backtest. Si no lo tomas en
serio, pasaras a live con problemas no detectados.
Como evitarlo: define horario de revision, documenta cada semana y no
avances sin 8 semanas minimo.
Cambiar estrategia durante la prueba
Si cambias parametros despues de cada perdida, ya no estas evaluando una estrategia.
Estas persiguiendo ruido emocional.
Como evitarlo: congela estrategia al inicio. Si detectas un bug grave,
paras, corriges y reinicias periodo de evaluacion.
No comparar contra backtest
Dry-run puede ganar o perder por condiciones de mercado recientes. Lo importante es
si su comportamiento se parece al esperado: frecuencia, DD, tipo de trades y reaccion
ante volatilidad.
Como evitarlo: cada semana compara contra backtest en rango similar y
anota divergencias.
No tener alertas
Un bot puede quedar corriendo con errores, desconexion o comportamiento raro mientras
no estas mirando. En live esto puede costar dinero.
Como evitarlo: configura Telegram y verifica que recibes startup,
warning, entry y exit.
Checkpoint para avanzar
Tiempo8 semanas minimo completadas, ideal 12 si
usas FreqAI.
Muestra50 trades minimo, ideal 100+ para
evaluar con menos ruido.
RiesgoDrawdown maximo no supera 15% y no rompe
reglas de apagado.
ConsistenciaDry-run no difiere demasiado del
backtest.
OperativaTelegram, FreqUI, logs y journal
funcionan sin friccion.
Glosario de Fase 4
Dry-runModo de Freqtrade que simula
trading con dinero ficticio en mercado real.
Paper tradingOperacion simulada sin
dinero real. Sirve para validar ejecucion y comportamiento.
FreqUIInterfaz web de Freqtrade para
ver estado del bot, trades y logs.
ProtectionsReglas que pausan
operaciones bajo condiciones de riesgo, como drawdown o pares malos.
CooldownPeriodProteccion que espera un
tiempo despues de operar antes de volver a entrar.
StoplossGuardProteccion que pausa si
hay demasiados stoploss en una ventana.
MaxDrawdownProteccion que pausa si el
drawdown supera un limite.
LowProfitPairsProteccion que pausa
pares que vienen teniendo mal rendimiento.
DivergenciaCuando dry-run se comporta
muy distinto al backtest esperado.
Kill switchRegla definida de antemano
para apagar el bot sin debatir emocionalmente.
5
Trading Real
Semanas 31+ ·
Micro-capital
DINERO REAL
Empieza con $50 o $100, NO con todo el capital. Si funciona varias semanas con DD
controlado, evalua escalar.
API keys solo con permisos de trading, NUNCA de retiro.
Si el drawdown mensual supera 5%, PARAR y regresar a Fase 3 o 4.
Archivos del proyecto
config/config-live.example.json
Template: copiar como config-live.json y agregar API keys. Incluye
bloque FreqAI opcional, Telegram y arranque en stopped. Las protecciones viven en la estrategia.
scripts/live.ps1
Requiere escribir I_ACCEPT_REAL_MONEY_RISK y valida placeholders,
Telegram e initial_state.
Tareas
Comandos
powershell# 1. Copiar template de config
copy config\config-live.example.json config\config-live.json
# 2. Editar config-live.json: agregar API keys, cambiar passwords
# 3. Iniciar trading real (requiere confirmacion)
.\scripts\live.ps1
# 4. Configurar alertas Telegram (obligatorio para live en este plan)
# Editar "telegram" block en config-live.json
Objetivo real de esta fase
Capital real esperado
Empieza con $50 o $100. El objetivo es validar ejecucion real, no maximizar
ganancias.
No pases a $200 hasta demostrar estabilidad real y DD mensual menor a 5%.
Si live rompe las metricas del dry-run, vuelve a Fase 4.
Como usar esta fase en la practica
Objetivo real de Fase 5
Live no es "ahora si a ganar". Live es una prueba de ejecucion real con riesgo
controlado. Aqui aparecen diferencias que dry-run no puede simular perfecto: fill
real, micro-slippage, latencia, estado de API, errores del exchange y presion
emocional porque el dinero ya es real.
El primer objetivo es no romper el sistema, no maximizar retorno.
Si live difiere fuerte de dry-run, paras y vuelves a Fase 4.
Si rompes una regla de apagado, no negocies contigo mismo: apaga el bot.
Que archivo usar y cuando
config/config-live.example.json
Antes de live
Plantilla segura. Copiala como `config-live.json` y completa API keys, Telegram,
password y secretos.
config/config-live.json
Archivo real local
No se sube a Git. Contiene secretos. Debe tener `initial_state: stopped` y API sin
permisos de retiro.
scripts/live.ps1
Unico arranque live
Ejecuta validaciónes estrictas antes de iniciar. Si falla, no intentes saltarlo:
corrige configuracion.
progress/journal.md
Cada trade real
Registra trade real con mas detalle que en dry-run: fee, slippage, spread, tag,
modelo y estado emocional si aplica.
progress/tracker.md
Cada semana live
Decide si continuar, pausar o escalar. No escales por intuicion.
Ruta segura para iniciar live
Verifica que cumpliste Fase 48-12
semanas, 50+ trades, drawdown controlado, Telegram activo, divergencia aceptable
contra backtest.
Crea config-live.jsonCopia el example.
Nunca edites el example con secretos reales. `config-live.json` esta ignorado por
Git.
Configura API sin retiroEn Binance, la
API debe permitir trading spot, pero nunca retiros. Si una API puede retirar, es
demasiado peligrosa.
Activa TelegramDebes recibir alertas
de startup, warning, entry y exit. Si no recibes alertas, no inicies live.
Ejecuta live.ps1El script debe pasar
validaciónes y pedir `I_ACCEPT_REAL_MONEY_RISK`. Si falla por placeholder,
corrige.
Arranca en stopped`initial_state` debe
estar en `stopped` para que puedas revisar FreqUI antes de permitir
operaciones.
Que mirar en config-live.json
Campo
Que controla
Regla
`dry_run`
Define si opera ficticio o real.
En live sera `false`; por eso todo lo demas debe estar validado.
`exchange.key/secret`
Credenciales Binance.
Sin permisos de retiro. Idealmente API dedicada solo para este bot.
`stake_amount`
Capital por trade.
Empieza pequeno. No uses todo el capital por operacion.
`tradable_balance_ratio`
Porcentaje del balance disponible para operar.
Mantener conservador para no comprometer todo.
`initial_state`
Si el bot arranca operando o detenido.
Debe estar `stopped` para control manual inicial.
`telegram.enabled`
Alertas.
Debe estar `true` antes de live.
`strategy.protections`
Guardrails automaticos definidos dentro de la estrategia.
Deben haber sido probados en dry-run y backtest con `--enable-protections`.
Errores comunes y como evitarlos
Empezar con todo el capital
El primer live puede revelar fallos de ejecucion, configuracion o comportamiento. Si
empiezas con todo, un error pequeno se vuelve caro.
Como evitarlo: usa $50-$100, stake bajo y max_open_trades limitado.
Escalar es una decision posterior, no inicial.
Operar sin Telegram
Si algo falla y no te enteras, pierdes control. En live necesitas alertas de
entradas, salidas, warnings y estado.
Como evitarlo: antes de live, confirma que Telegram envia mensajes
reales. `scripts/live.ps1` bloquea si no esta activo.
Ignorar initial_state
Si el bot arranca operando inmediatamente, puedes entrar al mercado antes de revisar
FreqUI o confirmar que todo esta correcto.
Como evitarlo: mantener `initial_state: stopped`, abrir FreqUI, revisar
config y arrancar manualmente cuando estes listo.
No respetar kill switch
El mayor riesgo en live es justificar excepciones: "solo una vez mas", "seguro se
recupera". Eso convierte un sistema en una apuesta emocional.
Como evitarlo: escribe tus reglas de apagado antes de iniciar. Si se
cumplen, apaga sin debatir.
Reglas de apagado recomendadas
Evento
Accion
Motivo
Drawdown mensual > 5%
Parar live
Con capital pequeno, la prioridad es preservar y aprender.
5 perdidas consecutivas
Pausar y revisar regimen
Puede indicar mercado incompatible o bug de senal.
Errores repetidos de API/exchange
Parar hasta resolver
Un bot con ejecucion inestable no debe operar dinero real.
Live difiere fuerte de dry-run
Volver a Fase 4
La hipotesis de ejecucion real no se esta cumpliendo.
Modelo predice casi siempre igual
Parar estrategia ML
Puede haber degeneracion del modelo o target mal calibrado.
Checkpoint para operar y escalar
Seguridad APIAPI sin retiro, secretos fuera de
Git y password cambiado.
AlertasTelegram activo y probado antes de
operar.
CapitalInicio con $50-$100 y stake conservador.
Control`initial_state` en stopped y FreqUI
revisado antes de arrancar.
EscaladoSolo subir capital tras semanas reales
estables y journal completo.
Glosario de Fase 5
Live tradingOperacion con dinero real
en el exchange.
API keyCredencial que permite al bot
comunicarse con Binance.
SecretParte privada de la API. Nunca
debe subirse a Git ni compartirse.
Permiso de retiroPermiso para sacar
fondos. Debe estar desactivado siempre para bots.
Initial stateEstado inicial del bot al
arrancar. `stopped` significa que no opera hasta activarlo.
Tradable balance ratioPorcentaje del
balance que el bot puede usar para operar.
Micro-capitalMonto pequeno usado para
validar ejecucion real antes de escalar.
Slippage realDiferencia real entre
precio esperado y ejecutado en live.
LatencyTiempo entre senal, envio de
orden y ejecucion.
Escalar capitalAumentar dinero operado
solo despues de evidencia estable.
Retornos realistas (% mensual)
Se brutalmente honesto contigo
mismo al leer esto.
Escenario
Retorno mensual
Contexto
Malo pero comun
-5% a -15%
La mayoria de bots retail. Overfitting o mal risk management.
Breakeven
-2% a +2%
Despues de comisiones. Muchos bots "rentables" en backtest terminan aqui.
Decente
+2% a +5%
Consistente en 6+ meses. Esto ya es MUY bueno para retail.
Muy bueno
+5% a +10%
Posible en periodos de alta volatilidad. No esperes esto cada mes.
Fantasia
+20%+ mensual
Si alguien te lo promete, es estafa o survivorship bias.
Con $200 USD y +3% mensual:
Ganas ~$6/mes.
No es para vivir de esto al inicio. Es para aprender, validar, y escalar con mas capital
si demuestras que funciona.
Tu ventaja como ingeniero en sistemas
Lo que puedes hacer tu que el
"trader promedio" no puede.
01
Infraestructura robusta
Docker, CI/CD, monitoring, logging. Tu bot no se cae sin que te enteres. Health
checks y alertas automatizadas.
02
Pipeline de datos propio
Scraping on-chain, sentiment de redes sociales, datos de exchanges. Freqtrade
permite features custom.
03
Testing riguroso
Unit tests para estrategia, integration tests para pipeline, validación estadistica
automatizada.
04
Feature engineering creativo
Funding rates, open interest, liquidation maps, on-chain metrics via APIs que la
mayoria no usa.
05
Versionamiento
Git para estrategias, MLflow para rastrear experimentos. Reproducibilidad total de
resultados.
06
Multi-strategy
Correr multiples estrategias en paralelo, diversificar, medir correlacion entre
ellas.
Seniales de alerta
Como saber si estas fallando sin
darte cuenta.
Criticas - PARAR y reevaluar
Tu backtest da >30% mensual. Casi seguro overfitting.
Tu estrategia solo funciona en un par o un periodo. Es curve-fitted.
Resultados de paper trading son muy diferentes al backtest. Bug o lookahead bias.
Estas "ajustando" la estrategia cada vez que pierde. Optimizacion emocional.
Llevas mas de 8 semanas sin completar una fase. Replantea el scope.
Tu modelo predice casi siempre la misma clase. Senal de degeneracion o mal target.
Precaucion
No estas documentando nada. Sin registros no puedes evaluar progreso.
Agregando complejidad sin mejorar metricas. Mas features, mismo sharpe.
Simplifica.
Solo pruebas en BTC/USDT. Valida en 3-5 pares minimo.
Ignoras comisiones o slippage. Con micro-capital se comen tus ganancias.
Comparandote con gente en Twitter que "hace 50% mensual". Survivorship bias.
Vas bien si...
Backtest y paper trading convergen (diferencia menor a 30%)
Sharpe ratio > 1.0 en datos de validación
Drawdown maximo menor a 20%
Puedes explicar cada componente de tu pipeline
Llevas un diario y articulas que aprendiste cada semana
Estructura del proyecto
Todos los archivos que ya tienes
listos.
trading-plan/ARCHIVOS_CLAVE.md# Orden sugerido de
lecturaREADME.md# Guia rapida de uso.gitignore# Excluye API keys y
datosdocker-compose.yml# Freqtrade + FreqUI
en Dockerplan.md# Plan completo en
markdownguia.html# Esta guia interactivaconfig/config-backtest.json# Backtest
estrategia simple (pares whitelist)config-backtest-freqai.json# Backtest
ML con FreqAI + LightGBMconfig-dryrun.json# Paper trading +
FreqUI en :8080config-live.example.json# Template para
trading realstrategies/EmaCrossRsi.py# Fase 1: EMA 20/50 + RSI
+ trailingFreqaiLightgbm.py# Fase 3: FreqAI +
LightGBM classifiernotebooks/ml_fundamentals.ipynb# Fase 2: ML desde
cero (7 secciones)scripts/download_data.ps1# Descarga datos con
Days o Timerangebacktest.ps1# Backtest
train/validation/final-testbacktest_freqai.ps1# Backtest FreqAI
(30-60 min)dryrun.ps1# Paper trading 24/7live.ps1# Trading real (pide
confirmacion)progress/tracker.md# Checklist por fase con
tablasjournal.md# Diario de tradingreports/# runtime-generated por
backtest_freqai.ps1user_data/# runtime-generated por
Freqtrade
Matriz fase -> archivo -> comando ->
salida esperada
Fase
Archivo clave
Comando / accion
Salida esperada
0
`progress/journal.md`
Registrar conceptos y 10 trades ficticios
Notas claras de aprendizaje, errores y dudas pendientes
1
`scripts/download_data.ps1`
`./scripts/download_data.ps1`
Datos `.feather` en `user_data/data/binance/`
1
`scripts/backtest.ps1`
`./scripts/backtest.ps1`
Resultados train/validation/final-test en `user_data/backtest_results/`
1
`strategies/EmaCrossRsi.py`
Leer indicadores, entradas y salidas
Entiendes por que el bot compra/vende baseline
2
`notebooks/ml_fundamentals.ipynb`
Ejecutar notebook con datos reales
Features, target, walk-forward y metricas entendidas
3
`strategies/FreqaiLightgbm.py`
Revisar features `%`, target `&s-up_or_down` y `do_predict`
Entiendes pipeline FreqAI clasificador
3
`scripts/backtest_freqai.ps1`
`./scripts/backtest_freqai.ps1`
Comparacion ML vs baseline en train/validation/final-test + reporte
4
`scripts/dryrun.ps1`
`./scripts/dryrun.ps1`
Bot dry-run local en FreqUI `http://localhost:8080`
4
`progress/journal.md`
Registrar cada trade y resumen semanal
Evidencia para decidir si pasar o no a live
5
`config/config-live.example.json`
Copiar a `config-live.json` y completar secretos
Config live local, ignorada por Git, sin placeholders
5
`scripts/live.ps1`
`./scripts/live.ps1`
Primero `show-config` OK, luego confirmacion de riesgo y bot local
Flujo real del proyecto
Diagrama operativo
Este diagrama resume el camino real: aprender, validar baseline, aprender ML,
comparar FreqAI, dry-run prolongado y recien despues live con micro-capital.
flowchart LR
A[FASE 0 Fundamentos] --> B[FASE 1 download_data.ps1]
B --> C[backtest.ps1 train/validation/final-test]
C --> D[FASE 2 ml_fundamentals.ipynb]
D --> E[FASE 3 FreqaiLightgbm.py]
E --> F[backtest_freqai.ps1 ML vs baseline]
F --> G[FASE 4 dryrun.ps1 8-12 semanas]
G --> H[FASE 5 live.ps1 con show-config + confirmacion]
Guia rapida de comandos
powershell# FASE 1: Setup inicial
docker compose run --rm freqtrade create-userdir --userdir /freqtrade/user_data
.\scripts\download_data.ps1
.\scripts\backtest.ps1
# FASE 3: Backtest con ML
.\scripts\backtest_freqai.ps1
# FASE 4: Paper trading
.\scripts\dryrun.ps1
# Abrir http://localhost:8080 (usar credenciales de config-dryrun.json)
# FASE 5: Trading real
copy config\config-live.example.json config\config-live.json
# Editar config-live.json con API keys
.\scripts\live.ps1
Manual maestro: que archivo usar para cada situacion
Como leer esta tabla
Si no sabes donde tocar algo, empieza aqui. La idea es que no tengas que adivinar si
debes cambiar un script, una config o una estrategia. En general: los archivos
`config/` cambian comportamiento, los archivos `strategies/` cambian la logica de
trading, los archivos `scripts/` ejecutan procesos y los archivos `progress/`
documentan decisiones.
Quiero hacer...
Archivo principal
Que mirar
Precaucion
Descargar datos historicos
`scripts/download_data.ps1`
`Pairs`, `Timeframes`, `Days`, `Timerange`
Para FreqAI descarga datos extra antes del periodo objetivo.
Cambiar pares del backtest
`config/config-backtest.json`
`exchange.pair_whitelist`
No pruebes solo un par y no ignores blacklist.
Cambiar monto por trade en backtest
`config/config-backtest.json`
`stake_amount`, `dry_run_wallet`
Debe parecerse al capital real esperado.
Entender por que compra la baseline
`strategies/EmaCrossRsi.py`
`populate_entry_trend`
No cambies parametros sin anotar hipotesis.
Entender por que vende la baseline
`strategies/EmaCrossRsi.py`
`populate_exit_trend`, `minimal_roi`, `stoploss`
Una salida puede venir de senal, ROI, trailing o stoploss.
Probar baseline
`scripts/backtest.ps1`
Train, validation, final-test
No decidas con un solo periodo.
Aprender ML desde cero
`notebooks/ml_fundamentals.ipynb`
Features, target, walk-forward, metricas
El notebook educa; no reemplaza backtest real.
Cambiar features ML
`strategies/FreqaiLightgbm.py`
`feature_engineering_*`
Cambia tambien `identifier` en config.
Cambiar target ML
`strategies/FreqaiLightgbm.py`
`set_freqai_targets`
Revisa distribucion de labels.
Cambiar ventanas FreqAI
`config/config-backtest-freqai.json`
`train_period_days`, `backtest_period_days`
Descarga datos suficientes antes del timerange.
Comparar ML vs baseline
`scripts/backtest_freqai.ps1`
Archivos exportados y `progress/reports/`
ML debe mejorar algo medible.
Iniciar paper trading
`scripts/dryrun.ps1`
Warnings de Telegram/API y FreqUI
No modifiques estrategia durante la prueba.
Cambiar configuracion dry-run
`config/config-dryrun.json`
`stake_amount`, `telegram`, `freqai`; protecciones en la estrategia
Debe probar lo que luego usaras en live.
Registrar trades
`progress/journal.md`
Entry tag, exit tag, fee, slippage, regimen
Sin journal no hay aprendizaje verificable.
Decidir si avanzo
`progress/tracker.md`
Checklist, metricas, semanas, DD
Si no cumple checklist, no avances.
Preparar live
`config/config-live.example.json`
Copiar a `config-live.json` y completar secretos
Nunca subas `config-live.json`.
Iniciar live
`scripts/live.ps1`
Validaciónes y confirmacion estricta
Si falla una validación, no la saltes.
Runbook: comando, resultado esperado y que hacer si falla
Comando
Resultado esperado
Si falla
`docker compose run --rm freqtrade create-userdir --userdir
/freqtrade/user_data`
Crea carpetas internas en `user_data/`.
Verifica Docker Desktop abierto y que estas en la raiz del proyecto.
`./scripts/download_data.ps1`
Descarga `.feather` en `user_data/data/binance/`.
Revisa conexion, Docker y pares validos de Binance.
`./scripts/backtest.ps1`
Genera resultados train/validation/final-test.
Revisa que existan datos para todos los pares y timeranges.
`./scripts/backtest_freqai.ps1`
Corre FreqAI + baseline y genera reporte.
Revisa datos extra, identifier, config FreqAI y version de Freqtrade.
`./scripts/dryrun.ps1`
Bot en dry-run con FreqUI en localhost:8080.
Revisa credenciales API server, puerto 8080 y config-dryrun.
`./scripts/live.ps1`
Solo inicia si config-live pasa validaciónes y confirmas riesgo.
Corrige placeholders, Telegram, initial_state o API keys. No fuerces live.
Como interpretar resultados sin enganarte
Profit Factor alto
Bueno, pero insuficiente
PF > 1.10 es minimo, pero revisa trades, drawdown, pares y estabilidad. PF 3 con 8
trades no significa mucho.
Drawdown bajo
Importante
Un drawdown bajo ayuda a sobrevivir emocional y financieramente. Si DD supera 15%,
no avances sin redisenar.
Muchos trades
Necesario
Mas trades no siempre es mejor, pero una muestra pequena no permite confiar. Busca
100+ historicos para backtest serio.
Win rate alto
Puede enganar
Ganar muchas veces poco y perder pocas veces mucho puede destruir la cuenta. Mira
expectativa, no solo aciertos.
ML mejora retorno
Revisar con cuidado
Pregunta si tambien mejora DD, PF o calidad de trades. Si solo mejora train, puede
ser overfitting.
Dry-run diferente
Alerta
Puede indicar sobreoptimizacion, costos mal modelados, bug o mercado diferente. No
racionalices; investiga.
Reglas de oro del proyecto
Estas reglas valen mas que cualquier resultado aislado
No pasar a live desde backtest. Siempre dry-run prolongado.
No cambiar muchas variables a la vez. Si cambias todo, no sabes que funciono.
No usar ML si no mejora contra baseline o si no puedes explicar que hace.
No operar sin Telegram activo en live.
No confiar en resultados con pocos trades.
No usar API con permisos de retiro.
No escalar capital para recuperar perdidas.
No ignorar drawdown. Sobrevivir importa mas que acertar.
No tocar `config-live.json` como si fuera un config cualquiera: contiene secretos
y dinero real.
No usar futures en esta ruta. Primero 6-12 meses rentables y auditables en spot.
Manual de lectura por archivo
README.md
Usalo para orientarte rapido. Si vuelves al proyecto despues de varios dias, empieza
por aqui.
Lee requisitos previos.
Revisa el inicio rapido.
Lee la seccion de NO ejecutar live.
Confirma en que fase estas.
plan.md
Usalo para entender el por que de cada fase y los criterios para avanzar.
Lee el disclaimer antes de tomar decisiones de riesgo.
Revisa criterios duros de descarte.
Ubica fase actual y metas de salida.
Si dudas si avanzar, vuelve a este archivo.
config/config-backtest.json
Usalo para simular la estrategia baseline sin ML.
Revisa `stake_amount` para que no sea unlimited.
Revisa `fee` para incluir costo de exchange.
Revisa `pair_whitelist` para saber que pares se prueban.
No metas API keys aqui; backtest no las necesita.
config/config-backtest-freqai.json
Usalo para backtesting de FreqAI.
Revisa `identifier` antes de cada experimento nuevo.
Revisa `train_period_days` para entender cuanta historia usa el modelo.
Revisa `backtest_period_days` para saber cada cuanto valida.
Revisa `include_timeframes` porque multiplica features.
Revisa `include_corr_pairlist` porque agrega informacion de otros pares.
config/config-dryrun.json
Usalo para paper trading.
Debe tener `dry_run: true`.
Debe tener protecciones activas.
Debe tener API server con password cambiado.
Telegram puede iniciar desactivado, pero para prueba prolongada deberia activarse.
Debe parecerse al live que planeas usar despues.
config/config-live.example.json
Usalo como plantilla, no como archivo final con secretos.
Copialo como `config-live.json`.
Completa API keys reales solo en `config-live.json`.
Confirma que `initial_state` sea `stopped`.
Confirma que Telegram este activo.
Confirma que las protecciones son iguales o mas estrictas que dry-run.
strategies/EmaCrossRsi.py
Usalo para aprender como Freqtrade piensa una estrategia.
`populate_indicators` responde: que datos calculo.
`populate_entry_trend` responde: cuando compro.
`populate_exit_trend` responde: cuando vendo.
`enter_tag` y `exit_tag` responden: por que paso.
No confundas esta baseline con una estrategia lista para live.
strategies/FreqaiLightgbm.py
Usalo para entender ML dentro de Freqtrade.
Features `%` son entradas del modelo.
Target `&` es lo que el modelo intenta predecir.
`self.freqai.start` conecta estrategia con FreqAI.
El setup técnico evita que ML opere solo.
Si no entiendes el target, no modifiques esta estrategia.
scripts/download_data.ps1
Usalo cada vez que necesites datos nuevos o un timerange distinto.
Usa `-Days` si quieres una cantidad simple de dias.
Usa `-Timerange` si quieres controlar fechas exactas.
Para FreqAI, descarga historia previa adicional.
Si falla, revisa Docker y conectividad.
scripts/backtest.ps1
Usalo para probar estrategias sin ML.
Corre train.
Corre validation.
Corre final-test.
Exporta archivos con timestamp.
Si final-test falla, no racionalices: vuelve a diseno.
scripts/backtest_freqai.ps1
Usalo para probar ML contra baseline.
Primero corre FreqAI.
Luego corre baseline.
Genera resumen en `progress/reports/`.
Si ML no mejora nada, no lo lleves a dry-run.
scripts/dryrun.ps1
Usalo para iniciar paper trading.
Lee warnings antes de dejarlo corriendo.
Abre FreqUI despues de iniciar.
No cambies estrategia durante la medicion.
Documenta cada semana.
scripts/live.ps1
Usalo solo cuando el checklist de live este completo.
Valida placeholders.
Valida Telegram.
Valida initial_state.
Pide confirmacion estricta.
Si bloquea, el bloqueo es intencional.
progress/tracker.md
Usalo como control de avance.
Marca solo tareas terminadas de verdad.
Registra metricas por fase.
Usalo para decidir si avanzas o repites.
No lo llenes despues de memoria; actualizalo durante el proceso.
progress/journal.md
Usalo como caja negra del proyecto.
Registra que hiciste.
Registra que aprendiste.
Registra errores.
Registra trades con tags y contexto.
Si algo sale mal, este archivo debe ayudarte a reconstruir que paso.
Manual de preguntas antes de tocar un archivo
Pregunta
Si la respuesta es no
Archivo relacionado
Se que fase estoy ejecutando?
Lee `plan.md` y esta guia antes de tocar código.
`plan.md`
Se que metrica quiero mejorar?
No optimices. Define hipotesis primero.
`progress/journal.md`
Se que archivo controla este comportamiento?
Vuelve al manual maestro de archivos.
`guia.html`
Tengo datos suficientes?
Descarga mas historia antes de backtestear.
`scripts/download_data.ps1`
Estoy comparando contra baseline?
No aceptes el resultado ML todavia.
`scripts/backtest_freqai.ps1`
Estoy cambiando solo una variable?
Divide el experimento. No cambies todo junto.
`progress/journal.md`
El cambio afecta dinero real?
Si afecta live, no lo hagas sin dry-run previo.
`config/config-live.json`
Se como revertir mentalmente la decision?
Documenta antes de ejecutar.
`progress/journal.md`
Mini manual de investigacion
Cuando una palabra no se entiendeBusca primero en el glosario de la fase. Si no aparece, anotala en `journal.md`
y busca documentación oficial o una definicion financiera basica.
Cuando un resultado parece demasiado buenoAsume primero que hay overfitting, pocos trades, bug de datos o periodo
favorable. Verifica antes de emocionarte.
Cuando un script fallaNo cambies la estrategia. Primero confirma Docker, ruta, config, datos y
mensajes de error.
Cuando ML fallaNo agregues features sin pensar. Revisa target, labels, datos, identifier y
comparacion contra baseline.
Cuando dry-run difiereNo ajustes emocionalmente. Congela, audita comisiones, slippage, frecuencia de
trades, horarios y logs.
Cuando live genera ansiedadBaja capital, reduce frecuencia o vuelve a dry-run. Si el sistema no se puede
operar emocionalmente, no es operable.
Indicadores de que debes parar y estudiar mas
No puedes explicar el trade
Parar
Si no sabes por que entro o salio, revisa `enter_tag`, `exit_tag` y estrategia
antes de seguir.
No sabes que cambio hiciste
Parar
Si no hay registro en journal, vuelve a documentar antes de continuar.
Solo miras P&L
Parar
Debes mirar PF, DD, trades, expectativa, divergencia y regimen.
Quieres recuperar perdidas
Parar
Eso es decision emocional, no proceso sistematico.
No tienes alertas
Parar live
Sin alertas, no hay control operativo suficiente.
El modelo predice siempre igual
Parar ML
Revisa labels, target y datos antes de seguir.
Glosario global de archivos
ConfigArchivo JSON que dice al bot
como operar: pares, stake, exchange, protecciones y servicios.
StrategyArchivo Python con la logica:
indicadores, entrada, salida, tags y reglas de senal.
ScriptArchivo PowerShell que ejecuta
una tarea repetible como descargar datos o correr backtest.
NotebookDocumento interactivo para
aprender, experimentar y visualizar conceptos ML.
user_dataCarpeta donde Freqtrade
guarda datos, modelos, logs y resultados generados.
Backtest resultsResultados exportados
de simulaciones historicas.
Model artifactsArchivos de modelos
entrenados por FreqAI.
JournalDiario de decisiones, trades y
aprendizajes. Es parte del sistema, no decoracion.
TrackerChecklist para evitar avanzar
por emocion en vez de evidencia.
Example configPlantilla segura que se
copia y adapta. No deberia contener secretos reales.
Glosario global de metricas y decisiones
P&LProfit and Loss. Ganancia o perdida de una operacion o periodo.
Equity curveCurva que muestra como cambia el capital a lo largo del tiempo.
ExpectativaResultado promedio esperado por trade considerando ganancias, perdidas y
frecuencia.
Win ratePorcentaje de trades ganadores. No basta si las perdidas son mas grandes que las
ganancias.
Sharpe ratioMetrica que relaciona retorno con volatilidad. Ayuda a comparar calidad de
retorno.
Max drawdownPeor caida desde pico a valle. Mide cuanto puede doler una estrategia.
Sample sizeTamano de muestra. Pocos trades hacen que los resultados sean poco
confiables.
Regimen de mercadoCondicion general: tendencia alcista, bajista, lateral, alta o baja
volatilidad.
Riesgo operativoRiesgo de fallos de API, servidor, conexion, configuracion o alertas.
Riesgo de modeloRiesgo de que el modelo ML aprenda ruido, se degrade o prediga mal fuera de
muestra.
Out-of-sampleDatos que no fueron usados para ajustar la estrategia. Son clave para
validar.
Walk-forwardValidación que avanza en el tiempo: entrenar con pasado, probar con futuro y
repetir.
Curve fittingAjustar una estrategia al pasado hasta que parece buena, pero falla en datos
nuevos.
BaselinePunto de comparacion simple. Si algo complejo no supera baseline, no justifica
complejidad.
Post-mortemAnálisis despues de un fallo para entender causa, impacto y accion
correctiva.