Récupération de données financières en Python
Dans cette section, nous examinons d'abord un exemple simple de trading quantitatif en Python qui utilise la stratégie de moyenne mobile avec les données Yahoo Finance.
L'idée de base de cette stratégie est de générer des signaux d'achat et de vente en comparant les moyennes mobiles à court terme et à long terme.
Avant de mettre en œuvre cet exemple simple, vous devez installer trois paquets :
pip install pandas numpy matplotlib yfinance
Descriptions des paquets :
- pandasest une puissante bibliothèque open source de traitement et d'analyse de données, spécialement conçue pour l'analyse et la manipulation efficaces des données.
- numpyFournit un support pour les tableaux et les matrices pour les calculs mathématiques.
- yfinanceest une bibliothèque pour récupérer des données financières, prenant en charge la récupération d'actions, d'indices et d'autres données du marché financier depuis Yahoo Finance.
- matplotlibest une bibliothèque de traçage 2D utilisée pour créer des graphiques de visualisation de données statiques, animés et interactifs.
Récupérer les données historiques des actions
Utilisez yfinance pour récupérer les données historiques des actions. Voici un exemple simple :
Exemple
# Fetch stock data
symbol = "600519.SS"
start_date = "2022-01-01"
end_date = "2023-01-01"
data = yf.download(symbol, start=start_date, end=end_date)
print(data.head())
La sortie est la suivante :
Open High Low Close Adj Close Volume
Date
2022-01-04 2055.00000 2068.949951 2014.000000 2051.229980 1973.508057 3384262
2022-01-05 2045.00000 2065.000000 2018.000000 2024.000000 1947.309937 2839551
2022-01-06 2022.01001 2036.000000 1938.510010 1982.219971 1907.112915 5179475
2022-01-07 1975.00000 1988.880005 1939.319946 1942.000000 1868.416870 2981669
2022-01-10 1928.01001 1977.000000 1917.550049 1966.000000 1891.507446 2962670
Analyse et visualisation simples de données
Utilisez pandas pour l'analyse de données et matplotlib pour la visualisation :
Exemple
import pandas as pd
import matplotlib.pyplot as plt
# Fetch stock data
symbol = "600519.SS"
start_date = "2022-01-01"
end_date = "2023-01-01"
data = yf.download(symbol, start=start_date, end=end_date)
# Analyse simple des données
print(data.describe())
# Tracer le graphique de tendance du cours de l'action
data['Close'].plot(figsize=(10, 6), label=symbole)
plt.title(f"Cours de l'action {symbol}")
plt.xlabel("Date")
plt.ylabel("Prix")
plt.legend()
plt.show()
Le graphique de tendance est présenté ci-dessous :

Stratégie de croisement de moyennes mobiles
Ensuite, nous pouvons utiliser la bibliothèque Yahoo Finance (yfinance) pour récupérer les données boursières de Guizhou Moutai (600519.SS) et donner une simple démonstration basée sur la stratégie de moyenne mobile :
Exemple
import yfinance as yf
import matplotlib.pyplot as plt
# Récupérer les données boursières de Guizhou Moutai
symbol = "600519.SS"
start_date = "2022-05-01"
end_date = "2023-12-01"
data = yf.download(symbol, start=start_date, end=end_date)
# Calculer les moyennes mobiles à court terme (50 jours) et à long terme (200 jours)
data['MA_50'] = data['Close'].rolling(window=50).mean()
data['MA_200'] = data['Close'].rolling(window=200).mean()
# Générer des signaux d'achat/vente
data['Signal'] = 0
data['Signal'][data['MA_50'] > data['MA_200']] = 1 # La moyenne mobile à court terme croise au-dessus de la moyenne mobile à long terme, générant un signal d'achat
data['Signal'][data['MA_50'] < data['MA_200']] = -1 # La moyenne mobile à court terme croise en dessous de la moyenne mobile à long terme, générant un signal de vente
# Tracer le cours de l'action et les moyennes mobiles
plt.figure(figsize=(10, 6))
plt.plot(data['Close'], label='Prix de clôture')
plt.plot(data['MA_50'], label='Moyenne mobile sur 50 jours')
plt.plot(data['MA_200'], label='Moyenne mobile sur 200 jours')
# Marquer les signaux d'achat/vente
plt.scatter(data[data['Signal'] == 1].index, data[data['Signal'] == 1]['MA_50'], marker='^', color='g', label='Signal d’achat')
plt.scatter(data[data['Signal'] == -1].index, data[data['Signal'] == -1]['MA_50'], marker='v', color='r', label='Signal de vente')
plt.title("Prix de l’action Maotai avec moyennes mobiles")
plt.xlabel("Date")
plt.ylabel("Prix (CNY)")
plt.legend()
plt.show()
L’exemple de code ci-dessus utilise les données boursières de Guizhou Moutai (600519.SS) pour calculer les moyennes mobiles sur 50 jours et 200 jours, et génère des signaux d’achat/de vente en comparant la relation entre les deux.
Enfin, Matplotlib est utilisé pour tracer le graphique de tendance du cours de l’action et marquer les signaux d’achat/de vente.
N’oubliez pas d’étudier et de tester soigneusement les stratégies dans le cadre de transactions réelles, et ne réalisez pas d’investissements réels directement sur la base de ce qui précède.
Exécutez le code ci-dessus, le graphique de sortie est le suivant : les parties vertes sont des signaux d’achat, les parties rouges sont des signaux de vente. Cliquez sur l’image pour zoomer et voir les détails :
Stratégie de backtesting
J’ai utilisé les rendements boursiers quotidiens positifs ou négatifs pour générer des signaux de trading afin de démontrer un exemple simple. Vous pouvez modifier cette condition selon votre propre stratégie.
Exemple
import pandas as pd
import matplotlib.pyplot as plt
# Fetch stock data
symbol = "600519.SS"
start_date = "2023-01-01"
end_date = "2023-12-01"
data = yf.download(symbol, start=start_date, end=end_date)
# Initialiser la colonne de signal de croisement
data['Signal'] = 0
# Calculer les rendements quotidiens
data['Daily_Return'] = data['Close'].pct_change()
# Calculer les signaux de stratégie
data['Signal'] = 0
data.loc[data['Daily_Return'] > 0, 'Signal'] = 1 # Utiliser la hausse du prix comme signal ; modifier la condition selon les besoins
# Calculer les rendements de la stratégie
data['Strategy_Return'] = data['Signal'].shift(1) * data['Daily_Return']
# Calculer les rendements cumulés
data['Cumulative_Return'] = (1 + data['Strategy_Return']).cumprod()
# Tracer la courbe de rendement cumulé
plt.figure(figsize=(10, 6))
plt.plot(data['Cumulative_Return'], label='Rendement cumulé de la stratégie', color='b')
plt.plot(data['Close'] / data['Close'].iloc[0], label='Rendement cumulé du titre', color='g')
plt.title("Rendement cumulé de la stratégie par rapport à l'action")
plt.xlabel("Date")
plt.ylabel("Rendement cumulé")
plt.legend()
plt.show()
Exécutez le code ci-dessus, le graphique de sortie est le suivant :

Stratégies de base de trading quantitatif
Le trading quantitatif repose sur des modèles mathématiques, des statistiques et des algorithmes informatiques, et identifie et exécute des opportunités de trading au moyen de méthodes systématiques.
Voici quelques stratégies de base courantes de trading quantitatif :
Le trading quantitatif repose sur des modèles mathématiques, des statistiques et des algorithmes informatiques, et identifie et exécute des opportunités de trading au moyen de méthodes systématiques.
Voici quelques stratégies de base courantes de trading quantitatif :
1. Stratégie de moyenne mobile
Idée de la stratégie :Sur la base de la moyenne historique des cours des actions, des signaux d'achat et de vente sont générés en calculant la différence entre les moyennes mobiles à court terme et à long terme.
Méthode d'implémentation :Calculez les moyennes mobiles à court terme et à long terme. Lorsque la moyenne mobile à court terme croise au-dessus de la moyenne mobile à long terme, un signal d'achat est généré ; inversement, un signal de vente est généré.
2. Stratégie de retour à la moyenne
Idée de la stratégie :En se fondant sur les fluctuations historiques des prix, elle estime que les prix reviendront à leur niveau moyen après avoir fluctué.
Méthode de mise en œuvre :En calculant l'écart entre le prix et la moyenne, un signal d'achat ou de vente est généré lorsque le prix s'écarte trop de la moyenne.
3. Stratégie de momentum
Idée de la stratégie :En se fondant sur les tendances des prix, elle estime que les tendances des prix se poursuivront pendant un certain temps.
Méthode de mise en œuvre :Des signaux d'achat ou de vente sont générés en calculant le taux de variation du prix ou d'autres indicateurs de tendance.
4. Stratégie neutre au marché
Idée de la stratégie :En achetant et en vendant simultanément pour tirer parti de la force relative du marché.
Méthode de mise en œuvre :Générer des signaux de trading en se fondant sur l'écart de prix ou la corrélation entre deux actifs liés ou plus.
5. Stratégie d'arbitrage statistique
Idée de la stratégie :En se fondant sur des principes statistiques, rechercher les déséquilibres temporaires entre les prix pour réaliser un arbitrage.
Méthode de mise en œuvre :Générer des signaux de trading en recherchant les valeurs aberrantes dans les prix, la volatilité ou d'autres indicateurs statistiques.
6. Stratégie événementielle
Idée de stratégie :Générer des signaux de trading en fonction de la survenue d'événements ou d'informations spécifiques.
Méthode de mise en œuvre :Surveiller les actualités, les rapports financiers, les indicateurs économiques, etc., et exécuter des transactions lorsque des événements spécifiques se produisent.
7. Stratégie d'apprentissage automatique
Idée de stratégie :Utiliser des algorithmes d'apprentissage automatique pour apprendre des motifs à partir de grandes quantités de données et prédire les tendances futures des prix.
Méthode de mise en œuvre :Utiliser des modèles de régression, de classification ou d'apprentissage profond, et entraîner les modèles à prédire les tendances du marché.
8. Stratégie de trading à haute fréquence
Idée de stratégie :Exploiter de petites différences de prix sur des périodes extrêmement courtes en exécutant rapidement un grand nombre de transactions.
Méthode de mise en œuvre :Utiliser des algorithmes performants et des systèmes d'exécution rapides, impliquant généralement un grand nombre de transactions et des périodes de détention courtes.
Ces stratégies ne représentent qu'une petite partie du domaine du trading quantitatif. En fait, les stratégies de trading quantitatif se présentent sous de nombreuses formes et peuvent être ajustées en fonction du marché, de la classe d'actifs et des préférences du trader. Il est important de noter que la conception de stratégies quantitatives nécessite des backtests approfondis et des considérations de gestion des risques afin de garantir leur efficacité dans différents environnements de marché.
Autres extensions