Chaque chiffre de l'article, et d'où il vient
Assez de méthode pour vérifier l'arithmétique à la main, ou pour reconstruire une étude équivalente à partir des mêmes sources publiques, y compris les règles qui gouvernent un contrat qui cesse d'être traité et les empreintes sous lesquelles la campagne est gelée.
Plateforme, univers et dates
Futures perpétuels Binance margés en USDT. La date de sélection est le 31 décembre 2022 et rien de postérieur n'informe le classement. Un contrat est éligible s'il est coté et margé en USDT, dispose d'au moins 24 mois d'historique de volume réellement traité à la date de sélection, mesuré comme un premier jour à volume traité positif au plus tard le 31 décembre 2020, a été traité entre octobre et décembre 2022, et ne constitue pas une créance en double sur la même exposition sous-jacente. L'énumération parcourt les 986 contrats jamais listés sur la plateforme et en laisse 78 éligibles, classés par notionnel quotidien médian traité d'octobre à décembre 2022. Aucun contrat éligible n'est une dénomination en milliers d'unités ni une seconde dénomination de cotation d'un autre, donc la règle de doublon n'écarte rien et le classement est le classement brut par notionnel.
L'univers gelé va du rang 1 au rang 30. Tranches et échelons sont deux partitions déterministes de ce seul classement, fixées avant toute exécution.
| Tranche | Marchés | Notionnel quotidien médian |
|---|---|---|
| T1, rangs 1-6 | BTC, ETH, DOGE, XRP, BNB, SOL | 6,978M$ à 433M$ |
| T2, rangs 7-14 | MATIC, LTC, ETC, LINK, ADA, NEAR, DOT, EOS | 347M$ à 128M$ |
| T3, rangs 15-22 | AVAX, SUSHI, CRV, AXS, ATOM, FIL, FTM, BCH | 127M$ à 72M$ |
| T4, rangs 23-30 | TRX, UNI, WAVES, ALGO, AAVE, BAND, RSR, XMR | 58M$ à 34M$ |
Les rangs 1 à 6 reproduisent exactement les six marchés de l'étude héritée. L'axe des rangs couvre un facteur 205 en notionnel traité.
Les échelons sont les univers top-N emboîtés pour N dans {6, 10, 15, 20, 25, 30}, soit 36, 60, 90, 120, 150 et 180 sleeves, chaque échelon déployant le même capital fixe à poids égal par sleeve. La période hors échantillon court du 1er janvier 2023 au 30 juin 2026, quatorze trimestres complets et non chevauchants. Les données ont été tirées jusqu'au 30 juin 2026 exclu, donc la sensibilité enregistrée de fenêtre partielle pour juillet 2026 ne s'applique pas.
Données
Klines horaires UTC depuis le lancement de chaque contrat, klines à la minute depuis le 1er novembre 2021 pour reconstruire le chemin intra-barre, historique des événements de funding à leurs horodatages réels avec l'intervalle de règlement publié, et ouvertures horaires du mark price pour les flux de funding. Les barres à la minute sont consommées puis jetées ; ce qui persiste par heure est l'information de chemin dérivée dont le moteur a besoin, à savoir l'horodatage du plus haut et du plus bas de la barre, leur ordre, le nombre de minutes et les indicateurs de réparation.
Les panels sont construits sur une grille horaire UTC commune par marché, sans forward fill. Le volume traité positif sert de test à la fois pour l'historique d'un contrat et pour sa fin. Cela compte : le panel local des contrats délistés complète les contrats morts avec des barres à volume nul bien après le règlement, 11,510 lignes ajoutées pour un contrat et 16,527 pour un autre, tous deux courant jusqu'au 2026-04-30 malgré des règlements en janvier 2025 et juin 2024. Lire l'étendue du fichier plutôt que le volume traité aurait laissé deux contrats morts se traiter à des prix périmés pendant plus d'un an de la période hors échantillon.
Pour les six marchés historiques, le panel gelé de l'étude précédente est réutilisé octet pour octet, afin que le contrôle d'emboîtement puisse être exact. Les panels locaux servent de contrôles croisés sur le tirage frais plutôt que de sources, et tout désaccord au niveau de la barre a été tranché contre la plateforme avant le gel.
Disparition de contrat et règlement d'office
Quatre des vingt-quatre contrats ajoutés ont cessé d'être traités à l'intérieur de la période hors échantillon. Binance les a réglés d'office tous les quatre à 09:00 UTC, et la dernière heure à volume traité positif coïncide avec le règlement annoncé dans chaque cas. Chaque annonce est conservée avec son URL, son horodatage de récupération et son SHA-256 dans un manifeste que le contrôle de données lit.
| Rang | Contrat | Règlement annoncé, UTC | Dernière heure à volume positif |
|---|---|---|---|
| 7 | MATICUSDT | 2024-09-04 09:00 | 2024-09-04 08:00 |
| 14 | EOSUSDT | 2025-05-21 09:00 | 2025-05-21 08:00 |
| 21 | FTMUSDT | 2025-01-06 09:00 | 2025-01-06 09:00 |
| 25 | WAVESUSDT | 2024-06-11 09:00 | 2024-06-11 08:00 |
La règle principale est l'absence de raccordement. Un sleeve prend fin quand son contrat cesse d'être traité, toute position ouverte se ferme à la dernière ouverture observée, et à partir de la barre suivante le sleeve reste en cash pour le reste de l'étude. Les sleeves survivants ne sont jamais renormalisés pour absorber le capital libéré. C'est la description littérale de ce qu'a fait la plateforme plutôt que le simple choix conservateur : les positions ont été fermées et réglées, et aucune position successeur n'a été créée.
La sensibilité de raccordement enregistrée identifie un successeur par le token nommé dans l'annonce de swap de la plateforme, défini avant toute comparaison de prix, parce que la ressemblance de ticker désigne ici le mauvais contrat. Deux tickers proches de Sonic se traitent simultanément sur cette plateforme et un seul est le token dans lequel FTM a été converti. Un successeur n'est accepté que si sa première ouverture observée et le dernier cours traité du prédécesseur concordent à 5% près après application du ratio annoncé.
| Prédécesseur | Successeur | Interruption sans contrat | Variation ajustée du ratio | Tolérance de 5% |
|---|---|---|---|---|
| MATICUSDT | POLUSDT | 9 jours 4 heures | +6.03% | échec, non raccordé |
| EOSUSDT | AUSDT | 7 jours 0 heure | +0.23% | réussi |
| FTMUSDT | SUSDT | 10 jours 1 heure | +3.87% | réussi |
Avec les deux marchés raccordés substitués, le contraste principal passe de -1.046 à -1.124, avec un intervalle à 95% de -3.081 à +0.856. Le verdict ne dépend pas du traitement des migrations.
La tolérance a été écrite pour attraper un mauvais ratio de conversion et ne peut pas distinguer cela d'un vrai mouvement de marché sur une interruption de cette durée. Elle a tout de même été laissée telle quelle, parce que le cas en échec était déjà visible quand la faiblesse a été remarquée, et reparamétrer un test en sachant quel contrat il exclut est exactement le schéma que le pré-enregistrement existe pour empêcher. La conséquence est consignée à la place.
Stratégies et grilles de configuration
Six familles structurelles avec leur sémantique d'événements de signal héritée sans changement : tendance EMA, cassure Donchian, momentum de série temporelle, retournement RSI, fade de bandes de Bollinger et cassure par compression de volatilité. Chacune porte une liste canonique de 64 configurations numériques, générée une seule fois par un générateur d'hypercube latin discret avec la graine 20260809, réutilisée sur chaque marché et chaque fenêtre et verrouillée par empreinte. Aucun marché ne reçoit jamais une recherche plus large qu'un autre.
Une position par sleeve. Les signaux de même sens sont ignorés, un signal opposé retourne la position à la prochaine ouverture observée et facture deux exécutions, stop et objectif sont fixés par l'ATR de Wilder(14) connu à l'entrée, et une durée maximale sort à l'ouverture après H barres complètes en position. L'ordre des événements au même horodatage est funding, barrières par gap, retournement, durée maximale, nouvelle entrée, puis barrières intra-barre. L'exécution intra-barre reconstruit l'heure en ouverture, premier extrême enregistré, second extrême enregistré, clôture, à partir des barres à la minute ; un gap à travers le stop s'exécute à la première ouverture disponible et un gap à travers l'objectif ne s'exécute pas mieux que l'objectif ; quand l'ordre des extrêmes est indéterminé, le stop s'exécute en premier.
Walk-forward et sélection
for window in quarterly_windows(oos_start="2023-01-01", oos_end="2026-07-01"):
param_block = window.is_slice[:9] # nine months, scored
axis_block = window.is_slice[9:] # three months, retained unused
attempts = [score(cfg, param_block) for cfg in family_grid] # all 64, persisted
eligible = [a for a in attempts
if a.closed_trades >= 24 and a.distinct_weeks >= 6]
if not eligible:
cash_sleeve(window) # recorded, never dropped
continue
winner = max(eligible, key=lambda a: (a.net_return, -a.turnover, -a.canonical_index))
apply(winner, window.oos_slice) # OOS starts flatDouze mois en échantillon répartis en un bloc de paramètres de neuf mois et un bloc de sélection d'axe de trois mois, trois mois hors échantillon, un pas de trois mois, quatorze fenêtres complètes. Le bloc de sélection d'axe n'a aucun rôle de sélection ici puisque cette étude n'a pas de sélecteur ; il est conservé inutilisé pour que les bornes de fenêtre, le comportement de purge et les blocs notés restent identiques bit à bit à l'étude héritée et que le contrôle d'emboîtement puisse être exact.
L'éligibilité exige au moins 24 trades clôturés sur au moins six semaines calendaires distinctes dans le bloc de paramètres, décidée en échantillon pour qu'aucune information hors échantillon ne sélectionne les sleeves actifs. Une paire sleeve-fenêtre sans configuration éligible contribue en cash et est consignée, ce qui compte parce que les contrats fins échouent plus souvent à cette barre et qu'abandonner là-dessus aurait transformé l'étude en filtre de survie sur l'activité. Sur l'ensemble de la campagne, 54 des 2,520 décisions de sélection n'ont trouvé aucune configuration éligible. Les égalités se départagent par rotation plus faible, puis par indice canonique plus petit.
Coûts et funding
Le modèle principal facture 5 points de base de frais taker et 2 de slippage sur chaque exécution, sur chaque marché du rang 1 au rang 30, appliqués au notionnel absolu exécuté avec construction adverse de l'exécution et comptabilisation séparée du slippage. Le garder uniforme est ce qui rend l'échelon à six marchés identique bit à bit à l'étude héritée et maintient le contraste de rang comme une mesure de la qualité du signal plutôt que d'un modèle de coûts inventé par cette étude.
C'est optimiste sur le bas de la cote, donc une sensibilité adverse obligatoire facture le slippage par tranche en laissant les frais inchangés. Elle resélectionne chaque configuration sous le coût échelonné, parce qu'une charge par exécution plus élevée change les paramètres gagnants du bloc et que figer la sélection surestimerait l'effet.
| Tranche | Slippage par exécution, principal | Slippage par exécution, adverse |
|---|---|---|
| T1 | 2 bp | 2 bp |
| T2 | 2 bp | 4 bp |
| T3 | 2 bp | 6 bp |
| T4 | 2 bp | 8 bp |
L'échelle est déclarée et non calibrée, et elle est libellée ainsi partout.
La spécification enregistrait deux branches pour cette échelle : l'une calibrée à partir d'un estimateur de spread Abdi-Ranaldo sur des barres en échantillon, l'autre, si la validation échouait, l'échelle déclarée ci-dessus comme test de stress non calibré. La branche calibrée a échoué pour deux raisons indépendantes, toutes deux établies avant qu'aucune valeur hors échantillon ne soit lue. Le terme moyen de l'estimateur est négatif pour les trente contrats sur barres horaires en échantillon, donc il est écrêté à zéro et renvoie une échelle plate qui affirmerait faussement que le coût d'exécution ne monte pas avec le rang ; l'agrégation en barres quotidiennes n'y change rien, et là où le terme devient positif il implique 62 et 106 points de base contre des spreads réels de perpétuels bien inférieurs à un. Par ailleurs, la seule source de validation de l'inventaire commence le 2023-04-01, à l'intérieur de la période hors échantillon, donc router l'échelle dessus aurait laissé une information hors échantillon choisir un paramètre de coût. Le repli enregistré a été pris plutôt que de substituer un estimateur choisi après avoir vu le premier échouer.
Le funding utilise les événements observés à leurs horodatages réels, un funding positif débitant les longs et créditant les shorts, évalué sur la position détenue immédiatement avant l'horodatage de règlement, et il n'est jamais une variable explicative. Les intervalles de règlement sont lus par contrat dans l'historique de funding publié par la plateforme plutôt que supposés à huit heures, parce que plusieurs contrats altcoins sont passés à un funding de quatre heures à l'intérieur de cet échantillon. Une observation de funding attendue et manquante est une défaillance de données, pas un zéro.
net_pnl = gross_pnl - fee - slippage - funding_cost assert abs(net_pnl - ledger.net_pnl).max() < 1e-9 # measured: exactly 0.0
Inférence
Bootstrap apparié groupé par semaine sur séries quotidiennes, 10,000 réplications, graine 20260810, intervalles de percentiles. À l'intérieur de chaque fenêtre hors échantillon fixe, le bootstrap rééchantillonne des grappes de semaine calendaire du lundi au dimanche UTC. Une borne de trimestre coupe une semaine, donc ses jours de part et d'autre forment des fragments distincts. Chaque marché, famille, tranche et échelon à l'intérieur d'un fragment tiré voyage ensemble, ce qui préserve la dépendance transversale sans changer le nombre de grappes d'une fenêtre.
frag = df.groupby(["window", pd.Grouper(key="ts", freq="W-MON")])
blocks = [g for _, g in frag] # whole week-fragments move together
def stat(sample): # the primary estimand
return (sample.loc[sample.group == "added", "net_bp"].mean()
- sample.loc[sample.group == "incumbent", "net_bp"].mean())
draws = [stat(pd.concat(rng.choice(blocks, len(blocks)))) for _ in range(10_000)]
lo, hi = np.percentile(draws, [2.5, 97.5])La mesure est l'espérance nette par sleeve des 144 sleeves ajoutés moins les 36 sleeves historiques, en points de base de capital de sleeve par sleeve-jour vivant. Un sleeve-jour vivant est un jour où le contrat était traité, donc les jours postérieurs à la disparition d'un contrat quittent entièrement le dénominateur.
Chaque p-valeur secondaire vaut deux fois la plus petite probabilité de queue du bootstrap avec la correction de réplications finies (count + 1) / (B + 1), plafonnée à un, avant que les quatre n'entrent dans Benjamini-Hochberg à 5%. L'unique contraste principal n'est pas corrigé, et aucune autre comparaison de l'étude ne peut devenir un titre de remplacement.
La puissance a été mesurée avant le gel à partir du panel hors échantillon de l'étude héritée : l'erreur type groupée par semaine de la moyenne du groupe historique vaut 1.00 point de base par jour, soit 0.98 fois le calcul en jours indépendants parce que les rendements de sleeve ne portent presque aucune dépendance sérielle, et l'erreur type projetée de la différence vaut 1.21, ce qui donne une demi-largeur à 95% d'environ 2.4. L'écart qui porterait le book de 180 sleeves à un Sharpe nul vaut plus du double de cette demi-largeur : le design résout un effet de moins de la moitié de la taille qui compterait, et il ne peut pas résoudre des différences inférieures à environ 2 points de base par jour.
Discipline sur le Sharpe
Ici le Sharpe est une grandeur estimée et non un diagnostic, donc ses modes d'abus sont fermés explicitement. Le Sharpe ne sélectionne jamais une configuration, un marché, une tranche ou un échelon. Tout Sharpe est calculé sur le book quotidien agrégé et non chevauchant sur les quatorze fenêtres ; les Sharpe par fenêtre ne sont jamais moyennés et le nombre de fenêtres n'est jamais multiplié par un nombre de stratégies. Tout Sharpe est rapporté à côté du rendement net cumulé du même book, et aucun échelon à rendement cumulé négatif ne peut être qualifié d'amélioré sur la seule foi de son Sharpe. L'autocorrélation d'ordre un des books quotidiens va de -0.026 à +0.006, donc le plancher de bruit d'environ 0.52 n'a pas besoin d'inflation notable.
Le contrôle du modèle d'ampleur
mult = np.sqrt(n_cells / (1 + (n_cells - 1) * rho_measured)) sr_hat = per_sleeve_sharpe.mean() * mult # both measured inside the replicate gap = sr_realized - sr_hat # carries its own bootstrap interval
rho_measured est la corrélation moyenne par paires réalisée des rendements nets quotidiens des sleeves de cet échelon. La lecture enregistrée, fixée à l'avance : un intervalle contenant zéro à chaque échelon signifie que l'ampleur a livré exactement le multiplicateur qu'implique la structure de corrélation mesurée et rien de plus, tandis qu'un intervalle excluant zéro à un échelon quelconque signifie que le modèle est incomplet et que le sens de l'écart est rapporté.
L'estimateur a été validé avant de toucher des données réelles, sur un corpus synthétique à Sharpe par sleeve connu et corrélation par paires constante connue, pour rho dans {0, 0.05, 0.2, 0.5} et des nombres de sleeves dans {36, 180}, 24 cas dans la tolérance.
Un biais déclaré, relevé lors des vérifications et accepté plutôt que corrigé : la corrélation est calculée sur des séries quotidiennes de sleeve exactement nulles environ trois quarts des sleeve-jours, parce qu'un sleeve est à plat la plupart du temps. Ces zéros dépriment mécaniquement la corrélation, ce qui relève le multiplicateur et rend le Sharpe prédit plus négatif. Les six estimations ponctuelles de l'écart sont positives, donc le biais va dans le même sens que la conclusion selon laquelle le réalisé suit le prédit. Changer d'estimateur après avoir vu le résultat n'était pas une option.
Le contrefactuel enregistré maintient chaque sleeve ajouté à la moyenne et à la volatilité par sleeve des historiques tout en conservant la structure de corrélation réalisée des 180 sleeves, ce qui décompose l'écart de Sharpe en une composante d'ampleur et une composante d'espérance, avec un résidu qui doit être nul à la tolérance numérique près. Mesuré : -1.1876 et +0.1221 pour un résidu d'exactement 0.0000.
Contrôles de fuite, d'intégrité et de crédibilité
| Contrôle | Résultat |
|---|---|
| Emboîtement, sorties du moteur sur les 36 sleeves historiques | identiques image par image |
| Emboîtement, configurations sélectionnées | 504 lignes identiques, 0 divergence |
| Emboîtement, série quotidienne du portefeuille | écart absolu maximal de 3.47e-18 contre une tolérance de 1e-12 |
| Référence Python contre le moteur Rust | 120 cas, 41,309 trades, exact sur l'horodatage, le sens et le motif de sortie, 1.94e-16 sur les prix |
| Absence de lookahead sous troncature du futur | 427,080 trades antérieurs identiques bit à bit |
| Nul de marche aléatoire, GBM sans dérive, 30 graines | aucun intervalle de famille au-dessus de zéro |
| Bornes de fenêtre | zéro trade ne franchit une borne sur les 10,080 combinaisons sleeve-bloc |
| Intégrité des données, 30 marchés | zéro remplissage, zéro heure intra-barre manquante, zéro proxy sur la période principale |
| Dates de disparition contre les annonces de la plateforme | 4 sur 4 dans l'heure du règlement |
| Couverture, blocs en échantillon uniquement | 97.86% de remplissage, sans réserve |
| Identité du ledger sur l'ensemble du ledger sélectionné | résidu exactement 0.0 |
Quatre contrôles portent chacun un défaut planté prouvant qu'ils peuvent échouer ; chacun sort avec un code non nul et nomme le défaut. Trente tests passent et backtest-guard ne rapporte aucun échec automatisé.
L'évaluateur. strategy-evaluator, figé au même commit que l'étude héritée, a exécuté ses étapes intégrité, procédure et inputs. Les coûts se réconcilient à 5.55e-17 sur 183,842 lignes, le contrôle de lookahead trouve la corrélation de la même barre plus faible que celle de la barre suivante, et son contrôle rapporté contre recalculé confirme les chiffres publiés face aux valeurs qu'il dérive lui-même. Son verdict global place l'ensemble de stratégies dans le nul empirique, un Sharpe maximal observé de -0.595 contre un maximum nul attendu de 1.116, ce qui, pour un book où chaque bras perd, est un accord et non une contradiction. Son indicateur no_purge est celui hérité : le bloc de paramètres se termine à l'instant où commence le bloc hors échantillon et le moteur purge au niveau du trade plutôt que par écart calendaire, ce qui a été vérifié directement puis revérifié de façon indépendante.
La revérification à partir du code source. L'implémentation a été revérifiée à partir du code source, sans se référer au texte rédigé. Cette passe a rendu un bloqueur, six constats majeurs et six mineurs. À partir du parquet conservé, elle a reproduit la mesure principale, sa décomposition, les quatre tranches, les six échelons et les quatre tests secondaires bit à bit, recalculé chaque décision de sélection sans aucune divergence, vérifié chaque combinaison de bornes sleeve-bloc, et confirmé à la fois qu'aucun trade ne survient après la disparition d'un contrat et que les 108 sleeves en cash contribuent exactement zéro sleeve-jour vivant.
Le bloqueur était que la sensibilité obligatoire à slippage échelonné n'avait en fait jamais été exécutée, alors qu'un brouillon la décrivait comme si elle l'avait été. Son exécution a changé le verdict enregistré sous ce modèle de coûts, raison pour laquelle l'article rapporte les deux lectures côte à côte. Deux autres constats sont consignés plutôt que corrigés : le moteur écarte au lieu de fermer d'office une position ouverte quand un contrat cesse d'être traité, six trades contre 91,277, et un contraste brut non enregistré avait été promu en titre dans un brouillon et se trouve retiré.
Échelle. 180 sleeves sur 56 blocs chacun, 645,120 scores candidats de configuration-bloc, et 2,520 décisions de sélection par politique de coûts. Sur l'ensemble des politiques, le ledger sélectionné contient 527,013 lignes, dont 91,277 trades glissants hors échantillon, produits en 358 secondes de temps moteur avec quatre workers pour 15 Go. L'analyse a été parallélisée sur 16 workers et vérifiée identique bit à bit au chemin séquentiel.
Ce que fait l'addendum, et comment
Aucun moteur n'a été relancé. Le coût de chaque exécution est reconstruit à partir du ledger par trade conservé de l'étude, et cette décomposition reconstitue les colonnes de frais et de slippage enregistrées à 4.3e-19 et exactement zéro, si bien que la retarification est une transformation d'artefacts et non une nouvelle simulation.
| Exécution | Type d'ordre | Frais | Slippage |
|---|---|---|---|
| Entrée à l'ouverture suivante | marché, taker | 5 bp | 2 bp |
| Sortie au stop, gap à travers le stop compris | marché, taker | 5 bp | 2 bp |
| Retournement, les deux jambes | marché, taker | 5 bp | 2 bp |
| Sortie par durée maximale à l'ouverture | marché, taker | 5 bp | 2 bp |
| Sortie à l'objectif | limite au repos, maker | 2 bp | 0 bp |
Tarifs publiés VIP0 sur les perpétuels USD-M de Binance. Aucun palier de frais et aucun rabais ne sont supposés, donc l'économie rapportée est un plancher.
La resélection est obligatoire et non optionnelle, parce que le bloc de paramètres est noté sur le rendement net et que le rendement net dépend du modèle de coûts. Chaque modèle exécute donc la sélection enregistrée complète, 64 tentatives par famille par marché par fenêtre, et l'article rapporte à la fois le chiffre retarifé à sélections figées et le chiffre resélectionné, pour que l'écart entre les deux soit visible.
Le résultat brut et le funding restent identiques bit à bit après retarification, l'identité du ledger tient à exactement zéro, et sur 156,661 lignes matériellement modifiées aucune n'est une sortie hors objectif. Le contrôle qui compte : la sélection sous le modèle all-taker hérité reproduit exactement les 2,520 sélections de cette étude, sans aucune divergence. Sans cela, toute différence pourrait être le modèle de coûts ou un bug, sans moyen de trancher.
Les exécutions sont accordées au contact, donc un ordre à cours limité au repos simplement touché compte comme exécuté. C'est la branche optimiste sur la probabilité d'exécution, ce qui ne fait que renforcer la conclusion. Les entrées restent taker d'un bout à l'autre, parce que les poser au repos changerait quels trades ont lieu et pas seulement leur coût.
L'addendum enregistre aussi, à l'avance, la charge de fermeture d'office que l'étude mère a dû laisser non corrigée. Une position ouverte quand un contrat cesse d'être traité devrait payer une exécution de sortie taker complète, et exactement 6 paires sleeve-fenêtre sélectionnées hors échantillon en portent une. Le moteur signale l'écartement sans émettre le prix du trade, donc la charge ne peut pas être appliquée rétroactivement ; sa borne supérieure vaut 0.0023 point de pourcentage par sleeve.
Empreintes gelées
La spécification, l'univers et chaque liste de configuration ont été verrouillés par empreinte avant qu'aucun bloc hors échantillon ne soit lu, et l'enregistrement de gel a été revérifié entre la campagne et l'analyse. Le runner refuse de lire une barre hors échantillon ou d'écrire un artefact hors échantillon tant que toutes les empreintes enregistrées ne concordent pas.
| Artefact | SHA-256 |
|---|---|
| Manifeste de l'univers | 60ce3d29574a5c7a0d9befecc5cb1ea9f00a82528cf7eb80b0a7ec85ae450149 |
| Manifeste des données, 30 marchés | e3129b4b1d711adec2cd905a4ce246b2b3ad7938c9614f31af6aca5d44daff03 |
| Manifeste des blocs de l'étude | 325d3873324433b73979ace8c7450a1df901b46d6d6b6852553aab7dd0c26fbb |
| Enregistrement de gel | 38741abd0e08a1cdab605cd62bad15ce733b66799761fb421ec132c665014e3c |
| Manifeste de la campagne moteur | eb954b0d820c0f1e5e1745824c82d484cc006ac68ab6ac40729fb81cecdb3eac |
| Résultats | ef56d329aacd262d00d5b23679963514fb12055ff26a5b0f573e72d156f8e06d |
Demander le pipeline complet
Cette page suffit à vérifier à la main chaque chiffre de l'article, ou à reconstruire une étude équivalente à partir des mêmes sources de données publiques. Les scripts de production, à savoir le tirage de données, la construction des panels, le moteur Rust, le runner d'expérience et l'analyse, ne sont pas publiés ici. Écrivez à daniel@daru.finance et je vous les envoie.

