Construire son propre managed futures à la maison : tentative de réplication de DBMFE

Ce post décrit une expérience que j’ai menée pour mieux comprendre le fonctionnement de DBMFE, un ETF géré par DBi qui cherche à répliquer l’exposition d’un indice de fonds CTA, ce qu’on appelle aussi des managed futures. En plus de lire la documentation[1], j’ai essayé de reconstruire la mécanique manuellement[2], avec mes propres données et mon propre code. Ce qui suit décrit la méthode, les résultats, et ce que j’en ai appris. Mais d’abord : qu’est-ce qu’un managed futures, et pourquoi voudrait-on s’y exposer ?

Managed futures : l’idée derrière le trend following

Un fonds managed futures[3] est un fonds qui prend des positions longues et courtes sur des contrats futures[4] à travers plusieurs classes d’actifs : actions, taux, devises, matières premières. L’idée centrale est de capter des tendances de marché dans les deux sens, à la hausse comme à la baisse. La stratégie dominante dans cet univers est le trend following.

Le trend following repose sur une idée simple : acheter les actifs qui montent, vendre (ou réduire) ceux qui baissent. En pratique, un CTA traditionnel applique ce principe à des contrats futures couvrant les grandes classes d’actifs : actions, taux, matières premières et devises. Quand le signal de tendance est positif, il prend une position longue, quand il est négatif, il prend une position courte.

Cette mécanique produit un profil particulier. Les stratégies de trend following ont tendance à bien se comporter lorsque les mouvements de marché sont persistants, à la hausse comme à la baisse. Moskowitz, Ooi et Pedersen (2012)[5] l’ont montré sur 25 ans et 58 marchés : les stratégies de time-series momentum ont historiquement généré des rendements positifs, avec une asymétrie favorable lors des épisodes de stress extrême. Pour un portefeuille diversifié, c’est précisément le type d’exposition que l’on aimerait pouvoir ajouter : une source de rendement potentiellement décorrélée des actions, avec une forme de convexité dans les grandes crises.

Le problème est que cette exposition est difficile à obtenir proprement. Un CTA institutionnel ne se contente pas d’acheter quelques ETF : il intervient sur de nombreux contrats futures, ajuste ses positions en continu, gère son collatéral et s’appuie sur une infrastructure de trading sophistiquée. Les indices de référence, comme le SG CTA Index, donnent une bonne image de l’univers, mais ils ne sont pas investissables directement. Contrairement à un indice actions, on ne peut pas simplement en observer la composition : l’indice agrège les performances de plusieurs fonds dont les positions sont dynamiques, hétérogènes et confidentielles.

C’est là que DBMFE devient intéressant. Plutôt que de chercher à reproduire directement chaque position détenue par les CTA, le fonds utilise une approche de réplication factorielle, proche de celle formalisée par O’Doherty, Savin et Tiwari (2016)[6]. L’idée consiste à régresser le rendement d’un indice cible (ici le SG CTA Index) sur un ensemble de facteurs macro. Les coefficients de cette régression fournissent alors une estimation des expositions à détenir.

Cette approche simplifie considérablement le problème. Il ne s’agit plus de reconstruire les signaux, les positions et l’infrastructure complète d’un gérant CTA, mais d’approximer son comportement agrégé à partir de facteurs observables. Avec des données propres et un modèle statistique relativement léger, on peut tenter de reproduire une partie de la performance d’un panier de hedge funds, certes imparfaitement, mais avec une structure beaucoup plus accessible[7].

Comme j’avais du mal à comprendre précisément les mécanismes derrière DBMFE, j’ai décidé de refaire l’exercice manuellement. Ce document décrit cette démarche.

L’univers des facteurs

L’univers retenu regroupe une vingtaine de facteurs couvrant les grandes classes d’actifs qu’un trend-follower traderait naturellement :

  • Actions : large-cap US, small-cap US, Japon, Corée, Chine internet, marchés émergents
  • Taux : obligations longues du Trésor américain
  • Devises : euro, yen japonais
  • Métaux : or, argent, cuivre
  • Énergie : Brent, gaz naturel
  • Crypto : BTC, ETH, SOL, HYPE

L’objectif n’est pas de reproduire exactement l’univers de DBMFE, auquel je n’ai évidemment pas accès, mais de construire un ensemble de facteurs macro suffisamment large pour capturer les principales expositions d’un portefeuille managed futures. Les cryptos ne font probablement pas partie de la réplication de DBMFE, elles sont ajoutées ici comme facteurs expérimentaux, pour compenser partiellement le fait que mon univers de futures est beaucoup plus limité que celui d’un fonds institutionnel.

Toutes les séries sont exprimées en rendements excédentaires par rapport au cash. L’idée est de travailler sur des facteurs comparables entre eux, indépendamment de la rémunération du collatéral. Rien de particulièrement exotique : chaque exposition correspond à un ETF liquide, à un contrat future, ou à un proxy raisonnablement négociable.

Un point pratique important est que tous les facteurs n’ont pas le même historique. L’or, le S&P 500 ou les Treasuries disposent de plusieurs décennies de données, tandis que SOL ou HYPE n’existent que depuis quelques années. Ce n’est pas bloquant, mais cela impose une précaution : à chaque date de rebalancement, les bêtas sont estimés sur les observations disponibles dans la fenêtre glissante. Si la fenêtre est de 252 jours mais qu’un facteur ne dispose que de 200 observations, seules ces 200 observations sont utilisées.

La décroissance exponentielle limite partiellement ce problème, puisque les observations les plus anciennes reçoivent de toute façon un poids plus faible. Un facteur récent peut donc participer au modèle dès qu’il dispose d’un historique suffisant, mais son estimation reste naturellement plus incertaine. Dans le cadre bayésien, cette incertitude se traduit par une variance postérieure plus large : moins d’historique signifie des bêtas moins précis, pas un traitement arbitrairement défavorable.

Le moteur de réplication

À chaque date de rebalancement, l’objectif est d’estimer les expositions factorielles qui permettent de reproduire au mieux le rendement de la cible. La cible est le rendement de l’indice ou du fonds que l’on cherche à répliquer. Les facteurs sont les rendements des actifs macro disponibles dans l’univers retenu.

L’idée est simple : on explique le rendement de la cible par une combinaison linéaire de facteurs. Les coefficients de cette combinaison deviennent ensuite les poids du portefeuille clone. Si le modèle estime que la cible se comporte récemment comme un portefeuille long or, short yen et long pétrole, alors le clone adopte ces expositions.

La régression est estimée dans un cadre bayésien avec un prior non informatif de Jeffreys. Pour les coefficients ponctuels, cela donne les mêmes estimations qu’une régression linéaire classique. L’intérêt du cadre bayésien n’est donc pas de produire des poids très différents des MCO, mais de fournir une distribution prédictive complète. Cette distribution permet ensuite de comparer plusieurs modèles candidats à l’aide de log-scores.

Deux ajustements pratiques sont ajoutés au modèle.

Le premier est une régularisation ridge. L’univers de facteurs contient des séries parfois très corrélées, par exemple les actions américaines large-cap et small-cap. Sans régularisation, la régression peut produire des coefficients instables, avec des expositions qui changent fortement d’un rebalancement à l’autre. Une pénalité L2 modérée, avec un alpha de 0,003, permet de stabiliser les bêtas sans forcer le modèle à sélectionner seulement quelques facteurs.

Le second ajustement est une décroissance exponentielle des observations. Toute l’histoire récente n’a pas la même importance. Une observation très ancienne doit compter moins qu’une observation récente. Chaque point de données reçoit donc un poids qui diminue avec son âge. Une demi-vie de 21 jours ouvrés signifie qu’une observation datant d’environ un mois compte deux fois moins qu’une observation récente.

J’ai testé plusieurs demi-vies : 10, 21 et 63 jours ouvrés. Elles correspondent approximativement à trois vitesses de réaction : rapide, intermédiaire et lente. La demi-vie de 10 jours permet au modèle de s’adapter rapidement aux changements de régime. Celle de 21 jours représente une mémoire d’environ un mois. Celle de 63 jours donne plus de poids à la stabilité des tendances sur un trimestre.

Ces choix ne sont pas complètement arbitraires. La littérature sur le trend following montre que les signaux de momentum existent sur plusieurs horizons. Moskowitz, Ooi et Pedersen (2012)[5:1] documentent des effets de time-series momentum sur des horizons allant d’un à douze mois. Hurst, Ooi et Pedersen (2017)[8] montrent également que les stratégies de tendance ont historiquement fonctionné sur de longues périodes et à travers plusieurs régimes de marché. Baltas et Kosowski (2015)[9] étudient enfin des variantes plus rapides du time-series momentum, notamment à fréquence hebdomadaire et quotidienne. Les demi-vies retenues cherchent donc à couvrir ce spectre, sans multiplier excessivement les paramètres.

Le modèle formel

À chaque date de rebalancement, on dispose de T observations de rendements factoriels et de rendements cibles. La matrice des facteurs est notée \mathbf{X}, de dimension T \times K. Le vecteur des rendements cibles est noté \mathbf{y}, de dimension T \times 1.

Le modèle linéaire s’écrit :

\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}

avec :

\boldsymbol{\varepsilon} \sim \mathcal{N}(0, \sigma^2 \mathbf{I})

Le vecteur \boldsymbol{\beta} contient les expositions factorielles estimées. Ce sont ces coefficients qui deviennent les poids du portefeuille clone.

Le prior utilisé est le prior non informatif de Jeffreys :

p(\boldsymbol{\beta}, \sigma^2) \propto \frac{1}{\sigma^2}

Avec ce prior, l’estimateur ponctuel de \boldsymbol{\beta} correspond à l’estimateur des moindres carrés ordinaires :

\hat{\boldsymbol{\beta}} = (\mathbf{X}'\mathbf{X})^{-1}\mathbf{X}'\mathbf{y}

La variance résiduelle est estimée à partir de l’erreur de réplication :

s^2 = \frac{\text{RSS}}{\nu}

où :

\nu = T - K

Dans le cas non régularisé, la distribution postérieure des coefficients est :

\boldsymbol{\beta} \mid \sigma^2, \mathbf{X}, \mathbf{y} \sim \mathcal{N}\left( \hat{\boldsymbol{\beta}}, \sigma^2(\mathbf{X}'\mathbf{X})^{-1} \right)

et la variance suit une loi inverse-gamma :

\sigma^2 \mid \mathbf{X}, \mathbf{y} \sim \text{Inv-Gamma}\left( \frac{\nu}{2}, \frac{\nu s^2}{2} \right)

En pratique, j’utilise une version régularisée. Pour limiter l’instabilité liée à la multicolinéarité, on remplace \mathbf{X}'\mathbf{X} par \mathbf{X}'\mathbf{X} + \lambda \mathbf{I}. L’intercepte, lorsqu’il est inclus, n’est pas pénalisé.

L’estimateur devient alors :

\hat{\boldsymbol{\beta}}_{\text{ridge}} = (\mathbf{X}'\mathbf{X} + \lambda \mathbf{I})^{-1} \mathbf{X}'\mathbf{y}

avec :

\lambda = 0{,}003

Les observations sont également pondérées selon leur âge. Pour une observation i, le poids est :

w_i = 0{,}5^{\frac{\text{âge}_i}{\text{demi-vie}}}

La régression pondérée minimise donc :

\sum_i w_i \left( y_i - \mathbf{x}_i'\boldsymbol{\beta} \right)^2

Ce problème est équivalent à une régression classique sur des données transformées. Il suffit de remplacer chaque ligne de \mathbf{X} par \sqrt{w_i}\mathbf{x}_i et chaque observation de \mathbf{y} par \sqrt{w_i}y_i.

Pour une nouvelle observation factorielle \mathbf{x}_*, le modèle fournit une distribution prédictive du rendement de la cible. Dans le cas non régularisé, cette distribution est une loi de Student :

r_* \mid \mathbf{x}_*, \text{données} \sim t_\nu \left( \hat{\boldsymbol{\beta}}'\mathbf{x}_*, s^2 \left[ 1 + \mathbf{x}_*' (\mathbf{X}'\mathbf{X})^{-1} \mathbf{x}_* \right] \right)

Cette distribution prédictive est utile parce qu’elle ne donne pas seulement une prévision ponctuelle. Elle donne aussi une incertitude autour de cette prévision. On peut donc comparer plusieurs modèles candidats en évaluant la probabilité qu’ils attribuaient aux rendements effectivement réalisés. C’est le rôle des log-scores.

Régression par blocs

Une variante consiste à ne pas estimer un seul modèle sur tous les facteurs. On peut découper l’univers en blocs homogènes : actions, taux, devises, métaux, énergie et crypto. Chaque bloc est alors estimé séparément.

Pour un bloc b, le modèle est :

\mathbf{y} = \mathbf{X}_b\boldsymbol{\beta}_b + \boldsymbol{\varepsilon}_b

Chaque bloc peut utiliser ses propres paramètres : sa fenêtre d’estimation, sa demi-vie et son niveau de régularisation. Par exemple, les actions et les taux peuvent être estimés sur une fenêtre longue avec une demi-vie lente, tandis que les matières premières ou les cryptos peuvent utiliser une fenêtre plus courte et une demi-vie plus rapide.

L’estimateur du bloc b est :

\hat{\boldsymbol{\beta}}_b = (\mathbf{X}_b'\mathbf{W}_b\mathbf{X}_b + \lambda_b\mathbf{I}_{K_b})^{-1} \mathbf{X}_b'\mathbf{W}_b\mathbf{y}

\mathbf{W}_b est la matrice diagonale des poids exponentiels du bloc :

\mathbf{W}_b = \text{diag}(w_{b,1}, \dots, w_{b,T_b})

Les expositions finales sont ensuite obtenues en concaténant les coefficients estimés dans chaque bloc :

\boldsymbol{\beta} = [ \hat{\boldsymbol{\beta}}_1', \hat{\boldsymbol{\beta}}_2', \dots, \hat{\boldsymbol{\beta}}_B' ]'

Cette approche n’est pas équivalente à une régression jointe. Chaque coefficient est estimé sans contrôler explicitement pour les facteurs des autres blocs. Les coefficients obtenus ne sont donc pas des coefficients partiels au sens strict, sauf si les blocs sont parfaitement orthogonaux :

\mathbf{X}_b \perp \mathbf{X}_{-b}

C’est une approximation. Elle est défendable si les blocs représentent des classes d’actifs suffisamment distinctes, mais elle peut produire des expositions redondantes lorsque plusieurs blocs expliquent la même variation de la cible. Son avantage est pratique : elle permet de spécialiser les hyperparamètres par classe d’actifs et d’éviter qu’un bloc très instable domine toute la régression.

La famille de modèles candidats

Une fois le moteur de réplication défini, il reste une question importante : quels paramètres utiliser ? La fenêtre d’estimation doit-elle être courte ou longue ? La demi-vie doit-elle rendre le modèle très réactif ou plus stable ? Faut-il estimer tous les facteurs ensemble ou séparément par classe d’actifs ?

Plutôt que de choisir une seule configuration a priori, je maintiens une famille de modèles candidats. Chaque candidat utilise le même principe de réplication, mais avec des paramètres différents.

Les principales dimensions testées sont les suivantes :

  • Fenêtre d’estimation : 63, 126 ou 252 jours ouvrés, soit environ 3, 6 ou 12 mois
  • Demi-vie du decay exponentiel : 10, 21 ou 63 jours ouvrés
  • Régularisation ridge : alpha fixé à 0,003
  • Lissage des poids : lissage exponentiel des expositions prédites entre deux rebalancements, avec un coefficient de 0,5
  • Nombre maximal de facteurs actifs : 8 par candidat, puis 10 au maximum pour le portefeuille combiné[10]
  • Architecture du modèle : régression unique sur tous les facteurs ou estimation par blocs d’actifs

Les modèles par blocs permettent d’adapter les paramètres à chaque classe d’actifs. Par exemple, un profil stable peut utiliser une fenêtre de 252 jours et une demi-vie de 63 jours pour les actions et les taux, qui sont des blocs où les signaux peuvent être plus lents. À l’inverse, un profil plus réactif peut utiliser une fenêtre de 63 jours et une demi-vie de 10 jours pour les matières premières ou les cryptos, où les changements de régime peuvent être plus rapides.

Dans cette architecture, chaque bloc est estimé séparément, puis les poids obtenus sont concaténés pour former le portefeuille final du candidat. L’idée est proche de l’approche par segments décrite dans la documentation de DBMF, mais sans régression de second niveau. Le modèle reste donc plus simple : il spécialise les paramètres par classe d’actifs, sans chercher à réestimer ensuite une combinaison optimale des blocs.

Sélection et combinaison des candidats

À chaque rebalancement, tous les modèles candidats sont évalués sur une fenêtre glissante de rendements réalisés. L’objectif n’est pas seulement de choisir le modèle qui colle le mieux à la cible sur le passé récent. Il faut aussi éviter les candidats qui répliquent correctement la cible au prix d’une volatilité excessive ou d’un drawdown trop important.

La fonction de score utilisée en production privilégie donc la performance ajustée du risque, avec une pénalité explicite lorsque le drawdown devient trop élevé[11] :

\text{score} = 0{,}45 \times \text{Sharpe} + 0{,}30 \times \text{Calmar} + 0{,}20 \times \text{rendement} - 0{,}15 \times \text{drawdown}

La pénalité de drawdown ne s’applique réellement que lorsque le drawdown dépasse un seuil de 20 %. Une pénalité supplémentaire est également appliquée si la corrélation avec la cible passe sous un plancher minimal. L’objectif est donc double : conserver une certaine proximité avec la cible, mais sans sacrifier complètement la robustesse du portefeuille.

Les scores ne servent pas à sélectionner brutalement un seul modèle. Ils sont transformés en poids d’allocation par une fonction softmax. Les meilleurs candidats reçoivent donc plus de poids, mais les autres ne sont pas nécessairement exclus. Cette approche évite de basculer trop violemment d’un modèle à l’autre à chaque rebalancement.

Le portefeuille final est obtenu en agrégeant les expositions proposées par les différents candidats, pondérées par leurs scores softmax. Une contrainte pratique est ensuite appliquée : le portefeuille combiné ne peut pas contenir plus de 10 facteurs actifs. Cette limite n’est pas purement théorique. Elle reflète aussi les contraintes d’exécution d’un petit portefeuille réel. Des positions trop nombreuses produiraient des ordres minuscules, difficiles à exécuter proprement et peu pertinents économiquement.

Validation walk-forward

La construction du modèle est une chose. La vraie question est de savoir s’il fonctionne hors échantillon. Pour le vérifier, j’ai réalisé une validation walk-forward chronologique.

Le principe est simple : à chaque étape, le modèle est entraîné sur une période passée, puis testé sur le mois suivant. On avance ensuite d’un mois et on recommence. Cela permet d’éviter de juger le clone sur une période qu’il aurait déjà vue lors de l’estimation.

La validation utilise quatre spécifications macro-core. Elles partagent le même univers de facteurs, une régularisation ridge fixée à 0,003 et un lissage des poids de 0,5.

Candidat Fenêtre Demi-vie du decay
w252-hl21 252 jours, soit environ 12 mois 21 jours, soit environ 1 mois
w126-hl21 126 jours, soit environ 6 mois 21 jours, soit environ 1 mois
w126-hl10 126 jours, soit environ 6 mois 10 jours, soit environ 2 semaines
w63-hl10 63 jours, soit environ 3 mois 10 jours, soit environ 2 semaines

La cible utilisée est une série hybride : le SG CTA Index avant 2019, puis le total return de DBMF/DBMFE après 2019. C’est la même série que le clone cherche à répliquer en production.

Chaque fold utilise trois ans d’entraînement, soit environ 756 jours ouvrés, puis environ un mois de test, soit 21 jours ouvrés. Le premier fold commence en juillet 2013 et la validation avance ensuite mois par mois jusqu’à aujourd’hui. Au total, cela représente environ 159 folds mensuels non chevauchants et 3 186 rendements quotidiens hors échantillon.

À chaque fold, les quatre candidats sont scorés sur la période d’entraînement. Les scores sont ensuite transformés en poids par une fonction softmax, avec une température de 0,25, un top-k de 4 et un lissage inter-fold de 0,70. Le modèle final n’est donc pas un seul candidat choisi brutalement, mais une combinaison pondérée des quatre spécifications.

En pratique, le candidat w252-hl21 reçoit généralement la majorité de l’allocation, souvent entre 50 % et 90 %. Les modèles plus courts obtiennent des poids plus modestes, mais deviennent utiles pendant les périodes de transition ou de changement de régime.

Les résultats hors échantillon sont les suivants :

Métrique Clone OOS Cible
Corrélation 0,64
Tracking error 8,9 %
Rendement annualisé 7,25 % 7,78 %
Volatilité annualisée 9,05 % 11,32 %
Sharpe ratio 0,80 0,69
Drawdown max −12,2 % −18,1 %

Le clone ne réplique pas parfaitement la cible, ce qui serait irréaliste avec un univers de facteurs réduit. La corrélation de 0,64 et le tracking error de 8,9 % montrent qu’il reste une part importante d’écart spécifique. Mais les résultats sont tout de même encourageants : le rendement annualisé reste proche de celui de la cible, la volatilité est plus faible, le drawdown est moins profond et le Sharpe ratio est supérieur.

Visuellement, le clone suit correctement les grands régimes de la cible, notamment le choc COVID de 2020 et la période de remontée des taux en 2022. Il existe des divergences ponctuelles, mais la trajectoire cumulée reste globalement comparable.

Une représentation graphique de la reproduction

Poids actuels en production

À titre illustratif, voici les expositions obtenues à partir du dernier prix observé de DBMFE. Ces poids ne constituent évidemment pas une recommandation d’investissement. Ils sont propres à cette date, à cette implémentation et à l’univers de facteurs retenu. Ils peuvent changer dès le prochain rebalancement[12].

Actif Poids Direction
Or, future +27,6 % Long
Yen japonais, future −17,7 % Short
Euro, future +11,4 % Long
Russell 2000, future −10,4 % Short
Pétrole Brent, future +8,6 % Long
Actions Chine internet, ETF +5,9 % Long
Actions Japon, ETF +5,3 % Long
Nasdaq 100, future −3,1 % Short
Crypto, net −4,8 % Short

Le levier brut ressort à 1,01× et le levier net à +0,23×. Le portefeuille est donc presque entièrement investi en exposition brute, mais avec une exposition directionnelle nette relativement modérée. Les principales positions longues portent sur l’or, l’euro, le pétrole, les actions japonaises et les actions chinoises. Les principales positions courtes portent sur le yen, le Russell 2000, le Nasdaq 100 et les cryptos.

Pour finir

L’objectif initial était simplement de mieux comprendre ce qui se passe sous le capot de DBMFE. De ce point de vue, l’expérience est utile. Elle montre qu’une réplication factorielle relativement simple, régularisée et validée en walk-forward, peut capturer une partie significative du comportement historique d’une exposition managed futures.

Il faut cependant rester prudent. Le clone n’est pas DBMFE. Il utilise des proxies, des données imparfaites, un univers de facteurs plus limité et des hypothèses simplificatrices sur les coûts de financement, les coûts de transaction et l’exécution. Le backtest donne donc une indication, pas une garantie.

Le vrai test commence en conditions réelles. C’est là que les écarts de données, les petites erreurs de timing, les coûts implicites et les contraintes de taille peuvent faire beaucoup plus mal que dans mes données. Il est tout à fait possible que la réplication se dégrade fortement en live. Mais au moins, l’exercice permet de comprendre ce que l’on essaie de répliquer, pourquoi cela peut fonctionner, et où se situent les risques.


  1. que je n’ai pas vraiment compris ↩︎

  2. Et construire l’infrastructure pour avoir un petit bout de mon patrimoine qui suit la stratégie ci-dessous, j’espère que j’ai bien fait le travail, y’a 300€ dans le fonds ! ↩︎

  3. ou CTA, pour Commodity Trading Advisor ↩︎

  4. Vous voyez déjà d’où vient le nom managed futures ! ↩︎

  5. Moskowitz, T. J., Ooi, Y. H., & Pedersen, L. H. (2012). “Time Series Momentum.” Journal of Financial Economics, 104(2), 228–250. Redirecting ↩︎ ↩︎

  6. O’Doherty, M. S., Savin, N. E., & Tiwari, A. (2016). “Hedge Fund Replication: A Model Combination Approach.” Review of Finance, 21(4), 1767–1810. https://ssrn.com/abstract=2554686 ↩︎

  7. C’est aussi ce qui explique, en pratique, que DBMFE puisse proposer une exposition de type managed futures à des frais sensiblement inférieurs à ceux de produits concurrents. ↩︎

  8. Hurst, B., Ooi, Y. H., & Pedersen, L. H. (2017). “A Century of Evidence on Trend-Following Investing.” The Journal of Portfolio Management, 44(1), 15–29. https://doi.org/10.3905/jpm.2017.44.1.015 ↩︎

  9. Baltas, N., & Kosowski, R. (2015). “Demystifying Time-Series Momentum Strategies: Volatility Estimators, Trading Rules and Pairwise Correlations.” SSRN Working Paper. https://ssrn.com/abstract=2140091 ↩︎

  10. La contrainte est aussi très prosaïque : avec un petit capital, multiplier les facteurs finit vite par produire des ordres de quelques euros, voire moins. Ce n’est ni élégant, ni vraiment exécutable. ↩︎

  11. Totalement ad hoc, oui. Mais c’est mon fonds, et je fais ce que je veux (le dites pas à l’AMF svp) ↩︎

  12. Ces poids sont donnés uniquement à titre d’illustration. Ils ne sont pas stables dans le temps. L’expérience est réalisée avec un capital volontairement limité, justement pour tester l’exécution réelle sans enjeu matériel important. ↩︎

11 « J'aime »

Merci pour cette super analyse, c’est trop intéressant :open_mouth:

J’étais surprise de le voir ressortir autant, et je suis pas sûre de bien comprendre pourquoi. Mon intuition c’est que c’est parce qu’il maximise le ratio signal/bruit dans un contexte de tendances lentes ?

J’ai aussi l’impression que ta fonction de scoring favorise mécaniquement les modèles plus stables (donc avec une fenêtre longue), mais dans quelle mesure la formule de softmax créé un effet « winner-take-most » ?

Et du coup, ça me rend curieuse de la comparaison entre w252-hl21 et w252-hl63. À quel point hl63 est pénalisé par son manque de réactivité ? Parce que ses drawdown doivent être moins brutaux mais prolongés ?

Je n’ai pas de preuve théorique forte que w252-hl21 devrait dominer, donc je resterais prudent. Mon intuition est simplement qu’il se place assez bien dans le compromis biais/variance.
La fenêtre de 252 jours donne suffisamment d’observations pour estimer des coefficients de régression à peu près stables. À l’inverse, la demi-vie de 21 jours fait que les observations récentes comptent beaucoup plus que les anciennes, ce qui permet au modèle de réagir assez vite quand les fonds managed futures changent leurs expositions.

Avec une demi-vie plus longue, par exemple 63 jours, on risque de garder trop longtemps des expositions devenues obsolètes. Le modèle est plus lisse, mais potentiellement en retard. Avec une mémoire trop courte, on devient plus réactif, mais les coefficients deviennent vite très bruités et la variance de l’estimateur augmente trop.

Je pense que cet effet peut venir du softmax, oui, il peut clairement créer un effet “winner-take-most”. La température contrôle justement ce degré de concentration : plus elle est basse, plus l’allocation se concentre sur le candidat qui a le meilleur score[1].


  1. D’ailleurs, de la même manière qu’au dessus pour la demi-vie j’ai pas forcément fait de test hyper poussé pour savoir si le coefficient que j’ai considéré était cohérent, il est peut-être trop bas et crée justement cet effet ! ↩︎

1 « J'aime »

Bonjour à tous :slight_smile:

Cela fait maintenant une semaine qu’environ 300 € tournent en conditions réelles dans mon clone de DBMFE. Voici une première comparaison avec DBMFE, la version EUR cotée à Paris, en base 100 au lundi 4 mai :

Date DBMFE.PA base 100 Clone base 100
2026-05-04 100.00 100.00
2026-05-05 99.63 100.72
2026-05-06 99.62 100.41
2026-05-07 98.39 99.81
2026-05-08 99.02 99.77

Sur cette première semaine :

  • DBMFE.PA : -0.98 %
  • Clone : -0.23 %

Donc, sur cette toute petite période, le clone s’en sort plutôt bien face à DBMFE. Évidemment, une semaine ne prouve rien statistiquement, il faudra suivre ça sur plusieurs semaines/mois pour voir si le comportement reste cohérent.

Autre limite importante : le portefeuille est très petit, environ 300 €, donc les tailles minimales d’ordre m’empêchent de rééquilibrer exactement comme le modèle le recommanderait. Le portefeuille réel peut donc s’écarter de la cible théorique.

Mais comme premier test live, je trouve ça encourageant : les ordres passent, le portefeuille tourne, et le comportement reste raisonnablement proche de DBMFE sur cette première semaine.

4 « J'aime »

Les ordres sont ils automatisés ? Si c’est le cas, par quels moyens et quel broker?

2 « J'aime »

Oui, tout est automatisé.

Étonnamment, le plus simple que j’ai trouvé, avec mes contraintes, est de passer par des contrats perpétuels crypto. Je précise bien : c’est le plus simple dans mon cas, c’est-à-dire un particulier avec un petit capital, seul avec son PC et avec mes connaissances. Pour un institutionnel, ou pour DBMFE lui-même, ce serait évidemment très différent.

Ce choix restreint un peu l’univers de contrats futures accessible, et ajoute un risque opérationnel lié à la plateforme et à la nature des perps crypto. En revanche, côté automatisation, ça a été franchement beaucoup plus simple que ce que j’imaginais.

Un autre élément qui a fait pencher la balance est la fiscalité, même si c’est un point que je dois encore vérifier sérieusement. Le fait de rester dans l’univers crypto pourrait avoir un traitement différent d’un CTO avec des futures classiques. En pratique, je ne fais pas de conversion vers l’euro ou le dollar pendant la vie de la stratégie : tout reste sur la plateforme et en crypto. Mais je n’ai que peu de recul sur la fiscalité liés à ces contrats, je préfère être prudent là-dessus, et je sauvegarde bien proprement l’ensemble des positions et trades chaque jour au cas où il faudrait tout reconstruire[1].

Concrètement, chaque soir après la clôture de DBMFE, un cron lance un script Python qui récupère le prix de clôture de DBMFE, réestime le modèle, puis envoie les ordres de rééquilibrage si nécessaire. C’est à ce moment-là que les contraintes de taille minimale d’ordre me gênent un peu : avec environ 300 € de capital, un minimum d’ordre de 10 € est assez significatif.

Et vraiment, ne faites surtout pas ça. Ce n’est pas une recommandation, ni une bonne idée à répliquer. C’est avant tout une expérience personnelle pour comprendre le fonctionnement de DBMFE[2], la logique des managed futures, et les difficultés concrètes de mise en œuvre.

Il y a énormément de limites : les données sont difficiles à obtenir, j’utilise des proxys imparfaits, l’univers tradable est restreint, la mise en œuvre est fragile, les tailles minimales d’ordre déforment le portefeuille avec un petit capital, et le traitement fiscal est incertain.

Bref, l’objectif n’est pas de battre DBMFE ni de proposer une alternative investissable, ni un tuto. C’est surtout un projet pédagogique pour m’aider à mieux comprendre d’où viennent les performances d’un managed futures d’autant plus un fond aussi spécial que DBMFE.


  1. Mais alors si je dois faire ça, tout le fun de l’expérience sera immédiatement détruit :smiley: ↩︎

  2. Et pour le coup ça m’a fait gagner en confiance en ce fonds ↩︎

2 « J'aime »

D’accord merci. Le fait d’acheter des supports crypto sans repasser par de la monnaie fiat permet effectivement de ne pas déclencher la fiscalité. Si l’on ne tient pas compte de la crédibilité du sous-jacent dans lequel on investit c’est effectivement une solution optimale.

En fait, je cherche à voir s’il est possible de mettre en place des ordres automatiques comme j’ai pu le voir sur certain broker américain en fonction de conditions de marché (par exemple avec les moyennes mobiles). Je sais que ibkr propose des API mais je n’ai jamais testé. J’aurai voulu avoir des retours d’expérience avec des personnes qui auraient mis en place ce type de stratégies automatisées. Je comprends que ce n’est pas le cas avec ton fond « crypto ».

Fiscalement, si on pousse l’analyse de manière rigoureuse, certains crypto-actifs adossés à des actifs réels — comme des matières premières tokenisées, de la dette, de l’immobilier ou certains produits dérivés — pourraient sortir du régime simplifié applicable aux actifs numériques “classiques”.

Le sujet n’est pas tant l’existence d’un sous-jacent réel que la nature économique du token : plus un actif tokenisé se rapproche d’un instrument financier traditionnel (obligation, créance, produit de taux, part d’actif), plus le risque de requalification fiscale augmente.

En pratique toutefois, la doctrine reste encore floue et il semble peu probable que la DGFIP cherche aujourd’hui à requalifier massivement ce type d’actifs chez les particuliers, sauf cas importants ou structures manifestement assimilables à des produits financiers classiques.

1 « J'aime »

Finalement c’est Cayas qui va implémenter MLM UCITS acc et pas Kraneshares :heart_eyes:

Mention sur la précision de la restitution.

Pourquoi n’as-tu pas essayé de coller aux futures utilisées par DBMF directement ?

2 « J'aime »

Merci beaucoup pour ce lien, c’est super intéressant ! La raison est un peu bête : je suis tout simplement passé à côté de l’info. :see_no_evil_monkey:

En jetant un coup d’œil rapide, on voit que le clone et DBMFE sont tous les deux short sur le Yen et les taux US, et long sur les actions et le pétrole. En revanche, ma réplication s’est trompée de signe sur deux actifs : je suis short sur l’Euro alors que DBMFE est long, et inversement pour l’or (je suis long, ils sont short).

C’est donc un succès mitigé pour le moment. Cela explique d’ailleurs pourquoi le clone a affiché une performance très différente de DBMFE cette semaine, avec un écart de l’ordre de 3 % : le clone a stagné, tandis que DBMFE a bien progressé.

Il me semble d’ailleurs que KMLM n’utilise pas du tout la même approche que DBMFE, qui est assez unique avec sa stratégie de réplication. Si je ne me trompe pas, Kraneshares s’appuie plutôt sur une méthodologie systématique de trend following pur, dans l’esprit de ce papier d’AQR :

Il me semble aussi que la méthodologie exacte et historique derrière KMLM a été publiée, mais impossible de remettre la main sur le papier au moment d’écrire ces lignes.