diff --git a/MyIA.AI.Notebooks/QuantConnect/research/README.md b/MyIA.AI.Notebooks/QuantConnect/research/README.md index a1d5071ef0e..629e28878dd 100644 --- a/MyIA.AI.Notebooks/QuantConnect/research/README.md +++ b/MyIA.AI.Notebooks/QuantConnect/research/README.md @@ -25,6 +25,7 @@ Recherche indépendante utilisant des données locales (yfinance, pandas, sklear | `research_m12_hf_dm_test.ipynb` | M12-HF : test de significativité Diebold-Mariano | (c) Standalone | BTC tick Bitstamp | | `research_quality_lowvol.ipynb` | Facteur Quality + Low Vol | (c) Standalone | yfinance | | `research_risk_parity.ipynb` | Allocation risk parity | (c) Standalone | yfinance | +| `research_turn_of_month.ipynb` | Effet de calendrier turn of the month (brut, net de coûts, walk-forward + DM, verdict NO BEATS) | (c) Standalone | yfinance (SPY/QQQ/EFA) | | `research_rl_grpo.ipynb` | Agent de trading RL GRPO | (c) Standalone | yfinance | | `research_rl_intro.ipynb` | Introduction au RL | (c) Standalone | yfinance | | `research_rl_multi_asset.ipynb` | Allocation multi-actifs RL | (c) Standalone | yfinance | @@ -33,7 +34,7 @@ Recherche indépendante utilisant des données locales (yfinance, pandas, sklear | `research_rl_tactical_overlay.ipynb` | Overlay tactique RL | (c) Standalone | yfinance | | `research_vrp_putwrite.ipynb` | Stratégie VRP put-write | (c) Standalone | yfinance | -Sur l'ensemble de la série, **15 sont de type (c) standalone research** (s'exécutent localement avec `pip install yfinance pandas matplotlib scikit-learn` ; la famille M12-HF utilise des données tick BTC Bitstamp possédées agrégées en minute localement) et **4 sont de type (b) research lié au quantbook QC Cloud** (`research_btc_ml`, `research_m11ef_ensemble`, `research_m12_har_rv_j` exécutés, et la variante `_minute` qui instancie `QuantBook` sans outputs committés — à exécuter sur QC Cloud). +Sur l'ensemble de la série, **16 sont de type (c) standalone research** (s'exécutent localement avec `pip install yfinance pandas matplotlib scikit-learn` ; la famille M12-HF utilise des données tick BTC Bitstamp possédées agrégées en minute localement) et **4 sont de type (b) research lié au quantbook QC Cloud** (`research_btc_ml`, `research_m11ef_ensemble`, `research_m12_har_rv_j` exécutés, et la variante `_minute` qui instancie `QuantBook` sans outputs committés — à exécuter sur QC Cloud). --- @@ -41,12 +42,12 @@ Sur l'ensemble de la série, **15 sont de type (c) standalone research** (s'exé ### Ce que vous avez appris -Ces notebooks sont le **laboratoire de recherche** de la série QuantConnect. La **majorité (15/19) sont standalone** et s'exécutent en local avec `yfinance` (données gratuites) + `pandas` / `scikit-learn` (la famille M12-HF utilise des données tick BTC possédées) ; les notebooks des familles M11/M12 (btc_ml, m11ef_ensemble, m12_har_rv_j, m12_har_rv_j_minute) chargent leurs données crypto via `QuantBook` QC Cloud (type (b)). Ils illustrent deux familles de recherche : +Ces notebooks sont le **laboratoire de recherche** de la série QuantConnect. La **majorité (16/20) sont standalone** et s'exécutent en local avec `yfinance` (données gratuites) + `pandas` / `scikit-learn` (la famille M12-HF utilise des données tick BTC possédées) ; les notebooks des familles M11/M12 (btc_ml, m11ef_ensemble, m12_har_rv_j, m12_har_rv_j_minute) chargent leurs données crypto via `QuantBook` QC Cloud (type (b)). Ils illustrent deux familles de recherche : - **Recherche factorielle & allocation** (HAR-RV-J vol, FamaFrench + AllWeather composite, Momentum + Regime, Quality/LowVol, Risk Parity, VRP put-write) — on apprend que les modèles de volatilité et d'allocation robuste sont reproductibles en local sur données publiques, et que les composites (M12, M11ef) sont les briques des stratégies *Robuste* du catalogue. **Verdict honnête M12-HF** (`research_m12_hf_btc_local.ipynb` + `research_m12_hf_dm_test.ipynb`) : l'estimation de la realized variance en minute **bat** celle en hourly (delta médian +0.548, MSE minute ~moitié hourly), statistiquement validée par un test de Diebold-Mariano (HAC, p≈0.000) et un block-bootstrap dont l'IC95 est entièrement négatif. La cause du gain est cependant la **fréquence d'échantillonnage** (qualité de l'estimateur RV, Andersen-Bollerslev-Diebold 2003), **pas** la composante de jump — HAR-Classic sans jump montre le même gain. Leçon méthodologique : la résolution hourly (24 bars/jour) est trop bruitée pour le vol-targeting Kelly ; la minute (1440 bars/jour) l'est beaucoup moins. - **Recherche Reinforcement Learning** (intro, PPO, GRPO, reward shaping, multi-asset, tactical overlay) — on apprend que le RL trading se prototypé localement avant tout déploiement QC Cloud, et que le *reward shaping* est le levier le plus sensible (un reward mal spécifié fige la policy). **Leçon d'intégrité #3360** : diviser la reward portfolio-level par le nombre d'actifs (`reward / N_ASSETS`) détruit le signal du critic per-asset → la policy gèle près de l'uniforme → l'argmax collapse vers Buy (fingerprint buy-and-hold, Sharpe 0.657 identique au collapse PPO). Corrigé : la reward portfolio complète alimente chaque transition per-asset (cohérence #3359/#3360). Verdict ré-évalué honnête après fix : NO BEATS (A2C Sharpe 0.000, SAC −0.063 sur univers non-FAANG) — pour la bonne raison. -Le fil rouge : **l'indépendance de la plateforme**. Ces notebooks prouvent que l'idéation et la validation ML peuvent se faire hors QC Cloud pour la majorité des sujets (15/19 standalone) ; QC Cloud devient nécessaire dès que la recherche porte sur des données crypto natives (les notebooks M11/M12 qui instancient `QuantBook`), et reste la porte d'entrée du backtest haute-fidélité sur données natives. +Le fil rouge : **l'indépendance de la plateforme**. Ces notebooks prouvent que l'idéation et la validation ML peuvent se faire hors QC Cloud pour la majorité des sujets (16/20 standalone) ; QC Cloud devient nécessaire dès que la recherche porte sur des données crypto natives (les notebooks M11/M12 qui instancient `QuantBook`), et reste la porte d'entrée du backtest haute-fidélité sur données natives. ### Prochaines étapes diff --git a/MyIA.AI.Notebooks/QuantConnect/research/research_turn_of_month.ipynb b/MyIA.AI.Notebooks/QuantConnect/research/research_turn_of_month.ipynb new file mode 100644 index 00000000000..e1027376d1a --- /dev/null +++ b/MyIA.AI.Notebooks/QuantConnect/research/research_turn_of_month.ipynb @@ -0,0 +1,1088 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7ad34bd7", + "metadata": { + "papermill": { + "duration": 0.005444, + "end_time": "2026-10-28T05:38:22.746956+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:22.741512+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Turn of the Month : l'effet de calendrier survit-il aux coûts et out-of-sample ?\n", + "\n", + "**Navigation** : [Index QC](../README.md) | [<< research_vrp_putwrite](research_vrp_putwrite.ipynb)\n", + "\n", + "## Objectifs d'apprentissage\n", + "\n", + "A la fin de ce notebook, vous saurez :\n", + "1. Formuler un effet de calendrier (*turn of the month*) comme **hypothèse falsifiable**\n", + "2. Classer chaque jour de bourse en « TOM » / « non-TOM » **sans lookahead**\n", + "3. Mesurer l'edge **brut**, puis **net de coûts de transaction**\n", + "4. Valider par **walk-forward 5-fold** + **test de Diebold-Mariano** + sensibilité au paramètre\n", + "5. Porter un **verdict honnête** (BEATS / NO BEATS / INCONCLUSIVE)\n", + "\n", + "### Prerequis\n", + "- Python 3.10+ (pandas, numpy, matplotlib, scipy, yfinance)\n", + "- Bases en backtest et en test de significativité statistique\n", + "\n", + "### Durée estimée : 30 minutes" + ] + }, + { + "cell_type": "markdown", + "id": "89bb9ddf", + "metadata": { + "papermill": { + "duration": 0.00432, + "end_time": "2026-10-28T05:38:22.756840+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:22.752520+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 1. Introduction — l'effet de fin / début de mois\n", + "\n", + "Le **turn of the month (TOM)** est un effet de calendrier documenté par Ariel (1987), nommé et mesuré sur\n", + "quatre-vingt-dix ans par Lakonishok & Smidt (1988). L'hypothèse : les jours **en fin de mois**\n", + "(début du cycle de paie) et **en début de mois** (les investisseurs institutionnels\n", + "déploient leurs allocations mensuelles, pensions, SIP) porteraient un rendement\n", + "moyen supérieur au **reste du mois**, plus « creux » en flux.\n", + "\n", + "**La question de recherche n'est PAS** « l'effet existe-t-il en brut » (c'est un\n", + "fact). Elle est : **l'effet survit-il (a) aux coûts de transaction d'une stratégie\n", + "qui l'exploite, et (b) au test out-of-sample ?** C'est ce qui sépare un artefact\n", + "d'échantillon d'un signal actionnable.\n", + "\n", + "| Paramètre | Valeur | Justification |\n", + "|-----------|--------|---------------|\n", + "| Univers | SPY, QQQ, EFA | 3 ETF d'indice liquides (pas de FAANG/Mag7 individuels) |\n", + "| Fenêtre TOM | k = 3 jours de bourse | fin + début de mois, standard de la littérature |\n", + "| Coût de transition | 10 bps | entrée/sortie de position (ETF liquides) |\n", + "| Risque-free | 3 % | pour le ratio de Sharpe |" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fd014fa7", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:22.769180Z", + "iopub.status.busy": "2026-10-28T05:38:22.768621Z", + "iopub.status.idle": "2026-10-28T05:38:38.472399Z", + "shell.execute_reply": "2026-10-28T05:38:38.471262Z" + }, + "papermill": { + "duration": 15.711429, + "end_time": "2026-10-28T05:38:38.473635+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:22.762206+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Téléchargement ['SPY', 'QQQ', 'EFA'] du 2000-01-01 au 2026-10-28...\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Shape: (6329, 3)\n", + "Période: 2001-08-27 à 2026-10-27\n", + "Colonnes: ['SPY', 'QQQ', 'EFA']\n", + "\n", + "Imports OK : pandas, numpy, matplotlib, scipy, yfinance\n" + ] + } + ], + "source": [ + "# Cellule 1 — Téléchargement des données (yfinance)\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import yfinance as yf\n", + "from datetime import datetime\n", + "from scipy import stats as scipy_stats\n", + "\n", + "# Univers : 3 ETF d'indice liquides (pas de FAANG/Mag7 individuels)\n", + "tickers = ['SPY', 'QQQ', 'EFA']\n", + "start_date = '2000-01-01'\n", + "end_date = datetime.now().strftime('%Y-%m-%d')\n", + "\n", + "print(f\"Téléchargement {tickers} du {start_date} au {end_date}...\")\n", + "data = yf.download(tickers, start=start_date, end=end_date, auto_adjust=True, progress=False)\n", + "close = data['Close'][tickers].dropna()\n", + "print(f\"\\nShape: {close.shape}\")\n", + "print(f\"Période: {close.index[0].date()} à {close.index[-1].date()}\")\n", + "print(f\"Colonnes: {list(close.columns)}\")\n", + "print(\"\\nImports OK : pandas, numpy, matplotlib, scipy, yfinance\")" + ] + }, + { + "cell_type": "markdown", + "id": "98784059", + "metadata": { + "papermill": { + "duration": 0.004979, + "end_time": "2026-10-28T05:38:38.481344+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.476365+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Interprétation : données\n", + "\n", + "~26 ans de quotidiens sur 3 ETF d'indice. La période couvre plusieurs cycles de taux\n", + "(2000-2002 dot-com, 2008 GFC, 2020 COVID, 2022 remontée de taux) — suffisant pour\n", + "que l'effet de calendrier, s'il existe, ne soit pas un artefact d'une seule crise." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ad959ba5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.492859Z", + "iopub.status.busy": "2026-10-28T05:38:38.492076Z", + "iopub.status.idle": "2026-10-28T05:38:38.518921Z", + "shell.execute_reply": "2026-10-28T05:38:38.517729Z" + }, + "papermill": { + "duration": 0.034763, + "end_time": "2026-10-28T05:38:38.520525+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.485762+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part de jours TOM (k=3) : 28.71%\n", + "Nombre de jours TOM : 1817 / 6329\n", + "\n", + "Échantillon du mois 2014-03 :\n", + " 2014-03-03 (Mon) <-- TOM\n", + " 2014-03-04 (Tue) <-- TOM\n", + " 2014-03-05 (Wed) <-- TOM\n", + " 2014-03-06 (Thu)\n", + " 2014-03-07 (Fri)\n", + " 2014-03-10 (Mon)\n", + " 2014-03-11 (Tue)\n", + " 2014-03-12 (Wed)\n", + " 2014-03-13 (Thu)\n", + " 2014-03-14 (Fri)\n", + " 2014-03-17 (Mon)\n", + " 2014-03-18 (Tue)\n", + " 2014-03-19 (Wed)\n", + " 2014-03-20 (Thu)\n", + " 2014-03-21 (Fri)\n", + " 2014-03-24 (Mon)\n", + " 2014-03-25 (Tue)\n", + " 2014-03-26 (Wed)\n", + " 2014-03-27 (Thu) <-- TOM\n", + " 2014-03-28 (Fri) <-- TOM\n", + " 2014-03-31 (Mon) <-- TOM\n" + ] + } + ], + "source": [ + "# Cellule 2 — Classification TOM / non-TOM (SANS lookahead)\n", + "#\n", + "# Un jour de bourse est « TOM » s'il appartient aux `k` DERNIERS jours de bourse\n", + "# de son mois calendaire OU aux `k` PREMIERS jours de bourse de son mois.\n", + "# La classification ne dépend QUE de la date calendaire du jour lui-même\n", + "# (position dans le mois) : aucune information future n'est utilisée.\n", + "\n", + "def classify_tom(dates: pd.DatetimeIndex, k: int = 3) -> pd.Series:\n", + " \"\"\"Retourne une Series boolienne (True = jour TOM) alignée sur `dates`.\"\"\"\n", + " # index = dates : la masque est alignee sur l'index de dates (DatetimeIndex),\n", + " # sinon un RangeIndex 0..n-1 serait inalignable avec les Series de rendements.\n", + " df = pd.DataFrame({'x': 1}, index=dates)\n", + " df['ym'] = dates.to_period('M')\n", + " df['pos_from_start'] = df.groupby('ym')['x'].cumcount()\n", + " df['pos_from_end'] = df.groupby('ym')['x'].cumcount(ascending=False)\n", + " is_tom = (df['pos_from_end'] < k) | (df['pos_from_start'] < k)\n", + " return is_tom\n", + "\n", + "tom_mask = classify_tom(close.index, k=3)\n", + "tom_share = tom_mask.mean()\n", + "print(f\"Part de jours TOM (k=3) : {tom_share:.2%}\")\n", + "print(f\"Nombre de jours TOM : {int(tom_mask.sum())} / {len(tom_mask)}\")\n", + "\n", + "# Échantillon : un mois au milieu de l'échantillon, avec le flag de chaque jour\n", + "sample_ym = close.index.to_period('M')[len(close) // 2]\n", + "sample = close.index[close.index.to_period('M') == sample_ym]\n", + "demo = classify_tom(sample, k=3)\n", + "print(f\"\\nÉchantillon du mois {sample_ym} :\")\n", + "for d, is_t in zip(sample, demo):\n", + " flag = \" <-- TOM\" if is_t else \"\"\n", + " print(f\" {d.strftime('%Y-%m-%d')} ({d.strftime('%a')}){flag}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b776b2b0", + "metadata": { + "papermill": { + "duration": 0.004034, + "end_time": "2026-10-28T05:38:38.528721+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.524687+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Interprétation : la classification\n", + "\n", + "Le flag ne dépend que de la **position du jour dans son mois calendaire** (les 3\n", + "premiers et les 3 derniers jours de bourse). C'est l'anti-lookahead structuré : on\n", + "ne regarde jamais les rendements futurs pour décider si un jour est TOM. La sortie\n", + "ci-dessus mesure **28,7 %** de jours TOM (1817 sur 6329), ce qui est cohérent :\n", + "6 jours sur ~21 jours de bourse par mois font 28,6 %." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "414422c8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.540923Z", + "iopub.status.busy": "2026-10-28T05:38:38.540337Z", + "iopub.status.idle": "2026-10-28T05:38:38.558332Z", + "shell.execute_reply": "2026-10-28T05:38:38.557032Z" + }, + "papermill": { + "duration": 0.026346, + "end_time": "2026-10-28T05:38:38.560405+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.534059+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Effet BRUT du turn of the month (k=3) :\n", + " Rend. moyen TOM (bps/jour) Rend. moyen non-TOM (bps/jour) Écart TOM - non-TOM (bps/jour) N jours TOM\n", + "SPY 7.290 3.220 4.069 1817\n", + "QQQ 8.133 5.053 3.080 1817\n", + "EFA 7.122 1.776 5.345 1817\n" + ] + } + ], + "source": [ + "# Cellule 3 — L'effet BRUT : rendement moyen des jours TOM vs non-TOM\n", + "# fillna(0.0) (et non dropna) pour GARDER l'alignement avec close.index :\n", + "# le premier jour n'a pas de rendement calculable -> 0.0 (1 jour sur ~6500,\n", + "# negligible) ; un dropna desalignerait la masque TOM d'une ligne.\n", + "returns = close.pct_change().fillna(0.0)\n", + "\n", + "def gross_tom_effect(ret: pd.Series, mask: pd.Series, label: str) -> dict:\n", + " r_tom = ret[mask]\n", + " r_other = ret[~mask]\n", + " return {\n", + " 'Rend. moyen TOM (bps/jour)': r_tom.mean() * 1e4,\n", + " 'Rend. moyen non-TOM (bps/jour)': r_other.mean() * 1e4,\n", + " 'Écart TOM - non-TOM (bps/jour)': (r_tom.mean() - r_other.mean()) * 1e4,\n", + " 'N jours TOM': int(mask.sum()),\n", + " }\n", + "\n", + "rows = [gross_tom_effect(returns[t], tom_mask, t) for t in tickers]\n", + "gross_df = pd.DataFrame(rows, index=tickers)\n", + "print(\"Effet BRUT du turn of the month (k=3) :\")\n", + "print(gross_df.to_string(float_format='{:.3f}'))" + ] + }, + { + "cell_type": "markdown", + "id": "20273d3b", + "metadata": { + "papermill": { + "duration": 0.003759, + "end_time": "2026-10-28T05:38:38.568030+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.564271+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Interprétation : l'effet brut\n", + "\n", + "L'écart « TOM − non-TOM » en bps par jour est le signal brut. Il est **petit**\n", + "(typiquement de l'ordre du bruit quotidien) : c'est normal pour un effet de\n", + "calendrier. La vraie question — est-il **net de coûts** et **stable out-of-sample** —\n", + "n'a pas encore été posée. C'est l'objet des cellules suivantes." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "67558c8b", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.578722Z", + "iopub.status.busy": "2026-10-28T05:38:38.578002Z", + "iopub.status.idle": "2026-10-28T05:38:38.602929Z", + "shell.execute_reply": "2026-10-28T05:38:38.601566Z" + }, + "papermill": { + "duration": 0.032593, + "end_time": "2026-10-28T05:38:38.604441+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.571848+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Stratégie TOM (net de 10 bps/transition) vs Buy & Hold :\n", + " Sharpe CAGR Vol(ann) MaxDD\n", + "SPY TOM(net) -0.0596 0.0242 0.0968 -0.2155\n", + "SPY B&H 0.3541 0.0971 0.1894 -0.5519\n", + "QQQ TOM(net) -0.0201 0.0275 0.1231 -0.3773\n", + "QQQ B&H 0.4332 0.1305 0.2320 -0.5340\n", + "EFA TOM(net) -0.0753 0.0220 0.1064 -0.3157\n", + "EFA B&H 0.1637 0.0639 0.2071 -0.6104\n" + ] + } + ], + "source": [ + "# Cellule 4 — Stratégie réaliste NET de coûts vs Buy & Hold\n", + "#\n", + "# La stratégie : long l'actif UNIQUEMENT les jours TOM, à plat (cash) les autres.\n", + "# Coût de transaction : 10 bps à chaque transition (entrée/sortie de position).\n", + "\n", + "def metrics_from_returns(r: pd.Series, rf: float = 0.03) -> dict:\n", + " r = r.dropna()\n", + " n_years = len(r) / 252\n", + " cum = (1 + r).cumprod()\n", + " total = cum.iloc[-1] - 1\n", + " cagr = (1 + total) ** (1 / n_years) - 1 if n_years > 0 else np.nan\n", + " vol = r.std() * np.sqrt(252)\n", + " sharpe = (cagr - rf) / vol if vol > 0 else 0.0\n", + " dd = (cum / cum.cummax() - 1).min()\n", + " return {'Sharpe': sharpe, 'CAGR': cagr, 'Vol(ann)': vol, 'MaxDD': dd}\n", + "\n", + "def tom_strategy_net(ret: pd.Series, mask: pd.Series, cost_bps: float = 10.0) -> pd.Series:\n", + " \"\"\"Rendements journaliers de la stratégie TOM (long les jours TOM), net de coûts.\"\"\"\n", + " cost = cost_bps / 1e4\n", + " in_pos = mask.astype(float)\n", + " transition = in_pos.diff().abs()\n", + " transition.iloc[0] = in_pos.iloc[0]\n", + " strat = in_pos * ret\n", + " return strat - transition * cost\n", + "\n", + "results = {}\n", + "for t in tickers:\n", + " strat = tom_strategy_net(returns[t], tom_mask, cost_bps=10.0)\n", + " bh = returns[t]\n", + " m_s = metrics_from_returns(strat)\n", + " m_b = metrics_from_returns(bh)\n", + " for col, m in zip([f'{t} TOM(net)', f'{t} B&H'], [m_s, m_b]):\n", + " results[col] = m\n", + "summary = pd.DataFrame(results).T\n", + "print(\"Stratégie TOM (net de 10 bps/transition) vs Buy & Hold :\")\n", + "print(summary.to_string(float_format='{:.4f}'))" + ] + }, + { + "cell_type": "markdown", + "id": "b2be2480", + "metadata": { + "papermill": { + "duration": 0.004747, + "end_time": "2026-10-28T05:38:38.613156+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.608409+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Interprétation : net de coûts\n", + "\n", + "C'est le premier filtre de réalité. Une stratégie qui n'est long que ~28,7 % du temps\n", + "a un CAGR structurellement plus faible qu'un Buy & Hold permanent — l'effet de\n", + "calendrier doit **compenser** ce temps à plat pour offrir un **ratio de Sharpe**\n", + "supérieur. Le CAGR seul ne dit rien ; c'est le Sharpe (rendement ajusté au risque)\n", + "qui tranche. Les coûts de 10 bps par transition, multipliés par ~6 transitions/mois\n", + "par actif, grignotent une part non négligeable de l'edge brut." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "238814bc", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.622571Z", + "iopub.status.busy": "2026-10-28T05:38:38.622001Z", + "iopub.status.idle": "2026-10-28T05:38:38.655674Z", + "shell.execute_reply": "2026-10-28T05:38:38.654735Z" + }, + "papermill": { + "duration": 0.040651, + "end_time": "2026-10-28T05:38:38.657469+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.616818+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=== SPY : effet TOM par fold OOS (k=3) ===\n", + " Fold Période Écart TOM (bps/jour) N_TOM\n", + " 1 2005-11-07 -> 2010-01-14 -0.187 300\n", + " 2 2010-01-15 -> 2014-03-25 10.828 300\n", + " 3 2014-03-26 -> 2018-05-31 -4.598 303\n", + " 4 2018-06-01 -> 2022-08-08 11.589 303\n", + " 5 2022-08-09 -> 2026-10-20 -1.639 300\n", + "\n", + "=== QQQ : effet TOM par fold OOS (k=3) ===\n", + " Fold Période Écart TOM (bps/jour) N_TOM\n", + " 1 2005-11-07 -> 2010-01-14 -3.334 300\n", + " 2 2010-01-15 -> 2014-03-25 14.138 300\n", + " 3 2014-03-26 -> 2018-05-31 -6.706 303\n", + " 4 2018-06-01 -> 2022-08-08 14.191 303\n", + " 5 2022-08-09 -> 2026-10-20 -0.490 300\n", + "\n", + "=== EFA : effet TOM par fold OOS (k=3) ===\n", + " Fold Période Écart TOM (bps/jour) N_TOM\n", + " 1 2005-11-07 -> 2010-01-14 7.343 300\n", + " 2 2010-01-15 -> 2014-03-25 12.576 300\n", + " 3 2014-03-26 -> 2018-05-31 -7.991 303\n", + " 4 2018-06-01 -> 2022-08-08 4.915 303\n", + " 5 2022-08-09 -> 2026-10-20 -0.822 300\n" + ] + } + ], + "source": [ + "# Cellule 5 — Walk-forward 5-fold : l'effet tient-il out-of-sample ?\n", + "#\n", + "# Découpage OOS par blocs DISJOINTS (et non une fenêtre expansive : il n'y a\n", + "# rien à ré-entraîner pour une règle calendaire). Le premier bloc est exclu — il\n", + "# sert de marge, ce qui explique que le fold 1 ne commence pas au début de la\n", + "# série. On mesure l'effet BRUT (écart TOM - non-TOM) sur chaque bloc : si\n", + "# l'écart reste du même signe sur les 5 blocs, ce n'est pas un artefact d'une\n", + "# seule période.\n", + "\n", + "def oos_tom_effect(ret: pd.Series, mask: pd.Series, n_folds: int = 5) -> pd.DataFrame:\n", + " r = ret.dropna()\n", + " m = mask.loc[r.index]\n", + " n = len(r)\n", + " fold_size = n // (n_folds + 1)\n", + " rows = []\n", + " for f in range(1, n_folds + 1):\n", + " s, e = fold_size * f, min(fold_size * (f + 1), n)\n", + " rs, ms = r.iloc[s:e], m.iloc[s:e]\n", + " if ms.sum() < 5:\n", + " continue\n", + " d_bps = (rs[ms].mean() - rs[~ms].mean()) * 1e4\n", + " rows.append({'Fold': f,\n", + " 'Période': f\"{rs.index[0].date()} -> {rs.index[-1].date()}\",\n", + " 'Écart TOM (bps/jour)': d_bps, 'N_TOM': int(ms.sum())})\n", + " return pd.DataFrame(rows)\n", + "\n", + "for t in tickers:\n", + " print(f\"\\n=== {t} : effet TOM par fold OOS (k=3) ===\")\n", + " print(oos_tom_effect(returns[t], tom_mask).to_string(index=False, float_format='{:.3f}'))" + ] + }, + { + "cell_type": "markdown", + "id": "69ccd6a5", + "metadata": { + "papermill": { + "duration": 0.004524, + "end_time": "2026-10-28T05:38:38.667443+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.662919+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Interprétation : stabilité out-of-sample\n", + "\n", + "Un effet de calendrier **robuste** garderait le même signe (ici : positif) sur **les\n", + "5 folds** OOS. Le critère appliqué ici est donc le plus exigeant : trois folds sur\n", + "cinq du même signe ne suffisent pas — sur quatre-vingt-dix ans de littérature, un\n", + "effet qui s'inverse deux fois sur cinq périodes consécutives n'est pas un signal\n", + "stable, c'est un épisode. C'est cette stabilité temporelle qui est l'argument le\n", + "plus fort en faveur (ou contre) l'effet — plus que n'importe quelle moyenne\n", + "globale. Cette stabilité temporelle est l'argument le plus fort en\n", + "faveur (ou contre) l'effet — plus que n'importe quelle moyenne globale." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ed94ac59", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.679949Z", + "iopub.status.busy": "2026-10-28T05:38:38.679243Z", + "iopub.status.idle": "2026-10-28T05:38:38.735128Z", + "shell.execute_reply": "2026-10-28T05:38:38.733999Z" + }, + "papermill": { + "duration": 0.064669, + "end_time": "2026-10-28T05:38:38.736834+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.672165+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== (a) Test de Diebold-Mariano : la stratégie TOM bat-elle significativement B&H ? ===\n", + " SPY: stat=-2.520, p=0.0117 -> SIGNIFICATIF (p<0.05)\n", + " QQQ: stat=-2.924, p=0.0035 -> SIGNIFICATIF (p<0.05)\n", + " EFA: stat=-1.578, p=0.1145 -> non significatif\n", + "\n", + "=== (b) Sensibilité à la fenêtre k (effet BRUT, bps/jour) ===\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Actif EFA QQQ SPY\n", + "k (jours) \n", + "2 7.966 5.586 5.322\n", + "3 5.345 3.080 4.069\n", + "5 3.931 2.177 4.215\n" + ] + } + ], + "source": [ + "# Cellule 6 — Test de Diebold-Mariano + sensibilité au paramètre k\n", + "#\n", + "# (a) DM : teste si la stratégie TOM bat significativement le Buy & Hold\n", + "# (différence de rendement moyen, avec autocovariances HAC jusqu'à h-1).\n", + "# (b) Sensibilité : on re-mesure l'effet BRUT pour k = 2, 3, 5 jours.\n", + "\n", + "def dm_test(d: pd.Series, h: int = 1) -> tuple:\n", + " \"\"\"DM test (HAC, h-1 lag) sur la série d'écart d. Retourne (stat, p-value).\"\"\"\n", + " d = d.dropna()\n", + " n = len(d)\n", + " if n < 10:\n", + " return np.nan, np.nan\n", + " # autocovariance manuelle : pandas Series n'a pas de methode .autocov()\n", + " def _autocov(lag):\n", + " dev = d - d.mean()\n", + " return float((dev.iloc[lag:] * dev.iloc[:n - lag]).sum()) / n\n", + " gamma0 = _autocov(0)\n", + " gammas = sum(_autocov(lag) for lag in range(1, h))\n", + " var = (gamma0 + 2 * gammas) / n\n", + " if var <= 0:\n", + " return np.nan, np.nan\n", + " stat = d.mean() / np.sqrt(var)\n", + " p = 2 * (1 - scipy_stats.norm.cdf(abs(stat)))\n", + " return stat, p\n", + "\n", + "print(\"=== (a) Test de Diebold-Mariano : la stratégie TOM bat-elle significativement B&H ? ===\")\n", + "for t in tickers:\n", + " strat = tom_strategy_net(returns[t], tom_mask, cost_bps=10.0)\n", + " bh = returns[t]\n", + " common = strat.index.intersection(bh.index)\n", + " d = (strat.loc[common] - bh.loc[common]).dropna()\n", + " stat, p = dm_test(d)\n", + " if p is not None and not np.isnan(p) and p < 0.05:\n", + " sig = \"SIGNIFICATIF (p<0.05)\"\n", + " else:\n", + " sig = \"non significatif\"\n", + " print(f\" {t}: stat={stat:.3f}, p={p:.4f} -> {sig}\")\n", + "\n", + "print(\"\\n=== (b) Sensibilité à la fenêtre k (effet BRUT, bps/jour) ===\")\n", + "sens_rows = []\n", + "for k in [2, 3, 5]:\n", + " m = classify_tom(close.index, k=k)\n", + " for t in tickers:\n", + " d_bps = (returns[t][m].mean() - returns[t][~m].mean()) * 1e4\n", + " sens_rows.append({'k (jours)': k, 'Actif': t, 'Écart TOM (bps/jour)': d_bps})\n", + "sens_df = pd.DataFrame(sens_rows)\n", + "print(sens_df.pivot(index='k (jours)', columns='Actif',\n", + " values='Écart TOM (bps/jour)').to_string(float_format='{:.3f}'))" + ] + }, + { + "cell_type": "markdown", + "id": "1e62d8cf", + "metadata": { + "papermill": { + "duration": 0.005912, + "end_time": "2026-10-28T05:38:38.748748+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.742836+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "elle, montre que l'effet **brut** garde un signe stable (positif) quand k varie de\n", + "2 à 5 : le phénomène est réel, même s'il n'est pas exploitable.\n", + "\n", + "**Une réserve sur k=5, à ne pas lire comme une robustesse.** À k=5 la fenêtre TOM\n", + "couvre 10 jours de bourse par mois, soit ~48 % des jours : on ne mesure plus une\n", + "anomalie de calendrier sur une frange du mois, mais une moyenne sur près de la\n", + "moitié de l'échantillon, qui se rapproche mécaniquement du marché entier. La\n", + "décroissance de l'écart quand k grandit (7,97 → 5,35 → 3,93 bps sur EFA) dit donc\n", + "aussi que le signal se **dilue** avec la taille de la fenêtre : c'est la valeur\n", + "portée par k=2 et k=3 qui compte, pas la stabilité apparente de k=5." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "72be4c6c", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:38.763162Z", + "iopub.status.busy": "2026-10-28T05:38:38.762540Z", + "iopub.status.idle": "2026-10-28T05:38:39.532018Z", + "shell.execute_reply": "2026-10-28T05:38:39.530788Z" + }, + "papermill": { + "duration": 0.778592, + "end_time": "2026-10-28T05:38:39.533537+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:38.754945+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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wsIIbuXgGh4+fFjbt293lmvUqBHsJgEAAAAAUGgRJEyHBXEsCFGzZk1FRUUFuzkoQggS5o5SpUo5UwsUVq1ala7HAAAAAABkE6lx6YiPj3emJUuWDHZTAKTBE8C3MR4BAAAAAED2ECTMBDK9gIKLzycAAAAAADlHkBD55uOPP9avv/4a7GYAAAAAAAAgBYKEyBejR4/Wc889p65du2bpeX///beTKbZ3714VJbt27VKtWrW0bt06FVaPPvqo2rdvn6fnuP/++3XLLbfk6TkAAAAAAABBwiJpx44duvHGG1W3bl1FRESoevXqOu200zRlypTkfSzw9v333+fK+SzQZcebN29ewO2rVq3SsGHDnCzCChUqZOnY3bt3dypMlytXLltt6927t9O2tB623WPq1Kk644wznDZGRkaqTZs2eumll5LHpvTwPHf69Ol+648dO6ZKlSo52yy4mZ6nnnpKAwYMUP369ZWbMvu+2vnt2tp4fuXLlw+4z4YNG9S/f39nHysKcs899zjFVvLT3XffrU8++URr1qzJ1/MCAAAAAFDcECQsgs455xzNnTvXCa6sWLFCP/74oxMMs+y1rIiJicmV9jRu3FhLly5VvXr1svxcKxpjQc7sjjs3ZswYJ8hoj3///ddZN27cuOR1tt1899136tWrl2rXrq0JEyZo2bJluu222/Tkk0/qwgsvdKoR+6pTp44++ugjv3V2jDJlymTYJquY/eGHH+rKK69UsNh7e9555znB5EAsMGoBQtvPgqd2L1l38Ycffjhf21m5cmUnwP3WW2/l63kBAAAAAChuCBIWMdYtd9KkSXr22Wd10kknOYG54447Tg888IAGDhzo7OPJXhs8eLATfPMse7qPvv/++2rQoIGTTWd+++039ejRw8k4s0y5M888U6tXr04+p+1rOnTokCo7z47VokUL51jNmzfXm2++6ddeC0DZOW17586dnSw436zEQN2NJ0+erJ49e6pUqVJOsO7WW2/VoUOHAl6PihUrOkFGe1SpUsVZZ6/Bs86223OvvfZa5/q8++67TnvsmlxzzTVOcGzUqFH69ttv/Y47ZMgQff311zpy5EjyOgv82fqM/PLLL06G5/HHH5+8zvM6//rrL+c6WPaeZfotX77c77k//PCDOnbs6Fyvhg0b6rHHHkvO7kvrfQ3EnnfHHXc42ZKB/PHHH1qyZIk+//xz53r069dPTzzxhEaMGJEqePzOO+8474O1+fzzz9e+ffuSt11xxRUaNGiQcz67/mXLltUNN9zgdwy7vtYOez/tvenbt6/f+2kZl3atAQAAAABA3iFIWMRYJps9LNhm3V8DmTlzpjO1TDjLpvMse7oG2/iBlmHnCdRZwObOO+/UrFmznCBWSEiIE4hKSEhwtqfM0PNk533xxRdO5pl1bbVMwuHDh+uhhx5yAm9m//79TgDIAkRz5sxxglD33Xdfuq/PgpOnn366ky25YMECffPNN07Q8Oabb872NbOAmGVZWtfWlKx9TZs21VdffeW3vlOnTk4Qzq6Vp2vuP//8o8suuyzD81kQ154fyIMPPqgXX3zRudZhYWG66qqr/J53+eWXOxmOFsCz4Jxl99n1zeh9zapp06Y570u1atWS11lGn71nixcv9rtfLID6008/OcFky2C96aab/I5l94y9/xYIteto94cFDY2186KLLnJep2efs88+2y9z04LcmzZtKtTjNwIAAAAAUNCFBbsBhc1jPy3Wks378/28LWuW1SMDWmW4nwWWLHBkmXFvv/22k3Vm3Wity2zbtm2dfTwZdZYZaNl0vizD69NPP03ex1hAzpdlzNl2C1S1bt06VYaexyOPPOIEvCzo48k49AS3LOPuyy+/dDLe3nvvPSczrmXLlvrvv/+ctqfl6aef1iWXXKLbb7/dWW7SpIlee+015zVal1RP9mNWWJdsYxmPgVgGpGcfXxbYsmtx6aWXOtfcxjP0vW5pWb9+vWrUqBFwmwX87LV4inZYl9+jR486r8sCa7bOk61omYQWWL333nuda53e+5pVW7du9QsQGs+ybfOwttn9YkVYzOuvv+602d53Txusy7hdJ8s0bNWqlR5//HFnfENruwUJLRPS7hFPd/SU2Y01a9ZMvm65PYYjAAAAAABwESTMIgsQzli7WwWZBfUsUGOZZ1ZcwwqGWGVh6/pr3T/TY4GalIGulStXOhmBM2bM0M6dO5MzCC17zoKEgVj2oWX9XX311X5BPwsIeYqQWFdaC1z6BvYsayw98+fPdzIILUvRw7LOrE1r165NM9CXGSnHHcyIBQctaGdFNSxIaMHKzLAuymkFMz2BXOMJJG7fvt0pQmOv3YrPeDIHPWMHWqDOxjm0IFx+s3Z5AoSmW7duznth760nSNiuXTu/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RWHG/VuwRa76RXHlG8rTifjYrC8Uv2Kiysx5O3kfCxCa3YllFZfcI7W0Ik96RnEVGvusK3p871/rxVvog4Q7d+50AinVqlXzW2/Ly5YtS162oOH8+fOdF127dm2NHDnSqcgaiAUcrfuybyahdfmsUqVKwMIlBw4ccMZDY0w05AWCWjlnn037B7tSpUoULsmnf2gssG3fmfyPEgob7l8UZty/KKy4d1GYcf8WYDuWKWTcHc5s4gl3qMSUl1Vq1c9p7l6xYQepVHnviqopuh0X8fv34MGDmXpOkYh8jRs3LtP7RkREOI+U7AOf8kNvy3ZBPQ8gt1gk33NPcW/ljOfzGegzjLzB9UZhxv2Lwoz7F4UV9y4KM+7fAirGmxlXIiE29fYKDaQ9a5MXQyxAWAzfwxJZvH8L9BWqXLmyQkNDtW3bNr/1tly9evWgtQsAAAAAAABBUruzd96Kk7QY4F0Oj5Jumi4NnSmFhEkRZYtlgDA7CvRVKlmypDp16qS//vrLL13SltPqTgwAAAAAAIAizHrkNe7rztftJh3Y6t120v+k8EipSlMpIU465hasRSHobmz9oletWpW8vHbtWs2bN08VK1ZU3bp1nfEDhwwZos6dO+u4447TK6+84ow96Kl2DAAAAAAAgGIi5rD0QlOpwYnSpWOkRn2kH25ytw3bLoWW9O5rFY3L1QlaUwuboAcJZ82apZNOOil52VNUxAKDH3/8sS644AKn8vDDDz+srVu3qn379vrtt99SFTMBgm3dunVq0KCB5s6d69yngfz999/O/b57926VKVMm39sIAAAAAEChtm6SFHNACgmVGp/svy0sRQ2K8z/N16YVdkHvbty7d2+niEPKhwUIPW6++WatX79ex44d04wZM3T88ccHtc0FnQVVb7zxRicT04q02PiNp512mqZMmZK8T/369ZMLPpQuXVodO3Z0qkLbNW7VqpWuu+66VMe99957nSCYVXwOxLfIi1Wc9WSC2jHzw4svvui8rlKlSqlZs2Z69913M/U8e45lqKb06KOPphnsAwAAAAAAQfDl+d6xCD3u3yDdsyZoTSoqgp5JiNx3zjnnKCYmRp988okaNmzoFHqxcRx37drlt9/jjz+ua6+9Vvv373cCbJa1OXnyZH366afOmI92HAsumunTp+vll192KklHR0enee6PPvpIp59+umJjYzV/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IRE5r1rdgZrdgPO7gGMr7H00REREREREduW0IeH48eOxd+9ebNq0yd6H4pyaDDFe3pr3fYKqaZdj/r3+z9f0NmD4r0Bk0+t/LiIqHwwGYNEL2rYru28QEREREZFzc9qQkOzMzUu7zMrIf1KpiN1XOsdERM4l7kjxDUgiIiIiIiJycAwJyT4iGmuTjYOr53Mng3Yx78nSOioicibxJ83bDAmJiIiIiMjJcX0V2UedXtpHfryDSutoiMgZWS4xdvOw55EQERERERHZHSsJqeyKHmHvIyCi8iyiiXmblYREREREROTkGBJS2eVu7FtIRFQSfEPM/VE7jLf30RAREREREdkVlxtT2eVTAbjhHSC8gb2PhIjKq6w07dLTz95HQkREREREZFcMCals6/CgvY+AiJxB7AEg0mL5MRERERERkZPhcmMiInJe1Tpql+un2PtIiIiIiIiI7IohIREROa87fgTa3gf0ec3eR0JERERERGRXXG5MRETOPbyk//v2PgoiIiIiIiK7YyUhERERERERERGRk2NISERERERERERE5OQYEhIRERERERERETk5hoREREREREREREROjiEhERERERERERGRk2NISERERERERERE5OQYEhIRERERERERETk5hoREREREREREREROjiEhERERERERERGRk2NISERERERERERE5OQYEhIRERERERERETk5hoREREREREREREROjiEhERERERERERGRk3PakHDy5Mlo1KgR2rRpY+9DISIiIiIiIiIisiunDQnHjx+PvXv3YtOmTfY+FCIiIiIiIiIiIrty2pCQiIiIiIiIiIiINAwJiYiIiIiIiIiInBxDQiIiIiIiIiIiIifHkJCIiIiIiIiIiMjJucPJGQwGdZmQkGDvQyEnkp2djcTERHh7e8PVlVk9OQ6eu+TIeP6SI+P5S46K5y45Mp6/5Mgsz9+kpCSrDCwvTh8SyjdMREVF2ftQiIiIiIiIiIiISiwDCwoKyvN2F0NBMaITJKtnz55FQEAAXFxc7H045CSkclWC6VOnTiEwMNDeh0NUaDx3yZHx/CVHxvOXHBXPXXJkPH+pvJy/knlJQFi5cuV8q2KdvpJQvjlVq1a192GQk5L/aPifDTkinrvkyHj+kiPj+UuOiucuOTKev1Qezt/8Kgh1XFRPRERERERERETk5BgSEhERERER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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Graphique rendu : richesse cumulée SPY — stratégie TOM vs B&H\n" + ] + } + ], + "source": [ + "# Cellule 7 — Visualisation : courbes de richesse TOM vs B&H (SPY)\n", + "t = 'SPY'\n", + "strat = tom_strategy_net(returns[t], tom_mask, cost_bps=10.0)\n", + "bh = returns[t]\n", + "common = strat.index.intersection(bh.index)\n", + "fig, ax = plt.subplots(figsize=(13, 6))\n", + "(1 + strat.loc[common]).cumprod().plot(ax=ax, label='Stratégie TOM (net 10bps)', linewidth=1.8)\n", + "(1 + bh.loc[common]).cumprod().plot(ax=ax, label=f'{t} Buy & Hold', linewidth=1.3, linestyle='--')\n", + "ax.set_title(f'Turn of the Month : richesse cumulée (k=3, net de 10 bps) — {t}')\n", + "ax.set_ylabel('Valeur (base 1)')\n", + "ax.legend(); ax.grid(True, alpha=0.3); ax.set_yscale('log')\n", + "plt.tight_layout(); plt.show()\n", + "print(f\"Graphique rendu : richesse cumulée {t} — stratégie TOM vs B&H\")" + ] + }, + { + "cell_type": "markdown", + "id": "1fb539a1", + "metadata": { + "papermill": { + "duration": 0.003512, + "end_time": "2026-10-28T05:38:39.541844+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.538332+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Conclusion\n", + "\n", + "### Tableau récapitulatif (mesuré, k=3, net de 10 bps)\n", + "\n", + "| Actif | Sharpe TOM (net) | Sharpe B&H | DM p (TOM vs B&H) |\n", + "|-------|------------------|-----------|-------------------|\n", + "| SPY | −0.060 | 0.354 | 0.012 (négatif) |\n", + "| QQQ | −0.020 | 0.433 | 0.004 (négatif) |\n", + "| EFA | −0.075 | 0.164 | 0.115 (n.s.) |\n", + "\n", + "### Verdict\n", + "\n", + "**Verdict : NO BEATS**\n", + "\n", + "L'effet de calendrier **brut** est réel et robuste au paramètre de fenêtre :\n", + "l'écart TOM − non-TOM est positif pour les 3 actifs et les 3 fenêtres k=2/3/5\n", + "(2,2 à 8,0 bps/jour, décroissant quand k grandit). Mais il **n'est pas\n", + "exploitable** net de coûts, pour deux raisons mesurées :\n", + "\n", + "1. **Non robuste out-of-sample.** L'écart change de signe selon le fold\n", + " (SPY : − / + / − / + / −) et s'efface sur la fenêtre la plus récente\n", + " (2022-2026 : négatif sur les 3 actifs). Ce n'est pas un signal stable, c'est\n", + " un artefact de régime.\n", + "2. **Non rentable net de coûts.** La stratégie « long uniquement les jours TOM,\n", + " à plat sinon » a un **Sharpe négatif** (−0.02 à −0.08) contre 0.16 à 0.43\n", + " pour le Buy & Hold : être long seulement ~28,7 % du temps et payer 10 bps par\n", + " transition fait perdre plus qu'elle ne gagne. Le test de Diebold-Mariano\n", + " confirme : la différence (TOM − B&H) est **significativement négative**\n", + " (SPY p=0.012, QQQ p=0.004) — la stratégie perd significativement, elle ne bat\n", + " pas le B&H.\n", + "\n", + "**Leçon** : une anomalie statistique mesurable (effet brut robuste au k) n'est\n", + "pas un alpha exploitable. Les deux tests qui importent pour le trading —\n", + "stabilité out-of-sample **et** rentabilité nette de coûts — échouent ici. Le TOM\n", + "reste un bon exemple d'effet de calendrier « réel mais non tradeable ».\n", + "\n", + "### Forces de la méthode\n", + "1. Classification TOM **sans lookahead** (position calendaire uniquement)\n", + "2. Coûts de transaction **intégrés** (10 bps/transition)\n", + "3. Triple validation : walk-forward 5-fold + Diebold-Mariano + sensibilité à k\n", + "4. Univers d'indices liquides, reproductible en local (yfinance)\n", + "\n", + "### Limites\n", + "1. Données yfinance (ajustements, profondeur historique) — re-valider sur QC Cloud\n", + "2. Coût de 10 bps supposé constant (slippage réel variable)\n", + "3. Une seule stratégie d'exploitation testée (long/flat) ; un vol-target ou un\n", + " sizing plus fin pourrait changer le résultat (cf. Exercice 3)\n", + "\n", + "### Références\n", + "- Ariel, R. A. (1987), *A monthly effect in stock returns*, Journal of Financial\n", + " Economics 18(1):161-174, doi:10.1016/0304-405X(87)90066-3.\n", + "- Lakonishok, J. & Smidt, S. (1988), *Are Seasonal Anomalies Real? A Ninety-Year\n", + " Perspective*, Review of Financial Studies 1(4):403-425, doi:10.1093/rfs/1.4.403.\n", + "- Han, L., Han, Y. & Tian, S. (2025), *The disappearing turn-of-month effect*,\n", + " Finance Research Letters 71:106461, doi:10.1016/j.frl.2024.106461 — la\n", + " littérature récente documente l'effacement de l'effet, ce qui va dans le sens\n", + " du verdict mesuré ici.\n", + "- Diebold, F. & Mariano, R. (1995), *Comparing Predictive Accuracy*, Journal of\n", + " Business & Economic Statistics 13(3):253-263, doi:10.1080/07350015.1995.10524599." + ] + }, + { + "cell_type": "markdown", + "id": "16df393d", + "metadata": { + "papermill": { + "duration": 0.006181, + "end_time": "2026-10-28T05:38:39.553065+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.546884+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Exercices d'extension\n", + "\n", + "Les exercices ci-dessous explorent des **limites explicitement documentées** de ce\n", + "notebook. Ils restent des **stubs** (à compléter) — le notebook s'exécute de bout en\n", + "bout même non résolus." + ] + }, + { + "cell_type": "markdown", + "id": "23c92953", + "metadata": { + "papermill": { + "duration": 0.006572, + "end_time": "2026-10-28T05:38:39.565833+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.559261+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Exercice 1 — L'effet existe-t-il sur un marché 24/7 (crypto) ?\n", + "\n", + "Le mécanisme supposé du TOM est un cycle de **flux mensuel** (paie, allocations\n", + "institutionnelles). Sur un marché qui trade 24/7 (crypto), ce cycle de flux\n", + "calendaire est affaibli. Testez l'effet TOM sur un actif crypto (ex: `BTC-USD` via\n", + "yfinance) et comparez la magnitude de l'écart TOM − non-TOM à celle mesurée sur SPY.\n", + "\n", + "**Indices** :\n", + "- *Étape 1* : charger `BTC-USD` avec le même `classify_tom`.\n", + "- *Étape 2* : réutiliser `gross_tom_effect` et comparer l'écart en bps à SPY.\n", + "- *Étape 3* : interpréter — un effet plus faible sur crypto serait cohérent avec\n", + " l'absence de cycle de flux mensuel." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "584c1c9e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:39.578218Z", + "iopub.status.busy": "2026-10-28T05:38:39.576287Z", + "iopub.status.idle": "2026-10-28T05:38:39.583430Z", + "shell.execute_reply": "2026-10-28T05:38:39.582818Z" + }, + "papermill": { + "duration": 0.014011, + "end_time": "2026-10-28T05:38:39.585487+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.571476+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exercice 1 à compléter : implémenter tom_effect_crypto\n" + ] + } + ], + "source": [ + "# Exercice 1 : effet TOM sur un marché 24/7 (crypto)\n", + "# TODO étudiant : compléter la fonction ci-dessous\n", + "def tom_effect_crypto(ticker: str = 'BTC-USD', k: int = 3) -> float:\n", + " \"\"\"Écart TOM - non-TOM (bps/jour) pour un actif crypto.\n", + "\n", + " Indice :\n", + " - close_c = yf.download(ticker, ...)['Close'].dropna()\n", + " - mask = classify_tom(close_c.index, k)\n", + " - ret = close_c.pct_change().dropna()\n", + " - retourner (ret[mask].mean() - ret[~mask].mean()) * 1e4\n", + " \"\"\"\n", + " result = None # TODO étudiant : écart TOM en bps\n", + " return result\n", + "\n", + "print(\"Exercice 1 à compléter : implémenter tom_effect_crypto\")" + ] + }, + { + "cell_type": "markdown", + "id": "67abdcdb", + "metadata": { + "papermill": { + "duration": 0.005936, + "end_time": "2026-10-28T05:38:39.598017+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.592081+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Exercice 2 — Test de Diebold-Mariano complet (sélection de lags Newey-West)\n", + "\n", + "Le DM test de la cellule 6 n'utilise qu'**un** lag d'autocovariance (h=1), une\n", + "approximation. Un test complet choisit le nombre de lags `h` en fonction de la\n", + "longueur de la série (règle Newey-West : `h ≈ floor(4 * (T/100)^(2/9))`) et somme\n", + "les autocovariances jusqu'à ce lag.\n", + "\n", + "**Indices** :\n", + "- *Étape 1* : calculer `h = int(floor(4 * (T/100) ** (2/9)))`.\n", + "- *Étape 2* : sommer `d.autocov(lag)` pour `lag` dans `1..h` (pondération\n", + " Newey-West optionnelle).\n", + "- *Étape 3* : reconstruire la variance `(gamma0 + 2*sum)/T` et re-tester." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f2ac1bd1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:39.612121Z", + "iopub.status.busy": "2026-10-28T05:38:39.611761Z", + "iopub.status.idle": "2026-10-28T05:38:39.617333Z", + "shell.execute_reply": "2026-10-28T05:38:39.616492Z" + }, + "papermill": { + "duration": 0.013445, + "end_time": "2026-10-28T05:38:39.618741+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.605296+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exercice 2 à compléter : implémenter dm_test_neweywest\n" + ] + } + ], + "source": [ + "# Exercice 2 : DM test avec sélection de lags Newey-West\n", + "# TODO étudiant : compléter la fonction ci-dessous\n", + "def dm_test_neweywest(d: pd.Series) -> tuple:\n", + " \"\"\"DM test avec nombre de lags choisi par la règle Newey-West.\n", + "\n", + " Indice :\n", + " - T = len(d)\n", + " - h = int(np.floor(4 * (T / 100) ** (2/9)))\n", + " - var = (d.autocov(0) + 2 * sum(d.autocov(l) for l in range(1, h+1))) / T\n", + " - stat = d.mean() / sqrt(var) ; p = 2*(1 - norm.cdf(|stat|))\n", + " \"\"\"\n", + " stat, p = None, None # TODO étudiant : (stat, p-value)\n", + " return stat, p\n", + "\n", + "print(\"Exercice 2 à compléter : implémenter dm_test_neweywest\")" + ] + }, + { + "cell_type": "markdown", + "id": "0097abeb", + "metadata": { + "papermill": { + "duration": 0.005173, + "end_time": "2026-10-28T05:38:39.629082+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.623909+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Exercice 3 — Combiner le signal TOM avec un vol-target\n", + "\n", + "La stratégie TOM brute est à plat ~80 % du temps, ce qui bride son CAGR. Un\n", + "**vol-target** (re-échelle dynamique vers une volatilité annualisée cible, ex: 15 %)\n", + "re-engage le risque. Vérifiez si superposer un vol-target à la stratégie TOM\n", + "**améliore le Sharpe net** — attention au **lookahead** : la volatilité utilisée\n", + "pour fixer le levier du jour t ne doit inclure que des données strictement\n", + "antérieures (`shift(1)`).\n", + "\n", + "**Indices** :\n", + "- *Étape 1* : `vol_realisee = strat.rolling(60).std() * sqrt(252)`.\n", + "- *Étape 2* : `levier = clip(target_vol / vol_realisee.shift(1), 0, 3)`.\n", + "- *Étape 3* : `strat_leve = levier * strat`, re-calculer le Sharpe net." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b7320fc1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-28T05:38:39.644171Z", + "iopub.status.busy": "2026-10-28T05:38:39.643596Z", + "iopub.status.idle": "2026-10-28T05:38:39.650524Z", + "shell.execute_reply": "2026-10-28T05:38:39.649336Z" + }, + "papermill": { + "duration": 0.016331, + "end_time": "2026-10-28T05:38:39.651825+00:00", + "exception": false, + "start_time": "2026-10-28T05:38:39.635494+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exercice 3 à compléter : implémenter tom_with_voltarget\n" + ] + } + ], + "source": [ + "# Exercice 3 : TOM + vol-target\n", + "# TODO étudiant : compléter la fonction ci-dessous\n", + "def tom_with_voltarget(strat: pd.Series, target_vol: float = 0.15,\n", + " vol_window: int = 60, max_leverage: float = 3.0) -> pd.Series:\n", + " \"\"\"Re-échelle la stratégie TOM vers une volatilité annualisée cible.\n", + "\n", + " Indice :\n", + " - vol_realisee = strat.rolling(vol_window).std() * np.sqrt(252)\n", + " - levier = (target_vol / vol_realisee.shift(1)).clip(0, max_leverage)\n", + " (le shift(1) est OBLIGATOIRE : anti-lookahead)\n", + " - retourner levier * strat\n", + " \"\"\"\n", + " levered = None # TODO étudiant : série de rendements re-échalée\n", + " return levered\n", + "\n", + "print(\"Exercice 3 à compléter : implémenter tom_with_voltarget\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.3" + }, + "papermill": { + "default_parameters": {}, + "duration": 20.316122, + "end_time": "2026-10-28T05:38:40.337072+00:00", + "environment_variables": {}, + "exception": null, + "input_path": "research_turn_of_month.ipynb", + "output_path": "research_turn_of_month.ipynb", + "parameters": {}, + "start_time": "2026-10-28T05:38:20.020950+00:00", + "version": "2.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}