Acceder

(I) Optimiza tus Estrategias de Trading: Analiza Mercados Alcistas, Bajistas y Laterales con Python

🧠 Cómo Usar el Script para Probar Estrategias de Trading


Este script, basado en la clase AnalizadorMercado, te permite seleccionar períodos específicos de mercado de manera interactiva y probar estrategias de trading en cada uno de ellos.
Aquí te explico cómo funciona y cómo puedes aprovecharlo para evaluar el rendimiento de tus estrategias.


1️⃣ Clasificación Automática del Tipo de Mercado


El script clasifica cada día del mercado en uno de los siguientes tipos, según las condiciones del precio y la volatilidad:

  • Alcista: Cuando la media móvil corta (MA_Short) supera a la media móvil larga (MA_Long).
  • Bajista: Cuando MA_Short está por debajo de MA_Long.
  • Lateral: Cuando no hay una tendencia clara (valor por defecto).
  • Corrección: Cuando hay una caída fuerte en el precio (según el umbral correction_threshold).
  • Rally: Cuando hay un aumento fuerte en el precio (según el umbral rally_threshold).
  • Recesión: Cuando el mercado es bajista y la volatilidad es alta.

💡 ¿Por qué es útil?


Puedes identificar períodos con características específicas (por ejemplo: mercados alcistas, recesiones, correcciones) y probar cómo se comportaría tu estrategia en cada contexto.


2️⃣ Selección Interactiva de Períodos


El método analizar_y_mostrar() solicita las fechas de inicio y fin mediante input, lo que te permite:

  • Seleccionar cualquier rango de fechas de forma interactiva (ej.: desde 2007-01-04 hasta 2025-12-30).
  • Obtener el DataFrame con el tipo de mercado cada día en ese período.
  • Obtener una tabla de rangos de mercado, que agrupa los días consecutivos con el mismo tipo de mercado.

Ejemplo de uso


python
analizador = AnalizadorMercado(df_seleccionado)
analizador.analizar_y_mostrar()

Al ejecutar este código, el script te pedirá:

Introduce el período a analizar (formato: AAAA-MM-DD):
Fecha de inicio (ejemplo: 2007-01-04): 2020-01-01
Fecha de fin (ejemplo: 2025-12-30): 2022-12-31


💡 ¿Por qué es útil?

  • Puedes analizar cualquier período histórico sin modificar el código.
  • Facilita la comparación de resultados en diferentes condiciones de mercado.

3️⃣ Visualización de la Cotización


El método graficar_cotizacion() muestra solo la curva de cotizaciones en el período seleccionado, sin distracciones.

💡 ¿Por qué es útil?

  • Te permite visualizar el comportamiento del precio en el período que estás analizando.
  • Puedes identificar patrones visuales relevantes para tu estrategia.

4️⃣ Aplicación para Probar Estrategias de Trading

a) Selección de Períodos para Backtesting


Con la tabla de rangos de mercado, puedes:

  • Filtrar períodos específicos (ej.: solo mercados alcistas o recesiones).
  • Probar tu estrategia en esos contextos y evaluar su rendimiento.

Ejemplo práctico:
 
Si tu estrategia es de buy & hold, podrías evaluar su rendimiento en períodos alcistas vs. recesiones.

b) Evaluación de Resultados


Puedes agrupar los resultados de tu estrategia por tipo de mercado y comparar métricas clave como:

  • Rentabilidad en mercados alcistas vs. bajistas.
  • Drawdown (pérdida máxima) en recesiones.
  • Frecuencia de operaciones exitosas en mercados laterales.

Ejemplo de métricas

Métricas


c) Optimización de Parámetros


Puedes ajustar los parámetros del script para adaptarlos a tu estrategia:

  • Cambiar las medias móviles (short_ma, long_ma) para identificar tendencias más cortas o largas.
  • Ajustar los umbrales (correction_threshold, rally_threshold) para definir qué consideras una “corrección” o un “rally”.

Ejemplo:
 
Si tu estrategia es de corto plazo, podrías usar:

short_ma = 10
long_ma = 30

5️⃣ Ejemplo Práctico


Supongamos que quieres probar una estrategia de cruce de medias móviles:

  • Comprar cuando MA_Short > MA_Long
  • Vender cuando MA_Short < MA_Long

Pasos:

  1. Ejecuta el script e introduce las fechas del período que te interese.
  2. Filtra los rangos de mercado (ej.: solo mercados alcistas).
  3. Aplica tu estrategia en ese período y calcula la rentabilidad.
  4. Repite el proceso en un período de recesión y compara los resultados.

Resultado


Podrías descubrir que tu estrategia funciona bien en mercados alcistas pero tiene pérdidas en recesiones.
Esto te permitiría ajustarla o añadir filtros (por ejemplo: evitar operar en recesiones).

6️⃣ Resumen de lo que Obtienes


Al ejecutar el script, recibirás:

  • El DataFrame con el tipo de mercado cada día en el período seleccionado.
  • La tabla de rangos para identificar períodos específicos.
  • La gráfica de cotizaciones en el rango seleccionado, para un análisis visual.

🏁 Conclusión


Este script te permite:

  • Seleccionar períodos específicos de mercado de manera interactiva.
  • Probar estrategias de trading en diferentes condiciones.
  • Evaluar y comparar resultados para optimizar tu enfoque.

 Importación de cotizaciones.

Al invocar la clase dentro del script, lo primero que aparece es la siguiente pregunta:

  •  ¿Actualizar/Descargar CSV desde yfinance? (s/N):  n

✔️ Si respondemos 's'

El sistema comprobará automáticamente si estamos trabajando en Google Colaboratory.

    Si es así, creará las carpetas necesarias en ./Datos/Ficheros_yahoo.

    A continuación descargará desde Yahoo Finance las cotizaciones de todos los valores definidos en el diccionario correspondiente, guardándolas en formato CSV.

✔️ Si respondemos 'n'

Se mostrará el siguiente menú:

  •     1. Un solo fondo → df_seleccionado (TODAS las columnas)
  •     2. Varios fondos → dict de DataFrames (TODAS las columnas)

✔️ Si elegimos la opción (1)

El sistema mostrará una lista con todos los CSV disponibles.

  •     Seleccionamos el que queramos analizar.

    El archivo elegido se cargará en un DataFrame llamado df_seleccionado, que será el que se utilizará en los análisis posteriores.

Podemos añadir a la carpeta ./Datos/Ficheros_yahoo cualquier otro fichero CSV siempre que respete el mismo formato y estructura que los archivos descargados desde Yahoo Finance. Esto permite incorporar datos procedentes de otras fuentes, como CSV proporcionados por gestoras u otras plataformas.

Si necesitáis que una IA adapte un fichero externo, basta con facilitarle:

  •     Un CSV de los descargados de Yahoo Finance (como referencia de estructura), y
  •     El CSV procedente de la gestora u otra fuente.

Con ambos archivos podrá ajustarlo fácilmente para que sea compatible y pueda incluirse sin problemas en la carpeta correspondiente.

Dentro del código encontrarás un diccionario llamado 'fondos_data_total', donde puedes incluir tus fondos o valores preferidos. Su estructura es muy sencilla: cada categoría (por ejemplo, Renta variable o Renta fija/Otros) contiene una lista de fondos, y para cada uno se especifica su nombre, ISIN y ticker de Yahoo Finance. Un ejemplo reducido sería:

    fondos_data_total = {
        'Renta variable': {
            'Vanguard Global Stock Index Fund EUR Acc': {
                'ISIN': 'IE00B03HD191', 'ticker': '0P00000WLG.F'
            },
            'Vanguard Global Small-Cap Index Fund EUR Acc': {
                'ISIN': 'IE00B42W4L06', 'ticker': '0P0000XR9M.F'
            }
        },
   
        'Renta fija/Otros': {
            ...
        }
    }

Si no estás familiarizado con programación, no te preocupes: solo necesitas identificar en Yahoo Finance el nombre y el ticker de tus fondos, junto con su ISIN. Después, basta con facilitar a cualquier IA (Geminis, DeepSeek, Mistral, etc) la estructura del diccionario y los datos de tus fondos preferidos. La IA te devolverá automáticamente un diccionario 'fondos_data_total' ya preparado para sustituir al que aparece en el código.

De esta forma, podrás personalizar el análisis con tus propios fondos sin necesidad de conocimientos técnicos.
Además dispondrás de una herramienta para descargar históricos de cotizaciones.

¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
Accede a Rankia
¡Sé el primero en comentar!