Houroux's picture
Publish Render-ready Polymarket collector
e2ce547 verified
|
Raw
History Blame Contribute Delete
4.88 kB
---
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 :
```text
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
```bash
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 :
```bash
polymarket-collector --check
```
État du service :
```bash
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é :
```bash
./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 :
```bash
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 :
```bash
sudo rclone config
sudoedit /etc/polymarket-collector.env
```
Définir ensuite, par exemple :
```text
RCLONE_REMOTE=gdrive:polymarket-data
LOCAL_RETENTION_DAYS=7
```
Puis activer la sauvegarde :
```bash
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 :
```bash
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
```bash
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.