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

import yfinance as yf

# 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 yfinance as yf
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 pandas as pd
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 yfinance as yf
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