Vous n'êtes pas identifié(e).
L'optimisation bayésienne est une approche probabiliste basée sur un modèle qui permet d'optimiser des fonctions objectives coûteuses à évaluer.
Cette technique est pratique dans les stratégies de trading où le backtesting et le réglage des paramètres peuvent être intensifs en termes de calcul.
Cette stratégie est utile pour les traders plus orientés vers la technique de toutes sortes - des scalpeurs et day traders aux traders de position à plus long terme.
Principaux enseignements:
L'optimisation bayésienne permet d'explorer efficacement des espaces de paramètres de stratégies de trading à haute dimension, dans le but de maximiser la rentabilité.
Elle équilibre intelligemment l'exploration et l'exploitation, c'est-à-dire l'adaptation aux nouvelles conditions du marché et l'évitement des optima locaux.
En incorporant des connaissances préalables et des données historiques, l'optimisation bayésienne peut aider à identifier des stratégies de trading robustes et cohérentes.
La logique bayésienne imite la façon dont les marchés fonctionnent dans le monde réel - en mettant à jour nos croyances au fur et à mesure de l'arrivée de nouvelles informations.
Voici un exemple, étape par étape, de l'application de l'optimisation bayésienne à l'optimisation d'une stratégie commerciale :
Stratégie de trading :
Considérons une stratégie simple de croisement de moyennes mobiles pour laquelle nous disposons de deux paramètres :
La fenêtre de la moyenne mobile à court terme (par exemple, 5 jours) et
La fenêtre de la moyenne mobile à long terme (par exemple, 20 jours).
Paramètres à optimiser :
Fenêtre de la moyenne mobile à court terme (5-50 jours)
Fenêtre de la moyenne mobile à long terme (50-200 jours)
La fonction objective doit refléter les performances de la stratégie de trading.
Les objectifs les plus courants sont la maximisation:
du ratio de Sharpe
du rendement total, ou
de la réduction maximale du drawdown.
Dans cet exemple, nous optimiserons le ratio de Sharpe.
Modèle de substitution
Utiliser un processus gaussien (GP) comme modèle de substitution pour approximer la fonction objective.
Fonction d'acquisition
Utiliser une fonction d'acquisition telle que l'amélioration attendue (EI) ou la limite supérieure de confiance (UCB) pour guider la recherche de l'optimum.
Commencez par quelques points sélectionnés au hasard dans l'espace des paramètres pour initialiser le processus gaussien.
Ajuster le modèle GP
Entraîner le modèle GP sur l'ensemble initial de paramètres et leurs valeurs objectives correspondantes.
Optimiser la fonction d'acquisition
Trouver l'ensemble de paramètres suivant en optimisant la fonction d'acquisition.
Évaluer la fonction objective
Testez la stratégie de trading avec le nouvel ensemble de paramètres et calculez le ratio de Sharpe.
Mise à jour du modèle GP
Incorporer les nouveaux paramètres et leur valeur objective dans le modèle GP.
Poursuivre les itérations jusqu'à ce que les critères de convergence soient remplis, par exemple un nombre maximal d'itérations ou un seuil d'amélioration de la fonction objective.
Voici un exemple de code Python pour l'optimisation bayésienne.
import numpy as np
from skopt import gp_minimize
from skopt.space import Integer
from skopt.utils import use_named_args
# Définir l'espace des paramètres
space = [Integer(5, 50, name='short_window'),
Integer(50, 200, name='long_window')]
# Définir la fonction objective
@use_named_args(space)
def objective(params):
short_window, long_window = params
# Exemple de fonction de backtest (à remplacer par la logique réelle du backtest)
sharpe_ratio = backtest_strategy(short_window, long_window)
return -sharpe_ratio # Minimize the negative Sharpe ratio
# Exemple de fonction de backtest (simplifiée)
def backtest_strategy(short_window, long_window):
# Cette fonction doit mettre en œuvre la logique de backtesting proprement dite
# Pour simplifier, utilisons un ratio de Sharpe fictif
mock_sharpe_ratio = np.random.uniform(0, 2)
return mock_sharpe_ratio
# Effectuer une optimisation bayésienne
res_gp = gp_minimize(objective, space, n_calls=50, random_state=0)
# Sortie des meilleurs paramètres
print(f"Best parameters: Short Window: {res_gp.x[0]}, Long Window: {res_gp.x[1]}")
print(f"Best Sharpe Ratio: {-res_gp.fun}")
Collecte de données
Rassembler les données historiques des prix pour le(s) actif(s) concerné(s).
Prétraitement
Nettoyer les données et calculer les indicateurs nécessaires (par exemple, les moyennes mobiles).
Cadre de backtesting
Mise en œuvre d'un cadre de backtesting robuste capable de simuler des transactions et de calculer des indicateurs de performance.
Boucle d'optimisation bayésienne
Intégrer le cadre de backtesting dans la boucle d'optimisation bayésienne comme indiqué dans l'exemple.
Exécution de l'optimisation
Exécuter le processus d'optimisation pour trouver les paramètres optimaux.
Déploiement de la stratégie
Déployez la stratégie avec les paramètres optimisés dans un environnement de trading réel. Veillez à surveiller en permanence et à mettre à jour si nécessaire.
Cette approche permet une recherche efficace des paramètres optimaux de la stratégie de trading, en s'appuyant sur l'optimisation bayésienne pour traiter efficacement les fonctions objectives coûteuses et bruitées.
Efficacité - Nécessite moins d'évaluations de la fonction objective que les méthodes traditionnelles.
Quantification de l'incertitude - Fournit des estimations de l'incertitude qui guident le processus de recherche.
Flexibilité - Peut être appliquée à un large éventail de problèmes d'optimisation.
Évolutivité - Peut ne pas bien s'adapter aux problèmes de haute dimension en raison de la complexité informatique des processus gaussiens.
Complexité - La mise en œuvre et la compréhension de la méthode peuvent être complexes.
L'optimisation bayésienne est une méthode d'analyse unique pour l'optimisation des fonctions coûteuses de la boîte noire - équilibrant l'exploration et l'exploitation pour trouver efficacement des solutions optimales.
Le trading de CFD implique un risque de perte significatif, il ne convient donc pas à tous les investisseurs. 74 à 89% des comptes d'investisseurs particuliers perdent de l'argent en négociant des CFD.
Hors ligne