Aller au contenu
← Tous les articles
Article

Prévoir des cours boursiers avec des simulations Monte Carlo

Écouter en version balado

Une fourchette, pas un prix · 2:16 · voix synthétiques, script rédigé avec l’IA

Transcription

Sylvie : Si quelqu'un vous annonce qu'Apple clôturera à un prix précis l'an prochain, ne le croyez pas. Pour Antoine, le trading, c'est des fourchettes, pas un chiffre magique.

Thierry : Alors comment on obtient une fourchette ?

Sylvie : Avec une simulation de Monte-Carlo. Il a pris les clôtures quotidiennes d'Apple et estimé la dérive et la volatilité des rendements logarithmiques, en n'utilisant que les données d'avant 2023. Puis il a simulé plein de trajectoires de prix possibles.

Thierry : Et ensuite on compare à ce qui s'est vraiment passé.

Sylvie : Exactement. L'année 2023 servait de test. Les vrais prix sont-ils tombés dans la bande entre le cinquième et le quatre-vingt-quinzième centile des trajectoires simulées ?

Thierry : Comment marche la simulation, en mots simples ?

Sylvie : Chaque jour, on tire un choc aléatoire d'une loi normale, on le multiplie par la volatilité, on ajoute la dérive, et on multiplie le prix par l'exponentielle de ça. Il y a une petite correction, dite d'Itô, pour que la moyenne simulée ne grimpe pas plus vite que ce que l'historique justifie.

Thierry : Donne-moi un chiffre.

Sylvie : Pour Apple, le prix moyen simulé après trois cent soixante-quatre jours était de 206,63 dollars. La vraie clôture du 29 décembre 2023 : 192,53. Un écart de 14,10 dollars, soit environ 7 %.

Thierry : Pas mal, mais pas de la magie.

Sylvie : Et un essai plus tard sur Microsoft, avec les clôtures de 2024, a raté d'environ 14 %. C'est le rappel : une bande bâtie sur la volatilité passée ne dit rien d'une entreprise qui se fait réévaluer.

Thierry : Qu'est-ce que le modèle ne sait pas faire, selon lui ?

Sylvie : La volatilité n'est pas constante, il n'y a pas de sauts comme les annonces de résultats, et la diversification est ignorée. Il distingue aussi ça des MCMC, qui ajustent d'abord une distribution. Ici, c'est l'étape de simulation vers l'avant.

Thierry : Alors, à retenir ?

Sylvie : Monte-Carlo mesure la largeur du risque du modèle. Le backtesting mesure ce qu'une règle de trading aurait rapporté. Il faut séparer les deux questions. L'article complet a le code et les graphiques en éventail.

Prévoir des cours boursiers avec des simulations Monte Carlo
Table des matières

En trading, on raisonne en fourchettes, pas avec un prix magique. J’ai appliqué un Monte Carlo forward aux clôtures quotidiennes d’Apple : estimer la dérive et la volatilité des rendements log avant 2023, simuler beaucoup de trajectoires, puis vérifier si les prix réels de 2023 tombaient dans une bande du 5e au 95e percentile.

1. Monte Carlo forward ou MCMC

OutilQuestion à laquelle il répond
Monte Carlo forward (ce billet)« Jusqu’où le prix peut-il aller sous un modèle simple de type GBM ? »
MCMC (p. ex. l’échantillonnage KDE de Landauskas et Valakevičius)« Quelle distribution colle aux prix observés avant de simuler ? »

Les deux se combinent : ajuster avec MCMC, explorer des scénarios avec des trajectoires forward. Cet article implémente l’étape forward en Python ; AlgoETS/MarkokChainMonteCarlo[1] contient les expériences côté MCMC.

2. Préparation

Bibliothèques : pandas, numpy, httpx, matplotlib, scipy, rich, et en option backtesting / pandas_ta pour les graphiques connexes. Les prix historiques viennent des fonctions d’appel à l’API Financial Modeling Prep du notebook d’origine.

3. Découpage entraînement / validation

On récupère tout l’historique d’AAPL et on coupe au 2023-01-01 :

  • Entraînement : estimer la moyenne et la variance des rendements log.
  • Validation (hold-out) : comparer les bandes simulées aux clôtures réelles.

Séries d’entraînement et de validation

Le même découpage pour AAPL, GOOGL et MSFT montre à quel point les trois titres ont évolué différemment après janvier 2023 :

AAPL, GOOGL et MSFT avant et après 2023

4. Le cœur de la simulation

Rendements log de la fenêtre d’entraînement → dérive et volatilité quotidiennes → chocs gaussiens → propagation du prix avec exp(dérive + vol * Z).

def monte_carlo_simulation(data, days, iterations):
    if isinstance(data, pd.Series):
        data = data.to_numpy()
    if not isinstance(data, np.ndarray):
        raise TypeError("Data must be a numpy array or pandas Series")

    log_returns = np.log(data[1:] / data[:-1])
    mean = np.mean(log_returns)
    variance = np.var(log_returns)
    drift = mean - (0.5 * variance)
    daily_volatility = np.std(log_returns)

    future_prices = np.zeros((days, iterations))
    current_price = data[-1]
    for t in range(days):
        shocks = drift + daily_volatility * norm.ppf(np.random.rand(iterations))
        future_prices[t] = current_price * np.exp(shocks)
        current_price = future_prices[t]
    return future_prices

norm.ppf(np.random.rand(iterations)) transforme des tirages uniformes en chocs normaux centrés réduits : chaque ligne de future_prices correspond à un jour de bourse pour toutes les trajectoires simulées. Le terme - 0.5 * variance est la correction d’Itô ; sans lui, la moyenne de exp(choc) monterait plus vite que ce que justifient les rendements historiques.

Trajectoires simulées à partir de la fenêtre d’entraînement

Fonctions de téléchargement des données et boucles de tracé : article original sur Medium[2].

5. Lire le résultat

  • Éventail de trajectoires grises : la diversité des scénarios.
  • Trajectoires médiane et moyenne : la tendance centrale (pas identiques quand la distribution est asymétrique).
  • Bande 5e–95e : un intervalle de type risque pour « où le prix pourrait atterrir ».
  • Point de validation : la réalité est-elle restée dans la bande à l’horizon correspondant ?

Bande de percentiles et trajectoires simulées

Pour AAPL, le prix moyen simulé après 364 jours était de 206,63 $, contre une clôture réelle de 192,53 $ le 2023-12-29 : un écart de 14,10 $, soit 7,32 %.

Prix moyen simulé face à la clôture réelle du 2023-12-29

Une exécution plus tardive pour AAPL et MSFT, vérifiée sur les clôtures de 2024, donne des éventails plus larges. La moyenne MSFT s’est trompée d’environ 14 % : une bande construite sur la volatilité passée ne dit rien d’une réévaluation du titre.

Éventail de prévision AAPL

Éventail de prévision MSFT

La distribution finale donne des prix par quantile et des percentiles de rendement par rapport à la dernière clôture d’entraînement. C’est utile pour mesurer « à quel point le modèle se trompe », pas comme signal d’achat.

6. Quand le Monte Carlo GBM ne suffit pas

LimiteRéalité
Volatilité constanteLes marchés regroupent la volatilité
Pas de sautsLes publications de résultats créent des écarts
Un seul titreLa diversification est ignorée
Pas un test de stratégieÀ combiner avec les billets de backtesting

7. À retenir

Monte Carlo mesure la largeur du risque modèle sur une fenêtre de validation ; le backtesting mesure le PnL d’une règle. Gardez les deux questions séparées.

8. Articles liés

9. Références


Publié à l’origine sur Medium[2] (en anglais). Le code complet du notebook est dans le dépôt et sur Medium.

Références

  1. AlgoETS. (). MarkokChainMonteCarlo. [Software repository] github.com.
  2. article original sur Medium. (). [Article] medium.com.
  3. Modelling of Stock Prices by MCMC. (). [Web page] ojs.mruni.eu.
  4. Investopedia — Monte Carlo basics. (). [Web page] www.investopedia.com.

Les références utilisent la date de publication de cet article.