<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on Antoine Boucher</title><link>https://antoineboucher.info/CV/blog/fr/tags/python/</link><description>Recent content in Python on Antoine Boucher</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Mon, 13 Apr 2026 12:00:00 -0400</lastBuildDate><atom:link href="https://antoineboucher.info/CV/blog/fr/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>Similarité entre films et recherche vectorielle</title><link>https://antoineboucher.info/CV/blog/fr/posts/vector-databases-similar-movies/</link><pubDate>Mon, 13 Apr 2026 12:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/vector-databases-similar-movies/</guid><description>&lt;p&gt;Fil conducteur en &lt;strong&gt;trois parties&lt;/strong&gt; sur la &lt;strong&gt;similarité entre films&lt;/strong&gt; : &lt;strong&gt;partie 1&lt;/strong&gt; — embeddings dans &lt;strong&gt;PostgreSQL + pgvector&lt;/strong&gt; et recherche du plus proche voisin en SQL ; &lt;strong&gt;partie 2&lt;/strong&gt; — &lt;strong&gt;Qdrant&lt;/strong&gt; et &lt;strong&gt;MovieLens&lt;/strong&gt; (vecteurs denses pour la recherche sémantique, vecteurs creux pour un voisinage façon filtrage collaboratif) ; &lt;strong&gt;partie 3&lt;/strong&gt; — le même catalogue pgvector comme couche de &lt;strong&gt;récupération&lt;/strong&gt; pour un petit pipeline &lt;strong&gt;RAG&lt;/strong&gt; avec &lt;strong&gt;LangChain&lt;/strong&gt; et &lt;strong&gt;Ollama&lt;/strong&gt;. Ci-dessous, des extraits animés du travail (&lt;code&gt;movie-similarities-1.gif&lt;/code&gt; … &lt;code&gt;3.gif&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Bibliothèque Python pour le trading virtuel MarketWatch</title><link>https://antoineboucher.info/CV/blog/fr/posts/marketwatch-python-trading/</link><pubDate>Mon, 13 Apr 2026 10:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/marketwatch-python-trading/</guid><description>&lt;p&gt;J’ai publié &lt;strong&gt;&lt;a href="https://pypi.org/project/marketwatch/"&gt;marketwatch&lt;/a&gt;&lt;/strong&gt; sur PyPI : un petit client Python pour le &lt;strong&gt;jeu boursier virtuel&lt;/strong&gt; &lt;a href="https://www.marketwatch.com"&gt;MarketWatch&lt;/a&gt; (paper trading), pas l’accès à un courtier réel. Pour scripter des listes de suivi, récupérer les données d’une partie ou du portefeuille, ou expérimenter une automatisation dans le cadre du jeu, le paquet encapsule les flux dans une API simple.&lt;/p&gt;
&lt;h2 id="liens"&gt;Liens&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paquet :&lt;/strong&gt; &lt;a href="https://pypi.org/project/marketwatch/"&gt;pypi.org/project/marketwatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation :&lt;/strong&gt; &lt;a href="https://antoinebou12.github.io/marketwatch/"&gt;antoinebou12.github.io/marketwatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source et tickets :&lt;/strong&gt; &lt;a href="https://github.com/antoinebou12/marketwatch"&gt;github.com/antoinebou12/marketwatch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ce-que-ça-permet"&gt;Ce que ça permet&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Créer et gérer des &lt;strong&gt;listes de suivi&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Lire les détails et paramètres d’une &lt;strong&gt;partie&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Inspecter &lt;strong&gt;portefeuille&lt;/strong&gt;, positions et ordres en attente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acheter&lt;/strong&gt; et &lt;strong&gt;vendre&lt;/strong&gt; (dans le jeu)&lt;/li&gt;
&lt;li&gt;Récupérer le &lt;strong&gt;classement&lt;/strong&gt; d’une partie&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Utile pour explorer des stratégies automatisées ou de petits bots &lt;strong&gt;dans les règles du jeu&lt;/strong&gt; — voir la doc pour les noms de méthodes et les structures retournées.&lt;/p&gt;</description></item><item><title>Installer des paquets Python pour les add-ons Blender (Windows, Blender 4.2+)</title><link>https://antoineboucher.info/CV/blog/fr/posts/blender-python-packages/</link><pubDate>Sat, 08 Feb 2025 12:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/blender-python-packages/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Blender offre une API Python puissante pour scripts, add-ons et plugins. Un point délicat : &lt;strong&gt;installer des paquets Python tiers&lt;/strong&gt; dans l’&lt;strong&gt;environnement Python isolé&lt;/strong&gt; de Blender.&lt;/p&gt;
&lt;p&gt;Contrairement à une installation Python système, Blender embarque son propre interprète : &lt;code&gt;pip&lt;/code&gt; « global » ne suffit pas toujours. Cet article propose une méthode &lt;strong&gt;générale et robuste&lt;/strong&gt; pour installer les dépendances des add-ons tout en restant compatible entre versions.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://antoineboucher.info/CV/blog/posts/blender-python-packages/img-001.png" alt="Espace Scripting de Blender avec l’éditeur de texte et Exécuter le script"&gt;&lt;/p&gt;</description></item><item><title>Plugin ChatGPT avec FastAPI — plan d’implémentation</title><link>https://antoineboucher.info/CV/blog/fr/posts/fastapi-chatgpt-plugin-overview/</link><pubDate>Sat, 01 Jun 2024 10:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/fastapi-chatgpt-plugin-overview/</guid><description>&lt;p&gt;Les &lt;strong&gt;plugins&lt;/strong&gt; de style OpenAI exposent une API HTTP décrite par un document &lt;strong&gt;OpenAPI&lt;/strong&gt; pour que ChatGPT puisse appeler vos outils de façon contrôlée. &lt;strong&gt;FastAPI&lt;/strong&gt; génère OpenAPI automatiquement, ce qui colle bien à ce modèle.&lt;/p&gt;
&lt;h2 id="1-définir-lapi-dans-fastapi"&gt;1. Définir l’API dans FastAPI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Les routes renvoient du &lt;strong&gt;JSON&lt;/strong&gt; avec des formes stables (éviter le texte libre ambigu quand la structure compte).&lt;/li&gt;
&lt;li&gt;Ajoutez &lt;strong&gt;résumés et descriptions&lt;/strong&gt; sur les chemins et les champs — ça aide le modèle à choisir le bon outil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-publier-openapijson"&gt;2. Publier &lt;code&gt;openapi.json&lt;/code&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FastAPI sert &lt;strong&gt;&lt;code&gt;/openapi.json&lt;/code&gt;&lt;/strong&gt; par défaut ; le manifeste du plugin pointe vers cette URL (ou une copie statique versionnée).&lt;/li&gt;
&lt;li&gt;Gardez les schémas &lt;strong&gt;stricts&lt;/strong&gt; : énumérations, champs obligatoires et exemples réduisent les mauvais appels.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-manifeste-du-plugin"&gt;3. Manifeste du plugin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hébergez &lt;strong&gt;&lt;code&gt;ai-plugin.json&lt;/code&gt;&lt;/strong&gt; (ou le format exigé par la doc développeur OpenAI actuelle) en &lt;strong&gt;HTTPS&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Le manifeste référence l’URL de base de l’API et l’emplacement d’OpenAPI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-authentification"&gt;4. Authentification&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Préférez &lt;strong&gt;OAuth&lt;/strong&gt; ou &lt;strong&gt;clés API&lt;/strong&gt; comme documenté pour votre intégration ; ne commitez jamais de secrets.&lt;/li&gt;
&lt;li&gt;Validez les jetons dans les dépendances ou le middleware FastAPI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-déploiement"&gt;5. Déploiement&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Point de terminaison &lt;strong&gt;HTTPS&lt;/strong&gt; joignable depuis les serveurs OpenAI.&lt;/li&gt;
&lt;li&gt;Journalisation et &lt;strong&gt;idempotence&lt;/strong&gt; pour les routes à effets de bord.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-tests-manuels"&gt;6. Tests manuels&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Appelez les routes avec &lt;code&gt;curl&lt;/code&gt; ou HTTPie en utilisant les mêmes charges que le modèle enverra.&lt;/li&gt;
&lt;li&gt;Itérez sur les descriptions et contraintes avant d’ouvrir le trafic.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Les détails évoluent avec les mises à jour de la plateforme OpenAI — suivez toujours la doc la plus récente sur &lt;strong&gt;plugins / tools / actions&lt;/strong&gt; pour la prod.&lt;/p&gt;</description></item><item><title>Backtest d’indicateurs techniques sur plusieurs tickers avec Python</title><link>https://antoineboucher.info/CV/blog/fr/posts/multiple-indicators-backtesting/</link><pubDate>Thu, 30 May 2024 15:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/multiple-indicators-backtesting/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Ce rapport présente une expérimentation sur les indicateurs techniques avec le projet &lt;strong&gt;BatchBacktesting&lt;/strong&gt; sur GitHub : &lt;a href="https://github.com/AlgoETS/BatchBacktesting"&gt;BatchBacktesting&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="installation-des-dépendances"&gt;Installation des dépendances&lt;/h2&gt;
&lt;p&gt;Installez les bibliothèques nécessaires :&lt;/p&gt;
&lt;p&gt;!pip install numpy httpx richp&lt;/p&gt;
&lt;h2 id="imports"&gt;Imports&lt;/h2&gt;
&lt;p&gt;Modules à importer pour le script :&lt;/p&gt;
&lt;p&gt;import pandas as pd&lt;br&gt;
import numpy as np&lt;br&gt;
from datetime import datetime&lt;br&gt;
import httpx&lt;br&gt;
import concurrent.futures&lt;br&gt;
import glob&lt;br&gt;
import warnings&lt;br&gt;
from rich.progress import track&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;ldquo;ignore&amp;rdquo;)&lt;/p&gt;
&lt;h2 id="configuration-api"&gt;Configuration API&lt;/h2&gt;
&lt;p&gt;Remplacez &lt;code&gt;FMP_API_KEY&lt;/code&gt; et &lt;code&gt;BINANCE_API_KEY&lt;/code&gt; par vos clés pour accéder aux services concernés.&lt;/p&gt;</description></item><item><title>Expérimentation des indicateurs technique avec Python et Backtesting</title><link>https://antoineboucher.info/CV/blog/fr/posts/experimentation-indicateurs-backtesting/</link><pubDate>Tue, 14 May 2024 20:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/experimentation-indicateurs-backtesting/</guid><description>&lt;h2 id="faites-du-batch-backtesting-sur-les-cryptos-et-les-stocks"&gt;Faites du Batch Backtesting sur les cryptos et les stocks&lt;/h2&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Dans ce rapport, nous présentons une expérimentation des indicateurs techniques à l’aide du projet BatchBacktesting disponible sur GitHub à l’adresse suivante :&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/AlgoETS/BatchBacktesting/tree/main"&gt;BatchBacktesting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;!pip install numpy httpx rich&lt;/p&gt;
&lt;p&gt;import pandas as pd&lt;br&gt;
import numpy as np&lt;br&gt;
from datetime import datetime&lt;br&gt;
import sys&lt;br&gt;
import os&lt;br&gt;
import httpx&lt;/p&gt;
&lt;p&gt;import concurrent.futures&lt;br&gt;
from datetime import datetime&lt;br&gt;
import glob&lt;br&gt;
import warnings&lt;br&gt;
from rich.progress import track&lt;br&gt;
warnings.filterwarnings(&amp;ldquo;ignore&amp;rdquo;)&lt;/p&gt;</description></item><item><title>Prévoir des cours boursiers avec des simulations Monte Carlo</title><link>https://antoineboucher.info/CV/blog/fr/posts/predicting-stock-prices-monte-carlo/</link><pubDate>Tue, 14 May 2024 09:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/predicting-stock-prices-monte-carlo/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;En finance, on raisonne rarement sur un seul prix « prévu » : il s’agit plutôt de &lt;strong&gt;fourchettes&lt;/strong&gt;, de &lt;strong&gt;risque de queue&lt;/strong&gt; et de &lt;strong&gt;mesurer à quel point&lt;/strong&gt; les modèles simples peuvent se tromper. Cet article déroule une &lt;strong&gt;simulation Monte Carlo de trajectoires&lt;/strong&gt; en Python : on estime dérive et volatilité à partir des clôtures historiques, on simule de nombreux chemins de prix futurs (pas discret façon brownien géométrique), et on résume le tout par une &lt;strong&gt;distribution&lt;/strong&gt; — l’objet adapté aux questions de risque (bandes, quantiles, recouvrement par rapport à une période tenue hors échantillon).&lt;/p&gt;</description></item></channel></rss>