Estrategia de inversión cuantitativa basada en la fecha de compra mensual

El autor:¿ Qué pasa?, Fecha: 2023-11-24 14:10:23
Las etiquetas:

img

Resumen general

La idea central de esta estrategia es encontrar la mejor fecha de compra cada mes comprando activos digitales en esa fecha y vendiéndolos al final del mes, con el fin de lograr rendimientos óptimos de la inversión.

Principio de la estrategia

La estrategia se ejecuta en función de la fecha de compra mensual definida por el usuario y la fecha de venta. Se hace largo en la fecha de compra comprando activos y cierra la posición en la fecha de venta si se establece. De lo contrario, cierra la posición en la fecha de finalización de la estrategia. Esto puede probar la diferencia de ganancias de diferentes fechas de compra mensuales.

La lógica para la señal de compra es: si es la fecha de compra definida por el usuario y dentro del rango de fecha efectiva de la estrategia, vaya largo.

La lógica para la señal de posición cerrada es: si la fecha de venta está establecida y es la fecha de venta ahora, la posición cerrada; si no hay fecha de venta, pero más allá de la fecha de finalización de la estrategia, también la posición cerrada.

Ventajas de la estrategia

  1. Puede encontrar la fecha de la mayor fluctuación de precios cada mes para obtener rendimientos excedentes a través de operaciones intradiarias de alta frecuencia
  2. Puede identificar el punto de compra óptimo mediante la comparación de patrones de ganancias de diferentes fechas de compra
  3. Puede determinar si la fecha de compra óptima cambia según los eventos clave del mes
  4. Puede equilibrar el comercio a corto y largo plazo estableciendo diferentes fechas de venta

Riesgos y soluciones

  1. Riesgo de caída de precios después de la compra

    • Configurar el stop loss para limitar la pérdida máxima
    • Elegir activos con alta liquidez para evitar cambios extremos de precios
  2. Cambio de la fecha óptima de compra

    • Monitorear el historial de cambios de datos y ajustar oportunamente el punto de compra óptimo
    • Reducir el tamaño de las posiciones durante los períodos de alto riesgo
  3. Pérdida causada por una configuración incorrecta de parámetros

    • Prueba de diferentes parámetros de forma incremental y compara la diferencia de ganancias
    • Seleccionar el intervalo de tiempo representativo para el ensayo

Direcciones de optimización

  1. Considere más factores para determinar el punto de entrada

    • Considere el impacto de los principales acontecimientos noticiosos del mes en el precio
    • Analizar las tendencias de precios de los activos digitales relacionados
    • Añadir modelos de aprendizaje automático para determinar el tiempo óptimo
  2. Optimizar el mecanismo de gestión de posiciones

    • Establecer la dinámica de toma de ganancias para cerrar la posición
    • Ajuste del tamaño de la posición en función de la volatilidad
    • Considerar la posición de tenencia a lo largo de los períodos
  3. Expansión a otros mercados comerciales

    • Aplicar a más pares de divisas digitales
    • Se aplica a las acciones, divisas, etc.
    • Establecer estrategias de arbitraje entre mercados

Resumen de las actividades

Esta estrategia encuentra la fecha de mayor oscilación de precios intradiarios cada mes probando la diferencia de ganancias de diferentes fechas de compra. Puede traer retornos excedentes para los inversores que buscan ganancias de la negociación intradiaria de alta frecuencia.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()
     

Más.