Stratégie d'investissement quantitative basée sur la date d'achat mensuelle

Auteur:ChaoZhang est là., Date: 2023-11-24 14:10:23 Je suis désolé
Les étiquettes:

img

Résumé

L'idée de base de cette stratégie est de trouver la meilleure date d'achat chaque mois en achetant des actifs numériques à cette date et en les vendant à la fin du mois, afin d'obtenir des rendements d'investissement optimaux.

Principe de stratégie

La stratégie fonctionne en fonction de la date d'achat mensuelle définie par l'utilisateur et de la date de vente. Elle va long sur la date d'achat en achetant des actifs et ferme la position à la date de vente si elle est définie. Sinon, elle ferme la position à la date de fin de la stratégie. Cela peut tester la différence de profit de différentes dates d'achat mensuelles.

La logique du signal d'achat est la suivante: si c'est la date d'achat définie par l'utilisateur et dans la fourchette de date effective de la stratégie, passez long.

La logique du signal de position de clôture est la suivante: si la date de vente est fixée et qu'il s'agit de la date de vente actuelle, la position est clôturée; si aucune date de vente n'existe mais que la date de fin de la stratégie est dépassée, la position est également clôturée.

Les avantages de la stratégie

  1. Peut trouver la date de la plus grande fluctuation des prix chaque mois pour obtenir des rendements excédentaires par le biais de transactions intraday à haute fréquence
  2. Peut identifier le point d'achat optimal en comparant les modèles de profit de différentes dates d'achat
  3. Peut déterminer si la date d'achat optimale change en fonction des événements clés du mois
  4. Peut équilibrer les transactions à court et à long terme en fixant des dates de vente différentes

Risques et solutions

  1. Risque d'effondrement des prix après achat

    • Définir le stop-loss pour limiter la perte maximale
    • Choisissez des actifs à forte liquidité pour éviter les fluctuations extrêmes des prix
  2. Modification de la date d'achat optimale

    • Surveillez l'historique des modifications des données et ajustez rapidement le point d'achat optimal
    • Réduire la taille des positions pendant les périodes à haut risque
  3. Perte causée par un paramètre incorrect

    • Testez les différents paramètres progressivement et comparez la différence de profit
    • Sélectionner une plage de temps représentative pour l'essai

Directions d'optimisation

  1. Considérez d'autres facteurs pour déterminer le point d'entrée

    • Considérez l'impact des événements les plus importants du mois sur le prix
    • Analyser les tendances des prix des actifs numériques connexes
    • Ajouter des modèles d'apprentissage automatique pour déterminer le timing optimal
  2. Optimiser le mécanisme de gestion des positions

    • Définir la prise de profit dynamique pour fermer la position
    • Ajuster la taille de la position en fonction de la volatilité
    • Considérer la position de détention entre périodes
  3. Expansion vers d'autres marchés commerciaux

    • Appliquer à plus de paires de devises numériques
    • S'applique aux actions, aux devises, etc.
    • Mettre en place des stratégies d'arbitrage transfrontalier

Résumé

Cette stratégie trouve la date de la plus grande oscillation des prix intraday chaque mois en testant la différence de profit à partir de différentes dates d'achat. Elle peut apporter des rendements excédentaires aux investisseurs qui cherchent des bénéfices du trading intraday à haute fréquence.


/*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()
     

Plus de