📊 DonnĂ©es Hyperliquid : rĂ©soudre le pro ...

📊 DonnĂ©es Hyperliquid : rĂ©soudre le problĂšme des backtests sur 300+ paires

May 17, 2026

Si tu fais du trading algo sur Hyperliquid avec Freqtrade, tu as forcément rencontré ce problÚme : comment récupérer assez de données historiques pour backtester sérieusement ? Hyperliquid limite le téléchargement à 5000 bougies en arriÚre par timeframe. En 5 minutes, ça fait environ 17 jours. Pas de quoi faire un backtest digne de ce nom.

Pendant un moment, la communautĂ© utilisait le repo GitHub d'Hippocritical pour rĂ©cupĂ©rer les donnĂ©es. Ça marchait bien — jusqu'au jour oĂč ça s'est arrĂȘtĂ©. Il a fallu trouver une autre solution. Ce post retrace le parcours complet : le problĂšme, la transition, et comment mettre en place un systĂšme autonome qui tourne en crontab tous les jours.

Si tu débutes avec Freqtrade, je te recommande de lire d'abord le guide complet des backtests et le guide de connexion Freqtrade + Hyperliquid.

image


Le problĂšme de fond : la limite des 5000 bougies

image

Hyperliquid est un excellent exchange pour le live — dĂ©centralisĂ©, rapide, frais compĂ©titifs. Mais cĂŽtĂ© donnĂ©es historiques, c'est une autre histoire.

L'API Hyperliquid impose une limite stricte de 5000 bougies par requĂȘte et par timeframe. ConcrĂštement, voici ce que ça donne en profondeur d'historique :

  • 5m : 5000 × 5 min = ~17 jours

  • 15m : 5000 × 15 min = ~52 jours

  • 30m : 5000 × 30 min = ~104 jours

  • 1h : 5000 × 60 min = ~208 jours

  • 4h : 5000 × 240 min = ~2.3 ans

  • 1d : 5000 × 1 jour = ~13.7 ans

image

Tu vois le problĂšme : en 5m, tu ne peux rĂ©cupĂ©rer que 17 jours de donnĂ©es. Si tu lances un freqtrade download-data aujourd'hui et que tu veux backtester sur 6 mois, c'est tout simplement impossible via l'API. Et mĂȘme en 1h, tu es limitĂ© Ă  ~7 mois.

En plus de cette limite de profondeur, il y a le rate limit : Hyperliquid autorise 1200 requĂȘtes par minute par wallet. Quand tu tĂ©lĂ©charges les donnĂ©es de 300+ paires sur 8 timeframes, ça s'additionne trĂšs vite.


L'ancienne solution : le repo d'Hippocritical

Pendant plusieurs mois, la communauté Freqtrade avait une solution élégante : le repo GitHub d'Hippocritical (frequenthippoOrg/freqtrade_hyperliquid_download-data). Il mettait à disposition les données OHLCV pré-téléchargées pour toutes les paires Hyperliquid, mises à jour réguliÚrement via GitHub Actions.

On avait d'ailleurs Ă©crit un post dĂ©diĂ© pour expliquer comment l'utiliser — comment cloner le repo, crĂ©er un symlink, et automatiser la mise Ă  jour.

Ça marchait trĂšs bien. Jusqu'au jour oĂč Hippocritical a arrĂȘtĂ© de mettre les donnĂ©es Ă  jour. Le repo n'est plus maintenu activement. Les GitHub Actions ne tournent plus. Et les donnĂ©es sont figĂ©es Ă  une date qui recule de plus en plus dans le passĂ©.

Résultat : des données périmées, et plus moyen de backtester avec des données récentes sur Hyperliquid.


La solution : tĂ©lĂ©charger soi-mĂȘme, tous les jours

image

Le raisonnement est simple : si Hyperliquid ne donne que 5000 bougies en arriÚre par timeframe, il faut télécharger un peu tous les jours et accumuler les données au fil du temps.

Le crontab suivant exécute cette commande tous les jours à 4h du matin :

0 4 * * * cd /home/moutonneux/freqtrade && \
  .venv/bin/freqtrade download-data \
  -c backtest_configs/hyperliquid_download_data.json \
  -d user_data/data/hyperliquid \
  --pairs-file backtest_configs/hyperliquid_pairs.json \
  -t 5m 15m 30m 1h 2h 4h 1d 1w \
  --days 2 \
  --data-format-ohlcv feather \
  --no-parallel-download \
  >> /tmp/hl_download_data.log 2>&1

Décortiquons les paramÚtres importants :

  • --days 2 : on ne tĂ©lĂ©charge que les 2 derniers jours de donnĂ©es. Puisqu'on tourne tous les jours, ça suffit largement pour rester Ă  jour — et ça Ă©vite de solliciter l'API inutilement.

  • --no-parallel-download : les paires sont tĂ©lĂ©chargĂ©es sĂ©quentiellement, pas en parallĂšle. C'est plus lent, mais ça rĂ©duit drastiquement la pression sur le rate limit. Et comme le crontab tourne Ă  4h du matin, la vitesse n'est pas un problĂšme.

  • --data-format-ohlcv feather : format Apache Arrow Feather, plus compact et plus rapide Ă  lire que le JSON. C'est aussi le format utilisĂ© par ftcache pour la persistance.

  • -c backtest_configs/hyperliquid_download_data.json : une config dĂ©diĂ©e au tĂ©lĂ©chargement, minimaliste, avec le support HIP-3 activĂ©.

image

La config de téléchargement

Voici la config utilisée dans le fork (voir sur GitHub) :

{
    "trading_mode": "futures",
    "margin_mode": "isolated",
    "stake_currency": "USDC",
    "dry_run": true,
    "exchange": {
        "name": "hyperliquid",
        "hip3_dexes": ["xyz", "para"],
        "pair_blacklist": []
    },
    "pairlists": [
        {
            "method": "VolumePairList",
            "number_assets": 500,
            "sort_key": "quoteVolume",
            "min_value": 0,
            "refresh_period": 86400
        }
    ]
}

Deux points Ă  noter :

  • "hip3_dexes": ["xyz", "para"] : cette ligne active le support des paires HIP-3, le standard d'Hyperliquid pour les DEX communautaires (XYZ, Paradigm, etc.). Sans cette config, tu ne tĂ©lĂ©charges que les paires du DEX principal — tu rates toute une partie du marchĂ©.

  • VolumePairList avec 500 paires : pour le tĂ©lĂ©chargement, autant prendre large. En backtest, on utilisera StaticPairList, mais pour le download, autant tout rĂ©cupĂ©rer.

La liste de paires est dans un fichier sĂ©parĂ© (hyperliquid_pairs.json sur GitHub) — actuellement 246 paires, de BTC/USDC Ă  ZRO/USDC.


Le résultat : les données disponibles dans le fork

image

Grùce à ce téléchargement quotidien qui tourne depuis des mois, le fork a accumulé un historique qui dépasse largement ce que l'API Hyperliquid permet de récupérer en une seule fois. Voici la profondeur de données actuellement disponible dans le fork :

  • 1w (hebdomadaire) : depuis aoĂ»t 2019 — quasi 7 ans d'historique

  • 1d (journalier) : depuis aoĂ»t 2020 — quasi 6 ans

  • 4h : depuis novembre 2022 — plus de 3 ans

  • 2h : depuis dĂ©cembre 2023 — environ 2 ans et demi

  • 1h : depuis aoĂ»t 2024 — presque 2 ans

  • 30m : depuis dĂ©cembre 2024 — environ 5 mois

  • 15m : depuis fĂ©vrier 2025 — environ 3 mois

  • 5m : depuis mars 2025 — environ 2 mois

image

Tu remarques le pattern : plus le timeframe est court, moins l'historique est profond. C'est logique — 5000 bougies en 5m ne font que 17 jours. C'est prĂ©cisĂ©ment pour ça que le crontab tĂ©lĂ©charge tous les jours : chaque jour qui passe ajoute de la profondeur, surtout sur les petits timeframes.

Et c'est aussi pour ça que ces donnĂ©es sont exposĂ©es directement dans le repo freqtrade-fork. L'objectif est de permettre Ă  n'importe qui de rĂ©cupĂ©rer des donnĂ©es au-delĂ  de la limite de 5000 bougies, sans avoir Ă  les accumuler soi-mĂȘme pendant des semaines.

Environ 370 paires sont couvertes, pour 8 timeframes (5m, 15m, 30m, 1h, 2h, 4h, 1d, 1w), en format Feather.


Le problÚme du rate limit : ftcache et la priorité LOW

image

En mettant en place ce systÚme de téléchargement quotidien, un nouveau problÚme apparait vite : le téléchargement des données interfÚre avec les bots en live.

Rappel : Hyperliquid autorise 1200 requĂȘtes par minute par wallet. Les bots live consomment dĂ©jĂ  une bonne partie de ce budget. Si en plus le crontab se met Ă  tĂ©lĂ©charger les donnĂ©es de 370 paires x 8 timeframes au mĂȘme moment, les bots live se font Ă©jecter par des erreurs 429 (rate limit exceeded).

C'est là qu'intervient ftcache, le cache API intelligent développé dans notre fork Freqtrade.

Comment ftcache protĂšge les bots live

ftcache est un daemon qui centralise toutes les requĂȘtes API de tous les bots Freqtrade. Au lieu que chaque bot appelle Hyperliquid directement, ils passent tous par ftcache qui gĂšre un budget de requĂȘtes partagĂ© avec un systĂšme de prioritĂ©s :

  • CRITICAL (prioritĂ© 0) : passage d'ordres, sorties de positions — jamais retardĂ©, jamais bloquĂ©

  • HIGH (prioritĂ© 1) : consultation des positions, mise Ă  jour des balances pour les trades ouverts

  • NORMAL (prioritĂ© 2) : tickers, infos de marchĂ© gĂ©nĂ©rales

  • LOW (prioritĂ© 3) : bots en dry-run, leverage tiers, funding rates — et le tĂ©lĂ©chargement de donnĂ©es

Le code est explicite — quand un bot est en dry_run (ce qui est le cas de la commande download-data), ses requĂȘtes sont automatiquement classĂ©es en LOW :

prio = priority if priority is not None else (
    self.LOW if self.dry_run else self.HIGH
)

image

Le backoff intelligent

Quand le rate limit commence Ă  ĂȘtre tendu (rĂ©ponse 429 de Hyperliquid), ftcache applique un backoff graduĂ© :

  • Niveau 1 — SOFT (15 secondes) : seules les requĂȘtes LOW sont rejetĂ©es, le dĂ©bit est divisĂ© par 2

  • Niveau 2 — MEDIUM (30 secondes) : les requĂȘtes NORMAL et LOW sont rejetĂ©es, le dĂ©bit est divisĂ© par 4

  • Niveau 3 — HARD (65 secondes) : tout est rejetĂ© sauf CRITICAL

En pratique, ça veut dire que le tĂ©lĂ©chargement de donnĂ©es Ă  4h du matin ne dĂ©range jamais les bots live. Si le rate limit est tendu, c'est le download qui ralentit — pas les ordres. Et comme le download est en --no-parallel-download, il consomme trĂšs peu de budget API.


Le support HIP-3 : les paires des DEX communautaires

image

Un avantage de cette méthode par rapport à l'ancien repo d'Hippocritical : le support des paires HIP-3.

HIP-3, c'est le standard d'Hyperliquid qui permet aux DEX communautaires de lister leurs propres paires perpétuelles. Aujourd'hui, il y a plusieurs DEX actifs : XYZ (le principal), Paradigm (PARA), et d'autres comme VNTL ou FLX.

Ces paires apparaissent avec un préfixe dans Freqtrade :

  • XYZ-AMD/USDC:USDC — une paire sur le DEX XYZ

  • PARA-BTCD/USDC:USDC — une paire sur le DEX Paradigm

Pour que le téléchargement inclue ces paires, il faut l'activer explicitement dans la config :

{
    "exchange": {
        "name": "hyperliquid",
        "hip3_dexes": ["xyz", "para"]
    }
}

Sans cette ligne, tu ne télécharges que les paires du DEX officiel Hyperliquid et tu passes à cÎté d'une partie du marché. Toutes les données HIP-3 sont incluses dans le téléchargement quotidien et disponibles dans le fork.


Comment récupérer les données : 3 options

image

Selon ton niveau de confort technique et tes besoins, tu as trois options.

Option 1 : git pull mensuel (le plus simple)

Si tu ne veux pas t'embĂȘter avec un crontab et que tu n'as pas besoin de donnĂ©es fraĂźches au jour le jour, c'est la solution la plus simple. Les donnĂ©es Hyperliquid sont mises Ă  jour sur le repo GitHub environ une fois par mois.

# Cloner le fork (premiĂšre fois)
git clone https://github.com/titouannwtt/freqtrade-fork.git

# Ensuite, pour mettre Ă  jour :
cd freqtrade-fork
git pull

Les données sont dans user_data/data/hyperliquid/futures/. Tu les copies ou tu crées un symlink vers ton dossier de données Freqtrade :

# Symlink vers ton installation Freqtrade
ln -s /chemin/vers/freqtrade-fork/user_data/data/hyperliquid /chemin/vers/ton/freqtrade/user_data/data/hyperliquid

L'avantage : zéro maintenance, zéro configuration API. L'inconvénient : les données ont potentiellement un retard d'un mois par rapport au live.

Option 2 : ton propre crontab (recommandé)

Si tu veux des données toujours à jour, la meilleure approche est de mettre en place un crontab qui télécharge les données tous les jours.

Voici les étapes :

1. RécupÚre la config de téléchargement et la liste de paires depuis le fork :

# Si tu n'as pas encore le fork :
git clone https://github.com/titouannwtt/freqtrade-fork.git
cd freqtrade-fork

# Les fichiers sont dans backtest_configs/
ls backtest_configs/hyperliquid_download_data.json
ls backtest_configs/hyperliquid_pairs.json

2. Teste la commande manuellement d'abord :

freqtrade download-data \
  -c backtest_configs/hyperliquid_download_data.json \
  -d user_data/data/hyperliquid \
  --pairs-file backtest_configs/hyperliquid_pairs.json \
  -t 5m 15m 30m 1h 2h 4h 1d 1w \
  --days 2 \
  --data-format-ohlcv feather \
  --no-parallel-download

3. Si ça fonctionne, ajoute-le à ton crontab :

crontab -e

# Ajoute cette ligne (adapte le chemin vers ton installation) :
0 4 * * * cd /chemin/vers/freqtrade && \
  .venv/bin/freqtrade download-data \
  -c backtest_configs/hyperliquid_download_data.json \
  -d user_data/data/hyperliquid \
  --pairs-file backtest_configs/hyperliquid_pairs.json \
  -t 5m 15m 30m 1h 2h 4h 1d 1w \
  --days 2 \
  --data-format-ohlcv feather \
  --no-parallel-download \
  >> /tmp/hl_download_data.log 2>&1

Le --days 2 fait que chaque exĂ©cution est lĂ©gĂšre — on ne tĂ©lĂ©charge que 2 jours de donnĂ©es. C'est rapide et ça met trĂšs peu de pression sur l'API. Le --no-parallel-download assure que les requĂȘtes sont espacĂ©es pour ne pas saturer le rate limit.

L'avantage : données fraßches chaque jour, historique qui s'accumule automatiquement. L'inconvénient : nécessite un serveur qui tourne (un VPS par exemple).

Option 3 : combiner les deux

C'est l'approche recommandée si tu débutes : commence par un git pull du fork pour avoir immédiatement un historique profond, puis mets en place ton crontab pour rester à jour au quotidien. Le meilleur des deux mondes.

image


Exemple concret : configs de backtest Hyperliquid

image

Dans le fork, tu trouveras plusieurs configs d'exemple prĂȘtes Ă  l'emploi pour Hyperliquid dans le dossier backtest_configs/ :

Et pour le live, un template de configuration d'accĂšs Hyperliquid :

Ces configs sont celles utilisĂ©es au quotidien dans le fork. Tu peux les copier et les adapter Ă  tes besoins. EntraĂźne toujours sur l'exchange cible. Un backtest fait sur Binance ne vaudra rien sur Hyperliquid — les frais, le slippage et la structure du carnet d'ordres sont diffĂ©rents.


Pourquoi tout ça plutÎt que la méthode "normale" ?

image

Tu pourrais te dire : "pourquoi ne pas juste lancer un gros freqtrade download-data --days 365 et basta ?". Parce que ça ne marche pas sur Hyperliquid, pour trois raisons :

  • La limite de 5000 bougies : en 5m, tu ne peux pas rĂ©cupĂ©rer plus de 17 jours d'historique en une seule passe, peu importe le --days que tu mets. L'API te donnera au mieux 5000 bougies.

  • Le rate limit : 300+ paires × 8 timeframes × requĂȘtes paginĂ©es = des milliers de requĂȘtes. MĂȘme avec un rate limit de 1200 req/min, ça prend du temps et ça risque de perturber tes bots live.

  • Pas de reprise sur erreur propre : si le download plante Ă  mi-chemin (timeout, rate limit), tu dois tout recommencer. Avec des petits downloads quotidiens de 2 jours, chaque exĂ©cution est rapide et fiable.

💡 La philosophie derriĂšre cette approche : petites actions rĂ©guliĂšres > une grosse action ponctuelle. C'est un peu comme du DCA, mais pour la donnĂ©e.


Récap et checklist

image

Voici le résumé de ce qu'on a couvert :

  • Le problĂšme : Hyperliquid limite le tĂ©lĂ©chargement Ă  5000 bougies par timeframe. En 5m, c'est seulement 17 jours.

  • L'ancienne solution : le repo d'Hippocritical, qui n'est plus maintenu.

  • La solution : un crontab quotidien qui accumule les donnĂ©es petit Ă  petit, avec --days 2 et --no-parallel-download pour ne pas stresser l'API.

  • ftcache : le daemon qui protĂšge les bots live en classant le tĂ©lĂ©chargement en prioritĂ© LOW — si le rate limit est tendu, c'est le download qui attend, pas les ordres.

  • HIP-3 : le support des paires des DEX communautaires (XYZ, Paradigm), activĂ© par la config hip3_dexes.

  • Les donnĂ©es sont dans le fork : 370 paires, 8 timeframes, profondeur allant de 2 mois (5m) Ă  7 ans (1w). Mises Ă  jour mensuellement sur GitHub.

Pour commencer rapidement :

  1. Clone le fork pour récupérer immédiatement les données historiques

  2. Mets en place ton crontab pour rester à jour (ou fais un git pull mensuel si tu préfÚres la simplicité)

  3. Utilise les configs d'exemple pour lancer tes backtests

Si tu utilises nos forks Freqtrade et FreqUI, tu bénéficies aussi de ftcache intégré nativement pour le scaling multi-bots en live.

⚠ Rappel obligatoire : un backtest ne vaut rien, ce qui vaut quelque chose c'est le live ! Les performances passĂ©es ne prĂ©jugent pas des performances futures. Ces outils te donnent les moyens de tester sĂ©rieusement — pas de garantir des gains.


💡 Si tu veux essayer Hyperliquid, tu peux passer par ce lien d'affiliation — ça te donne une rĂ©duction sur les frais de trading.


⚠ Disclaimer : cet article est un partage d'expĂ©rience et ne constitue en aucun cas un conseil en investissement. Le trading algorithmique comporte des risques de perte en capital. Fais toujours tes propres recherches avant de trader.

Vous aimez cette publication ?

Achetez un café à Freqtrade France

8 Commentaires

Plus de Freqtrade France