
Cette stratégie est une stratégie de trading inverse basée sur l’effet saisonnier. Elle établit des positions dans un mois d’entrée spécifique et des positions de vente au détail dans un mois de sortie pour capturer les inversions de prix causées par l’effet saisonnier.
La logique centrale de cette stratégie est de créer des positions saisonnières en fonction des mois d’entrée et de sortie choisis par l’utilisateur. Plus précisément, si le mois en cours équivaut à un mois d’entrée et qu’aucune position n’a été créée, la mise en marché est effectuée dans le sens de l’hyper ou de l’hyper.
Par exemple, si vous choisissez d’entrer en bourse en octobre et de quitter le marché en janvier, alors en octobre de chaque année, si vous n’avez pas de position, créez une nouvelle position selon la direction de la plus-value ou de la plus-value; si vous avez déjà une position, annualisez cette position en janvier. En s’appuyant sur cette logique, vous pouvez capturer le renversement des prix causé par l’effet saisonnier.
Il est à noter que cette stratégie prend en compte par défaut 25% du capital risque pour chaque transaction et est calculée sur la base d’une commission de 0.5%. Cela a un impact sur les résultats finaux.
Le plus grand avantage de cette stratégie réside dans la possibilité de profiter des retournements de marché induits par l’effet saisonnier. De nombreux marchés financiers et de produits ont des fluctuations de prix saisonnières plus marquées. Si l’on choisit le bon moment d’entrée et de sortie, il est possible de saisir efficacement les opportunités de retournement induites par cet effet saisonnier.
En outre, la stratégie est très simple, facile à comprendre et à mettre en œuvre, et convient aux débutants dans le trading quantitatif. Elle ne dépend que de deux paramètres, ce qui réduit considérablement la difficulté d’optimisation de la stratégie.
Malgré l’efficacité significative de cette stratégie, certains risques subsistent. Premièrement, le mauvais choix des heures d’entrée et de sortie peut entraîner des pertes en raison de l’incapacité de saisir la reprise des prix; deuxièmement, les changements de l’environnement du marché peuvent également entraîner une diminution de l’effet saisonnier; enfin, la logique de stop loss par défaut est faible et ne peut pas contrôler efficacement les pertes individuelles.
Pour réduire le risque, il est possible d’optimiser les options d’entrée et de sortie, en combinant plus d’analyse pour juger de l’environnement du marché et en mettant en place des arrêts-pertes pour contrôler le risque. Bien sûr, aucune stratégie de négociation ne peut éviter complètement le risque du marché et les traders doivent être prudents.
Il y a beaucoup de possibilités d’optimisation de cette stratégie. Premièrement, on peut introduire la logique de stop loss et définir un marge de stop loss raisonnable. Deuxièmement, on peut tester plus de combinaisons d’entrée et de sortie pour trouver les meilleurs paramètres.
En optimisant les points ci-dessus, vous pouvez améliorer encore la stabilité de la stratégie et améliorer la performance de suivi de la stratégie. Bien sûr, toute optimisation nécessite une vérification rigoureuse des retours d’expérience, afin d’éviter une optimisation excessive.
Cette stratégie de reprise saisonnière est très pratique dans l’ensemble. En choisissant les mois d’entrée et de sortie appropriés, elle capture efficacement les revers de prix causés par l’effet saisonnier, ce qui permet de tirer profit. En même temps, la stratégie est très simple, facile à comprendre et à mettre en œuvre, adaptée aux débutants en trading quantitatif.
/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © EmpiricalFX
//@version=4
strategy("Seasonality Benchmark ","Season",overlay=false,default_qty_type=strategy.percent_of_equity,
default_qty_value=25,initial_capital=100000,currency="USD",
commission_type=strategy.commission.percent,commission_value=0.5)
input_entry_direction = input("Long","Position Type",options=["Long","Short"])
input_entry_month = input("Oct","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
input_exit_month = input("Jan","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
//Convert three character month string to integer
month_str_to_int(m)=>
ret = m == "Jan" ? 1 :
m == "Feb" ? 2 :
m == "Mar" ? 3 :
m == "Apr" ? 4 :
m == "May" ? 5 :
m == "Jun" ? 6 :
m == "Jul" ? 7 :
m == "Aug" ? 8 :
m == "Sep" ? 9 :
m == "Oct" ? 10 :
m == "Nov" ? 11 :
m == "Dec" ? 12 : -1
is_long = input_entry_direction == "Long" ? true : false
entry = month_str_to_int(input_entry_month)
exit = month_str_to_int(input_exit_month)
var balance = strategy.equity
//Entering a position is conditional on:
//1. No currently active trades
//2. Input entry month matches current month
if(strategy.opentrades == 0 and entry == month)
strategy.entry("Swing",is_long)
//Exiting a position is conditional on:
//1. Must have open trade
//2. Input exit month matches current month
if(strategy.opentrades > 0 and exit == month)
strategy.close("Swing")
//Update the balance every time a trade is exited
if(change(strategy.closedtrades)>0)
balance := strategy.equity
plot(strategy.equity,"Equity",color.orange)
plot(balance,"Balance",color.red)