Liquidité collective
1) Pourquoi est-ce nécessaire
Liquidité instantanée dans les nouveaux clusters. Démarrez dans la région/niche - « remettez » le pool commun.
Meilleure conformité et prix. Le marché profond → moins « spread », au-dessus de l'EPI (amélioration du prix/de la sélection efficace).
Choc de l'offre et de la demande. L'écoulement de la charge entre les nœuds réduit les pannes et les files d'attente.
L'économie. Au-dessus de fill rate et ARPU avec une augmentation modérée des coûts ; possibilité de cross-sell.
2) Modèles de liquidité collective
3) Composants architecturaux
Orderbook/catalogue : application abstraction/offer, statut et versions, SLAs et attributs de compatibilité.
SOR (Smart Order Routing) : règles de sélection du pool/fournisseur, en tenant compte des prix/qualité/juridiction/latence.
Cohérence : CDC et journaux d'événements, dedup par 'event _ id', compensant les transactions.
Attribution et facturation : qui est le « propriétaire » de la transaction/commission, fenêtres de réclamation, reconnaissance.
Qualité et réputation : notations/SLA partenaire, pénalités, badji.
Vie privée et localisation : masque PD, géo-pinning, règles d'exportation des événements.
mermaid flowchart LR
U [Demand] --> GW [Routing Gateway]
P1 [Pool A] --- GW
P2 [Pool B] --- GW
P3 [Partner C] --- GW
GW --> SB[Settlement/Billing]
GW --> OBS[Observability/SLO]
4) Contrats de données (minimum de champs)
yaml offer. v1:
id: uuid kind: product slot capacity price: {amount: decimal, currency: ISO4217}
quality: {rating: 0..5, sla_ttm_ms: int}
geo: {region: "EU", city: "Tallinn"}
vendor: {id: "partner-123", tier: "gold"}
terms: {ttl_s: 60, cancellation: "window:15m"}
version: 7 request. v1:
id: uuid constraints: {geo, time, price_ceiling, compliance}
qos: {max_ttm_ms: 500, min_rating: 4. 0}
trace_id: uuid consent: {...}
5) DORS : règles et pseudo-code
Critères de classement :- `score = w_priceprice_improvement + w_slattm_slo + w_qquality + w_geodistance_penalty + w_riskvendor_risk_penalty`
python def route(request, pools):
candidates = []
for pool in pools:
if not compliant(request, pool):
continue quotes = pool. quote (request) # timebox, idempotent for q in quotes:
s = score(q, request)
candidates. append((s, pool, q))
ordered = sorted(candidates, key=lambda x: -x[0])
return best_feasible(ordered, fairness=request. fairness)
Fairness (équité) : rotation des fournisseurs, quotas sur la part du chiffre d'affaires, tie-break sur la réputation et les gains récents.
6) Métriques de liquidité
Taux de remplissage = demandes fermées/toutes les demandes (par segment/groupe).
Time-to-match (p50/p95) - temps avant sélection/exécution.
Depth est le volume disponible dans une gamme de prix/qualité donnée.
Spread/EPI - amélioration du prix effectif de référence vs.
Utilisation - téléchargement de l'offre (idle % ↓ - bon si sans échecs SLA).
Integrity est la proportion de conversions de remplacement/fols, divergence dans la reconnaissance (<ε).
Fairness est la variance de la distribution du chiffre d'affaires entre les fournisseurs à qualité égale.
- 'fill _ rate _ month ≥ 92 % 'dans un cluster avec ≥ N offers actifs.
- 'P95 _ time _ to _ match ≤ 3s 'en heures de pointe.
- `cancel_rate ≤ 1. 5 % 'avec SLA du fournisseur' on-time ≥ 98 % '.
7) Observabilité et base de preuves
Événements : 'request. sent`, `quote. received`, `match. made`, `settled`, `cancelled`, `refund`.
Traces : 'trace _ id' de bout en bout via DORS → pool → fournisseur.
Audit : signatures de webhooks, journal des versions d'orderbooks, « capture d'écran » des citations.
Reconnaissance : rapports bilatéraux, déduplication, écarts <ε, SLA de clôture des réclamations.
8) Vie privée, conformité, souveraineté
Geo-pinning : les catégories sensibles/PII ne sortent pas de la région autorisée.
Pseudonyme : pour l'échange interpartisan, seulement les pseudo-identifiants.
Retraite en tant que code : TTL des événements, droit de suppression, Legal Hold.
DPA/webhooks : signature, anti-replay, contrôle des schémas.
9) Modèle d'exploitation et calculs
Rôles : Opérateur de marché (vous), Pools/Partenaires (supply), Canaux/Vitrines (demand).
Commerce : RevShare/CPA/garanties minimales ; « clip » pour routage/amélioration des prix.
Crédits/amendes : pour rupture de SLA, faux offers, incohérence des rapports.
Settlement : périodicité T + N, retenues, chargebacks, rapports.
yaml partner_id: "pool-A"
sla:
fill_rate: ">= 90%"
on_time: ">= 98%"
quote_ttl_s: 2 limits:
rps: 200 region: ["EU","TR"]
commercials:
model: "revshare: 20% of net"
security:
webhook_signature: "Ed25519"
10) Modèles d'intégration
API pull-quote avec time box (idempotency-key).
Signé Webhooks pour 'match. made '/' settled '(retraits avec exponentielle).
Event bus pour CDC Orderbook et Analysis (versions des événements).
Batch-recon (quotidien SFTP/Blob + checksum).
Outbox/Inbox aux deux côtés + dedup.
Versioner les schémas/SDK, fenêtre de compatibilité.
11) Commande de surcharge et de balançoire
Anti-congestia : limiteurs, files d'attente, hiérarchisation des cas VIP/complexes, coefficients de surge.
Anti-arbitrage (toxique) : interdictions d'auto-exécution "à prix/qualité sous-estimées, suivi des demandes" ping-pong ".
Anti-frod : signatures device/comportementales, honey-tokens, qualification différée (cool-off).
Dégradation avec honneur : fallback sur le pool local, « best-effort » avec détérioration transparente.
12) Exemples de logique (sketches)
12. 1 Itinéraire avec juridiction et SLO
python def compliant(req, pool):
return (req. constraints. geo in pool. regions and pool. sla. quote_ttl_s <= 2 and pool. vendor_tier in {"gold","silver"})
12. 2 Politique d'équité (Idée de règlement)
rego package fairness deny["overexposed vendor"] {
usage. share[input. vendor] > 0. 45 input. vendor. tier == "silver"
}
12. 3 Échantillons de convergence Orderbook
sql
SELECT offer_id, MAX(version)-MIN(version) AS drift
FROM orderbook_events
WHERE ts >= now() - interval '5 minutes'
GROUP BY 1
HAVING MAX(version)-MIN(version) > 1; -- fragmentation signal
13) Métriques de maturité
Coverage : proportion de segments/régions où il y a ≥ X offers actifs.
Elasticité : à quelle vitesse le taux de remplissage se rétablit avec + la demande Δ.
EPI/Spread-improvement : le bénéfice de l'agrégation vs solo pool.
Fair-distribution : écart de la part du chiffre d'affaires par rapport à la qualité attendue.
Recon-health : fréquence/délai de fermeture des écarts.
Privacy-score : part des itinéraires sans sortir des frontières de la politique.
14) Anti-modèles
La fédération nue sans SOR et les règles de la qualité → la fragmentation, la suppression.
« Le marché du verre » : vous ouvrez tout à tout le monde - une vague de frod et une guerre des prix.
Il n'y a pas d'attribution et de reconnaissance → des différends éternels et des paiements gelés.
Synchronisation rigide entre les pools → latence/défaillance en cascade.
Les mêmes règles pour différents segments → la dégradation de l'expérience dans les niches premium/locales.
Ignorer la TTL des offers → un accord sur les conditions « perdues ».
La clé de cryptage unique sur l'ensemble du marché → ne peut pas être « effacée » ponctuellement.
15) Chèque de l'architecte
1. Un modèle (commun pool/fédération/hab.) et des limites de souveraineté ont été définis ?
2. Y a-t-il un contrat de données (schémas, versions, TTL, signatures) et une fenêtre de compatibilité ?
3. Mise en œuvre du DORS avec fairness et backops, liquidité SLO et dashboards ?
4. Facturation/attribution prescrite, fenêtres de réclamation, crédits/pénalités ?
5. Anti-congestia/anti-frod/anti-arbitrage et mode de dégradation intégrés ?
6. La reconnaissance et les artefacts de « preuve de transaction » ?
7. Privacy : pseudonyme, geo-pinning, retenthen, droit de suppression ?
8. Exercice : pic de stress de la demande/chute du pool/dissynchronisation de l'orderbook ?
9. FinOps : budget egress, coût de routage, EPI ciblé ?
10. Gouvernance : parts de seuil, certification des partenaires, audit.
Conclusion
La liquidité collective n'est pas de « connecter un autre partenaire », mais de concevoir le marché : contrats et événements uniques, règles transparentes de routage et d'équité, forte observabilité et calculs, intimité et compétences « en tant que code ». C'est ainsi que naît un bassin unique, profond et durable d'offre et de demande - avec une meilleure expérience pour les utilisateurs et une économie prévisible pour l'ensemble de l'écosystème.