Simulation sur 7 jours¶
Backtest de la stratégie sur toutes les migrations DAMM v2 du 23 au 30 juillet 2026, reconstruites heure par heure depuis l'API Meteora.
Correction — ce chapitre mesure une autre stratégie
Le fil complet de @skolmbeagh, obtenu après coup, décrit une stratégie différente : créer soi-même un pool à 50 % de frais décroissants, en détenir la quasi-totalité, et le tenir 45 minutes, pas des jours.
Les mesures ci-dessous restent valides pour ce qu'elles décrivent — rejoindre un pool migré et le tenir plusieurs jours — mais ce n'est pas la stratégie de référence. Voir la vraie stratégie, dont le résultat mesuré est +19,5 % sur la même semaine.
Le résultat en une ligne¶
Sur cette fenêtre, la stratégie ne gagne pas d'argent
Avec les seuils recommandés au chapitre 3 : 9 entrées, +0,8 % sur le capital engagé, 2 gagnantes sur 9.
Et surtout : la totalité du gain provient d'une seule position. Sans elle, le résultat est de −27,6 %.
Sur les 15 combinaisons de paramètres testées, aucune n'a de PnL médian positif, et aucune n'est positive une fois retirée sa meilleure position.
Méthode¶
Univers¶
| Étape | Volume |
|---|---|
| Pools DAMM v2 créés du 23 au 30 juillet 2026 | 6 741 |
| Dont issus d'un launchpad identifié | 6 396 |
| Dont ayant généré plus de 100 $ de frais cumulés | 95 |
| Retenus comme candidats (historique complet récupéré) | 95 |
Pour chacun, deux séries horaires complètes depuis la création :
GET /pools/{addr}/volume/history?timeframe=1h→ volume, frais, frais protocoleGET /pools/{addr}/ohlcv?timeframe=1h→ prix
Règle d'entrée simulée¶
À chaque heure suivant la migration, on évalue les critères. Dès qu'ils sont tous vrais, on entre une heure plus tard (latence de notification et d'exécution).
| Critère | Seuil |
|---|---|
| Launchpad renseigné | oui |
| Volume glissant 24 h | ≥ 50 000 $ |
| TVL estimée | ≥ 5 000 $ |
| Frais de base | entre 1 % et 10 % |
| Pool non blacklisté | oui |
| Fenêtre de recherche | 72 h après la migration |
Dépôt : 1 SOL (≈ 75 $) par position, plafonné à 5 % de la TVL du pool.
Sortie : 72 h après l'entrée, ou fin des données.
Modèle de PnL¶
Le pool étant en full range (produit constant) et ~93 % de sa liquidité étant verrouillée, la liquidité \(L\) est quasi constante. On en déduit deux relations utilisées partout :
| Symbole | Signification |
|---|---|
| \(P(t)\) | Prix du token de base exprimé en token de cotation |
| \(D\) | Dépôt initial, en token de cotation |
| \(V(t)\) | Valeur de la position |
Les deux échelles étant en \(\sqrt{P}\), la part de frais est constante :
Le PnL final, mesuré contre le fait d'avoir gardé son SOL :
avec \(r = P(t_{\text{sortie}})/P(t_0)\), et des frictions modélisant le swap d'entrée et de sortie :
La part protocole mesurée sur l'ensemble des séries est de 23,5 % des frais de transaction — proche des 20 % documentés.
Résultat avec les seuils recommandés¶
9 entrées, 675 $ engagés (9 SOL).
| Pool | Launchpad | Entrée | Durée | TVL à l'entrée | Vol 24 h | Frais | ×prix | Frais perçus | Coûts | PnL |
|---|---|---|---|---|---|---|---|---|---|---|
| TBBB-SOL | forge | +15 h | 73 h | 23 460 $ | 58 717 $ | 4.00 % | ×9.49 | 21.79 $ | 6.61 $ | +171.19 $ |
| ENTROS-SOL | easya-kickstart | +1 h | 7 h | 13 970 $ | 71 382 $ | 2.00 % | ×1.99 | 5.71 $ | 2.29 $ | +34.34 $ |
| ROCK-SOL | met-dbc | +1 h | 62 h | 18 528 $ | 699 454 $ | 1.00 % | ×0.60 | 11.61 $ | 0.94 $ | -6.07 $ |
| SGD-USDC | orynth | +1 h | 31 h | 17 670 $ | 126 839 $ | 2.00 % | ×0.58 | 1.90 $ | 1.60 $ | -17.47 $ |
| Hypnotoad-SOL | met-dbc | +1 h | 73 h | 29 493 $ | 101 391 $ | 1.25 % | ×0.53 | 0.23 $ | 0.97 $ | -21.18 $ |
| CATE-SOL | dubdub | +1 h | 73 h | 29 655 $ | 290 252 $ | 2.00 % | ×0.06 | 25.55 $ | 1.05 $ | -32.01 $ |
| DOGE1-SOL | dubdub | +1 h | 64 h | 14 409 $ | 557 364 $ | 2.00 % | ×0.26 | 1.79 $ | 1.43 $ | -36.25 $ |
| LUNA-SOL | migrate.fun | +4 h | 32 h | 12 227 $ | 248 830 $ | 1.00 % | ×0.21 | 5.39 $ | 0.88 $ | -36.28 $ |
| HOR-SOL | migrate.fun | +14 h | 35 h | 19 349 $ | 86 704 $ | 1.00 % | ×0.09 | 2.40 $ | 0.68 $ | -50.79 $ |
Décomposition¶
| Poste | Montant |
|---|---|
| Dépôts | −675,00 $ |
| Valeur des positions à la sortie | +620,57 $ |
| — dont effet prix | −54,43 $ |
| Frais perçus | +76,37 $ |
| Frictions d'entrée et de sortie | −16,46 $ |
| PnL total | +5,48 $ soit +0,8 % |
Ce qui marche
Les frais rapportent 11,3 % du capital engagé en 7 jours. C'est considérable, et cela confirme la mesure du chapitre précédent : la fenêtre post-migration paie réellement.
Ce qui ne marche pas
Le multiple de prix médian est de ×0,53 : la position médiane a vu son token perdre 47 % pendant les 72 heures de détention.
Les frais couvrent presque exactement la perte. Presque. Et le résultat net ne devient positif que grâce à un seul token qui a fait ×9,5.
La dépendance à une seule position¶
| Scénario | PnL |
|---|---|
| Les 9 positions | +0,8 % |
| Sans la meilleure (TBBB) | −27,6 % |
| PnL médian par position | −21,18 $ sur 75 $ engagés, soit −28 % |
Variante sans filtre¶
Pour mesurer ce que le filtrage apporte, la même simulation en entrant dans tout pool migré ayant plus de 5 000 $ de volume 24 h et 1 000 $ de TVL.
28 entrées, 2 085 $ engagés.
| Pool | Launchpad | Entrée | Durée | TVL à l'entrée | Vol 24 h | Frais | ×prix | Frais perçus | Coûts | PnL |
|---|---|---|---|---|---|---|---|---|---|---|
| TBBB-SOL | forge | +4 h | 73 h | 5 840 $ | 5 012 $ | 4.00 % | ×82.02 | 70.06 $ | 19.93 $ | +654.37 $ |
| LUNA-SOL | migrate.fun | +1 h | 35 h | 3 119 $ | 8 792 $ | 1.00 % | ×3.20 | 55.59 $ | 3.56 $ | +111.14 $ |
| PEPTIDEZZ-SOL | — | +1 h | 73 h | 146 450 $ | 72 782 $ | 6.00 % | ×4.53 | 1.75 $ | 7.10 $ | +79.23 $ |
| ENTROS-SOL | easya-kickstart | +0 h | 8 h | 15 916 $ | 59 722 $ | 2.00 % | ×1.54 | 5.75 $ | 2.08 $ | +21.65 $ |
| USUR-SOL | — | +46 h | 73 h | 77 052 $ | 12 475 $ | 0.25 % | ×1.17 | 0.41 $ | 0.27 $ | +6.16 $ |
| CATE-SOL | pump.fun | +7 h | 70 h | 1 204 $ | 5 553 $ | 0.25 % | ×1.19 | 3.14 $ | 3.30 $ | +5.19 $ |
| XST-USDT | — | +25 h | 46 h | 3 131 $ | 4 983 $ | 3.00 % | ×1.15 | 2.92 $ | 4.19 $ | +4.14 $ |
| SACF-USDC | — | +4 h | 73 h | 50 038 $ | 6 254 $ | 1.00 % | ×1.05 | 0.23 $ | 0.87 $ | +1.21 $ |
| SAOF-USDC | — | +8 h | 73 h | 120 290 $ | 5 297 $ | 4.00 % | ×1.06 | 0.54 $ | 3.09 $ | -0.24 $ |
| USOC-USDC | — | +1 h | 73 h | 104 193 $ | 53 666 $ | 4.00 % | ×1.04 | 0.91 $ | 3.09 $ | -0.63 $ |
| HORSE-SOL | — | +0 h | 27 h | 12 089 $ | 10 711 $ | 1.00 % | ×0.95 | 0.03 $ | 1.20 $ | -3.19 $ |
| $VTOPIA-SOL | robolaunch | +1 h | 6 h | 2 180 $ | 15 704 $ | 2.00 % | ×1.00 | 0.00 $ | 4.08 $ | -4.08 $ |
| MACHA-SOL | — | +14 h | 12 h | 18 055 $ | 59 291 $ | 1.00 % | ×0.88 | 1.31 $ | 1.03 $ | -4.19 $ |
| EMBS-SOL | migrate.fun | +0 h | 9 h | 4 624 $ | 11 826 $ | 1.00 % | ×0.90 | 0.16 $ | 1.91 $ | -5.68 $ |
| ROCK-SOL | met-dbc | +1 h | 62 h | 18 528 $ | 699 454 $ | 1.00 % | ×0.60 | 11.61 $ | 0.94 $ | -6.07 $ |
| PERPSBULL-SOL | met-dbc | +1 h | 3 h | 16 734 $ | 13 547 $ | 1.00 % | ×0.76 | 0.08 $ | 1.02 $ | -10.37 $ |
| CARS-USDC | metadao | +1 h | 73 h | 46 157 $ | 422 316 $ | 0.50 % | ×0.68 | 0.45 $ | 0.45 $ | -13.10 $ |
| SPEEDRUN-SOL | bags.fun | +1 h | 73 h | 2 306 $ | 179 946 $ | 2.00 % | ×0.70 | 0.19 $ | 3.62 $ | -15.50 $ |
| SGD-USDC | orynth | +1 h | 31 h | 17 670 $ | 126 839 $ | 2.00 % | ×0.58 | 1.90 $ | 1.60 $ | -17.47 $ |
| Hypnotoad-SOL | met-dbc | +1 h | 73 h | 29 493 $ | 101 391 $ | 1.25 % | ×0.53 | 0.23 $ | 0.97 $ | -21.18 $ |
| Udin-SOL | pump.fun | +22 h | 73 h | 2 467 $ | 5 285 $ | 1.00 % | ×0.47 | 1.40 $ | 2.56 $ | -24.59 $ |
| TIGHT-SOL | pump.fun | +1 h | 25 h | 1 804 $ | 6 977 $ | 4.00 % | ×0.37 | 3.83 $ | 4.91 $ | -30.70 $ |
| CATE-SOL | dubdub | +1 h | 73 h | 29 655 $ | 290 252 $ | 2.00 % | ×0.06 | 25.55 $ | 1.05 $ | -32.01 $ |
| DOGE1-SOL | dubdub | +1 h | 64 h | 14 409 $ | 557 364 $ | 2.00 % | ×0.26 | 1.79 $ | 1.43 $ | -36.25 $ |
| HOR-SOL | migrate.fun | +10 h | 39 h | 22 098 $ | 15 644 $ | 1.00 % | ×0.07 | 3.61 $ | 0.63 $ | -52.34 $ |
| CXMT-SOL | met-dbc | +1 h | 18 h | 19 690 $ | 218 133 $ | 0.10 % | ×0.00 | 0.37 $ | 0.18 $ | -74.81 $ |
| CXMT-SOL | met-dbc | +0 h | 26 h | 21 210 $ | 213 422 $ | 0.10 % | ×0.00 | 0.21 $ | 0.17 $ | -74.96 $ |
| CXMT-SOL | met-dbc | +0 h | 14 h | 17 785 $ | 181 729 $ | 0.10 % | ×0.00 | 0.13 $ | 0.20 $ | -75.06 $ |
Décomposition¶
| Scénario | PnL |
|---|---|
| Les 28 positions | +18,3 % |
| Sans la meilleure | −13,6 % |
| Sans les 2 meilleures | −19,9 % |
| Sans les 3 meilleures | −24,9 % |
| PnL médian par position | −5,70 $, soit −7,6 % |
| Gagnantes | 8 sur 28 |
Le filtre coûte plus qu'il ne rapporte — mais pas pour la raison qu'on croit
La variante sans filtre fait mieux (+18,3 % contre +0,8 %). Ce n'est pas parce que le filtrage est inutile : c'est parce qu'il retarde l'entrée.
Sur TBBB, le filtre attend que le volume 24 h dépasse 50 000 $ et n'entre qu'à +15 h, quand la TVL est déjà à 23 460 $. Sans filtre, l'entrée se fait à +4 h avec une TVL de 5 840 $ — et capte un ×82 au lieu d'un ×9,5.
Autrement dit : sur cette fenêtre, tout le résultat vient de la vitesse d'entrée sur un seul token, pas de la qualité de la sélection. C'est la définition d'un tirage de loterie, pas d'un edge.
Balayage de paramètres¶
15 combinaisons testées. sans top1 = résultat une fois retirée la meilleure
position.
| Vol 24 h min | TVL min | Détention | Sortie vol. | n | PnL | PnL médian | Sans top1 |
|---|---|---|---|---|---|---|---|
| 10 000 | 2 000 | 72 h | — | 13 | −8,7 % | −9,6 $ | −18,9 % |
| 10 000 | 2 000 | 24 h | — | 13 | −15,2 % | −9,6 $ | −18,9 % |
| 10 000 | 2 000 | 72 h | −80 % | 13 | −16,4 % | −15,9 $ | −21,1 % |
| 25 000 | 3 000 | 72 h | — | 9 | +4,4 % | −17,5 $ | −22,2 % |
| 25 000 | 3 000 | 24 h | — | 9 | −13,8 % | −12,9 $ | −21,3 % |
| 25 000 | 3 000 | 72 h | −80 % | 9 | −17,4 % | −24,2 $ | −25,3 % |
| 50 000 | 5 000 | 72 h | — | 9 | +0,8 % | −21,2 $ | −27,6 % |
| 50 000 | 5 000 | 24 h | — | 9 | −21,8 % | −13,7 $ | −30,2 % |
| 50 000 | 5 000 | 72 h | −80 % | 9 | −22,5 % | −22,4 $ | −31,0 % |
| 100 000 | 10 000 | 72 h | — | 8 | −33,3 % | −17,5 $ | −38,5 % |
| 100 000 | 10 000 | 24 h | — | 8 | −32,6 % | −12,9 $ | −37,6 % |
| 100 000 | 10 000 | 72 h | −80 % | 8 | −31,1 % | −25,0 $ | −36,0 % |
| 200 000 | 10 000 | 72 h | — | 4 | −36,8 % | −23,1 $ | −46,4 % |
| 200 000 | 10 000 | 24 h | — | 4 | −46,1 % | −36,8 $ | −52,3 % |
| 200 000 | 10 000 | 72 h | −80 % | 4 | −36,5 % | −25,0 $ | −42,0 % |
Les quatre constats du balayage
- Aucune combinaison n'a un PnL médian positif. Sur 15 essais.
- Aucune combinaison ne survit au retrait de sa meilleure position. Le moins mauvais est à −18,9 %.
- Plus le filtre est strict, pire c'est. De −8,7 % à −36,8 % en resserrant le volume minimum. Attendre la confirmation, c'est arriver après le mouvement.
- Sortir plus tôt n'aide pas. Ni la détention à 24 h, ni la sortie sur effondrement du volume n'améliorent quoi que ce soit — les frais perdus dépassent la perte de prix évitée.
Ce que la simulation ne dit pas¶
Sept limites à garder en tête
1. Une seule semaine. n = 9 à 28 positions. C'est un échantillon minuscule sur lequel aucune conclusion statistique solide n'est possible. Une autre semaine, avec deux TBBB au lieu d'un, donnerait un résultat spectaculairement positif.
2. Un régime de marché particulier. SOL autour de 75 $, marché baissier. Les résultats de la communauté datent majoritairement de la période haussière de mi-2025.
3. Le modèle de TVL est une reconstruction. La TVL passée est estimée par \(\text{TVL}(t) = \text{TVL}_{\text{now}}\sqrt{P(t)/P_{\text{now}}}\), ce qui suppose une liquidité constante. C'est raisonnable — 93 % est verrouillé — mais ce n'est pas une mesure.
4. La part de frais est supposée constante. En réalité, d'autres fournisseurs affluent sur les pools chauds et diluent la part. Ce biais surestime les frais perçus.
5. L'univers exclut les pools ayant généré moins de 100 $ de frais. Ces pools auraient été des pertes quasi certaines. Ce biais surestime aussi le résultat.
6. Les frictions sont modélisées, pas mesurées. Slippage estimé par la formule du produit constant, sans tenir compte du routage réel ni des frais de priorité.
7. Aucun filtre qualitatif n'est appliqué. Ni rugcheck, ni Bubblemaps, ni jugement sur le sérieux du lancement. C'est précisément la partie non automatisable, et c'est peut-être là que se trouve l'edge — la simulation ne peut pas trancher.
Le sens de ces biais
Les points 4 et 5 vont dans le même sens : la simulation est optimiste. Le résultat réel d'un opérateur appliquant mécaniquement ces règles sur cette semaine aurait vraisemblablement été inférieur à +0,8 %.
Conclusion¶
Ce que ce backtest établit
Sur la semaine du 23 au 30 juillet 2026, la stratégie de migration DAMM v2 appliquée mécaniquement est une distribution de loterie : le token médian perd 47 % en 72 heures, les frais perçus (11 % du capital en une semaine — un excellent chiffre) ne suffisent pas à compenser, et le résultat net dépend entièrement de la présence d'un ×80 dans l'échantillon.
Cela ne prouve pas que la stratégie est perdante en espérance. Cela prouve que son espérance ne peut pas être établie sur un échantillon de cette taille, et que quiconque la présente comme fiable sur la base d'une capture de PnL fait exactement l'erreur décrite dans l'inventaire des risques.
Ce qu'il faut en faire
- Le moteur à frais fonctionne. 11,3 % du capital en frais sur 7 jours est réel et remarquable. Le problème n'est pas le rendement, c'est l'actif que l'on est obligé de détenir pour l'obtenir.
- Le dépôt bilatéral est le vrai coupable. Si l'on pouvait entrer en mono-actif comme sur le DLMM, le multiple médian de ×0,53 ne serait pas subi de plein fouet. C'est la raison structurelle pour laquelle ce rapport classe la stratégie hors du parcours principal.
- Le dimensionnement de @skolmbeagh est la seule réponse correcte. Face à une distribution où la médiane perd et où tout dépend d'un tirage rare, seule la multiplication de très petites positions permet de rester dans le jeu assez longtemps pour attraper la queue.
- Refaites cette mesure vous-même sur plusieurs semaines avant d'engager quoi que ce soit. Le code de la simulation tient en une centaine de lignes et n'utilise que des API publiques.