Houroux's picture
Publish Render-ready Polymarket collector
e2ce547 verified
|
Raw
History Blame Contribute Delete
4.88 kB
metadata
title: Polymarket LP Collector
emoji: 📈
colorFrom: green
colorTo: blue
sdk: docker
app_port: 8080

Collecteur de données LP Polymarket

Ce projet enregistre en continu les données publiques de niveau 2 des marchés Polymarket qui distribuent des récompenses de liquidité. Il est conçu pour une petite VM Google Cloud e2-micro : mémoire limitée, fichiers rotatifs et aucune base de données résidente.

Il ne signe aucun ordre, ne contient aucune clé de portefeuille et ne peut pas trader. Son unique rôle est de créer un historique propre pour les futurs backtests et modèles d'apprentissage automatique.

Données collectées

  • carnets complets (book) ;
  • changements de niveaux (price_change) ;
  • meilleurs bid/ask ;
  • dernières transactions ;
  • changements de tick et résolutions ;
  • métadonnées, volumes et paramètres de récompenses LP ;
  • heure de réception locale en nanosecondes pour mesurer les délais.

Les fichiers terminés sont écrits sous la forme :

data/
  market_ws/YYYY/MM/DD/market_ws-....jsonl.gz
  discovery/YYYY/MM/DD/discovery-....jsonl.gz

Chaque ligne est un objet JSON autonome. Les fichiers .part sont récupérés et compressés automatiquement au prochain démarrage après une coupure brutale.

Exécution locale

python3 -m venv .venv
. .venv/bin/activate
pip install -e .
cp .env.example .env
DATA_DIR="$PWD/data" polymarket-collector

Tester uniquement l'accès aux API publiques avant de démarrer :

polymarket-collector --check

État du service :

curl http://127.0.0.1:8080/healthz
curl http://127.0.0.1:8080/metrics

Arrêter avec Ctrl+C. Le service finalise alors proprement les fichiers en cours.

Déploiement Google Cloud

Depuis un ordinateur ou Google Cloud Shell ayant gcloud authentifié :

./scripts/deploy_gcp.sh ID_DU_PROJET_GCP

Le script crée par défaut une VM e2-micro Ubuntu 24.04 dans us-east1-b, un disque standard de 30 Go, copie le projet, puis installe et démarre le service.

Commandes utiles après installation :

gcloud compute ssh polymarket-collector --zone us-east1-b
sudo systemctl status polymarket-collector
sudo journalctl -u polymarket-collector -f
curl http://127.0.0.1:8080/healthz

Sauvegarde vers Google Drive

Sur la VM :

sudo rclone config
sudoedit /etc/polymarket-collector.env

Définir ensuite, par exemple :

RCLONE_REMOTE=gdrive:polymarket-data
LOCAL_RETENTION_DAYS=7

Puis activer la sauvegarde :

sudo systemctl enable --now polymarket-backup.timer
sudo systemctl start polymarket-backup.service
sudo journalctl -u polymarket-backup.service -n 100

Les fichiers locaux âgés de plus de LOCAL_RETENTION_DAYS ne sont supprimés qu'après une copie rclone réussie. Mettre la valeur à 0 pour désactiver le nettoyage local.

Hébergement gratuit sans dépassement : Render + Hugging Face

L'architecture recommandée pour une collecte continue sans VM personnelle est :

  1. un Web Service public Render Free, sans moyen de paiement enregistré ;
  2. UptimeRobot Free sur /healthz, toutes les cinq minutes, pour maintenir une visite régulière et surveiller le service ;
  3. un dataset Hugging Face public pour les archives. Les fichiers locaux sont supprimés uniquement après la réussite du commit distant.

Le conteneur est prêt dans Dockerfile et le profil Render dans render.yaml. Créer un jeton Hugging Face avec droit d'écriture, puis publier le dépôt source :

python scripts/publish_hf_source.py

Créer ensuite un Web Service Render depuis l'URL Git publique affichée, choisir le plan Free, et fournir HF_TOKEN comme secret. Le profil utilise 40 marchés, une rotation à 256 Mio et un envoi groupé toutes les heures. Render dispose de 750 heures gratuites par mois et suspend le service au lieu de facturer lorsque le compte ne contient aucun moyen de paiement. Son disque est temporaire : les archives ne sont supprimées qu'après confirmation du commit Hugging Face.

Hugging Face Spaces n'est plus recommandé : les Spaces Docker sur cpu-basic exigent désormais un abonnement Hugging Face PRO.

Koyeb n'est plus recommandé : depuis son rapprochement avec Mistral, les nouveaux utilisateurs doivent fournir un moyen de paiement et souscrire un forfait payant.

Tests

python -m unittest discover -s tests -v

Les tests ne contactent pas Polymarket et ne nécessitent aucune clé.

Limites importantes

  • Avec 1 Go de RAM et 30 Go de disque, commencer avec 75 marchés maximum.
  • Une VM gratuite aux États-Unis convient à la collecte, pas au futur bot de trading sensible à la latence.
  • Le service conserve les messages bruts : les transformations en Parquet et l'entraînement se feront sur l'ordinateur équipé de la RTX 3060.