Créer des bots sur counsel : automatisez votre stratégie de pari
Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.
Les bots sont des citoyens de premier rang sur counsel. Un bot est un client XRPL ordinaire : il lit les marchés en direct, récupère un Payment de pari non signé, le signe avec sa propre clé, puis le soumet au ledger. counsel ne détient jamais de clé. Chaque pari porte le SourceTag de counsel, de sorte que le volume on-chain d’un bot compte dans l’attribution au classement de la même manière qu’un pari manuel. Comme les marchés counsel sont parimutuels, il n’y a pas de carnet d’ordres : les bots apportent de la valeur en corrigeant les erreurs de prix, en équilibrant les pools ou en arbitrant entre plateformes. Chacune de ces actions est un Payment natif taggé, qui génère du volume on-chain direct.
Ce qu’un bot peut faire
Value-betting : estimez la probabilité réelle de chaque issue et misez lorsque l’implied_prob du marché s’écarte de votre modèle d’une marge significative. Cela pousse la cote vers le prix juste, au bénéfice de tous les participants.
Équilibrage de pool : les cotes parimutuelles dérivent continuellement jusqu’au bet_cutoff. Un bot peut repérer un pool déséquilibré proche de la clôture et miser sur le côté sous-pondéré, capturant de meilleures cotes tout en corrigeant le déséquilibre.
Arbitrage entre plateformes : prenez une position sur counsel et couvrez-la sur le même événement sur une autre plateforme, verrouillant un écart lorsque les probabilités implicites divergent.
Démarrage rapide : installation et configuration
Installez le SDK depuis le repo et configurez l’URL de base :
import { Counsel } from "./counsel";const counsel = new Counsel({ baseUrl: "https://api.counsel.markets" });
Définissez COUNSEL_URL sur https://api.counsel.markets et référencez-le avec process.env.COUNSEL_URL pour garder l’URL de base hors de votre code source.
Lire les marchés en direct
Récupérez tous les marchés publics et inspectez l’état actuel de leur pool ainsi que les cotes indicatives :
Filtrez sur les marchés qui acceptent actuellement des paris avant toute autre chose :
const open = (markets as any[]).filter( (m) => m.status === "open" && m.phase === "open");
Récupérer une intention de pari
Avant de vous engager, récupérez une transaction non signée pour le pari précis que vous souhaitez placer. Cela renvoie également l’impact projeté de votre mise sur la cote :
GET /api/v1/markets/:id/bet-intent ?account=WALLET_ADDRESS &outcome=OUTCOME_INDEX &amount=AMOUNT_XRP
Le tx renvoyé est un objet XRPL Payment entièrement formé. Il ne reste plus qu’à compléter automatiquement les champs sequence/fee, à signer et à soumettre.
Signer et soumettre
placeBet gère tout le cycle de vie : il appelle betIntent en interne, signe avec la seed fournie via xrpl.js, soumet, puis attend la validation par le ledger. Il renvoie le hash de la transaction confirmée.
Utilisez uniquement des seeds de testnet. Ne committez jamais de seeds dans le contrôle de version. Chargez BOT_SEED exclusivement depuis des variables d’environnement ou un gestionnaire de secrets.
En interne, placeBet se connecte au nœud WebSocket XRPL spécifié dans CounselOptions.wss (par défaut wss://s.altnet.rippletest.net:51233 pour le testnet), complète automatiquement la transaction, la signe avec Wallet.fromSeed(seed), la soumet via submitAndWait et vérifie tesSUCCESS avant de renvoyer. La connexion WebSocket est fermée après chaque appel.
Exemple complet de value-betting
Le bot suivant récupère tous les marchés ouverts, fait passer chaque issue dans un modèle de probabilité, puis mise lorsqu’il trouve un avantage suffisant. Il vérifie aussi les cotes projetées après la mise avant de s’engager, afin d’éviter de parier alors que la cote a déjà dépassé le prix juste :
import { Counsel } from "./counsel";const counsel = new Counsel({ baseUrl: process.env.COUNSEL_URL! });const SEED = process.env.BOT_SEED!; // testnet only// Your model: the probability you believe each outcome has.function myModel(question: string): number[] { // ...return [pYes, pNo]; here a naive 50/50 return [0.5, 0.5];}const { markets } = await counsel.markets();for (const m of markets as any[]) { if (m.status !== "open" || m.phase !== "open") continue; const fair = myModel(m.question); for (const o of m.outcomes) { // Bet when the market underprices an outcome vs your model, with edge to spare. if (fair[o.index] - o.implied_prob > 0.08) { const intent = await counsel.betIntent(m.id, walletAddress, o.index, 5); // Check the projected odds AFTER your own stake before committing. if (intent.projected_implied_odds_after.implied_prob < fair[o.index]) { await counsel.placeBet(SEED, m.id, o.index, 5); } } }}
La vérification interne sur projected_implied_odds_after.implied_prob est importante : dans un petit pool, votre propre mise de 5 XRP peut déplacer la cote suffisamment pour éliminer l’avantage que vous aviez détecté à partir de l’implied_prob périmé figurant dans la liste des marchés.
Anti-slippage
Les cotes parimutuelles ne sont pas fixes : chaque pari modifie le pool, et donc chaque payout ultérieur. Lorsque vous lisez l’implied_prob depuis GET /markets, ce chiffre reflète déjà tous les paris soumis avant votre lecture. Au moment où vous récupérez l’intention de pari, d’autres paris peuvent être arrivés.Utilisez toujours projected_implied_odds_after comme critère de décision, et non les cotes de la liste des marchés :
const intent = await counsel.betIntent(marketId, walletAddress, outcomeIndex, amountXrp);if (intent.projected_implied_odds_after.implied_prob < myFairProbability) { // Market still offers value after your stake is factored in, proceed. await counsel.placeBet(SEED, marketId, outcomeIndex, amountXrp);} else { // Your stake alone moves the line past fair value, skip.}
Pour des mises importantes par rapport à la taille du pool, envisagez de découper un seul pari en plusieurs paris séquentiels plus petits et de revérifier l’intention à chaque fois.
Limites de débit
L’API publique ne nécessite aucune authentification. Aucune limite de débit n’est imposée, mais l’API est une ressource partagée. Interrogez GET /markets à une cadence raisonnable : 5 à 10 secondes convient à la plupart des stratégies. Une interrogation à haute fréquence n’apporte aucun avantage sur les marchés parimutuels : les cotes changent quand les paris arrivent, pas selon un rythme régulier, et les payouts finaux sont déterminés à la clôture, quel que soit le moment où vous avez placé votre pari.
Référence des méthodes du SDK
Méthode
Endpoint
markets()
GET /api/v1/markets
market(id)
GET /api/v1/markets/:id
betIntent(id, account, outcome, amount)
GET /api/v1/markets/:id/bet-intent
positions(address)
GET /api/v1/accounts/:address/positions
leaderboard()
GET /api/v1/leaderboard
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"counsel","colors":{"primary":"#000000","light":"#FFFFFF","dark":"#000000"},"logo":{"light":"https://mintcdn.com/counsel/ZaSVrzORvIQhNEVy/logo/light.svg?fit=max\u0026auto=format\u0026n=ZaSVrzORvIQhNEVy\u0026q=85\u0026s=4c8138fe767b94026af2975d3674c40a","dark":"https://mintcdn.com/counsel/ZaSVrzORvIQhNEVy/logo/dark.svg?fit=max\u0026auto=format\u0026n=ZaSVrzORvIQhNEVy\u0026q=85\u0026s=44bc67831ba30649da954c724267e9eb"},"favicon":"https://mintcdn.com/counsel/ZaSVrzORvIQhNEVy/favicon.svg?fit=max\u0026auto=format\u0026n=ZaSVrzORvIQhNEVy\u0026q=85\u0026s=fe2e39c5b9306d42738f00245faa51f1","navbar":{"links":[{"href":"https://docs.counsel.markets/changelog","label":"Changelog"},{"icon":"discord","href":"https://discord.gg/gjhUxUgv9r","label":"Get Help"}],"primary":{"type":"button","label":"Open App","href":"https://app.counsel.markets"}},"search":{"prompt":"Search the counsel docs"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":"introduction"},{"language":"fr","href":"fr/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"counsel","hasAudioNarration":false,"actualSubdomain":"counsel","customDomains":["docs.counsel.markets"],"gitSource":{"type":"github","owner":"gamween","repo":"counsel-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae95ac9dbcba01b9ab8097a:success","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"en","tag":"Documentation","count":11},{"language":"fr","tag":"Documentation","count":11},{"language":"en","tag":"API Reference","count":8},{"language":"fr","tag":"Référence API","count":8},{"language":"default","tag":"API Reference","count":7},{"language":"en","tag":"Core Concepts","count":4},{"language":"en","tag":"Get Started","count":4},{"language":"fr","tag":"Concepts clés","count":4},{"language":"fr","tag":"Pour commencer","count":4},{"language":"en","tag":"Accounts","count":3},{"language":"en","tag":"Markets","count":3},{"language":"fr","tag":"Comptes","count":3},{"language":"fr","tag":"Marchés","count":3},{"language":"default","tag":"Accounts","count":3},{"language":"default","tag":"Markets","count":3},{"language":"en","tag":"Guides","count":2},{"language":"en","tag":"SDK","count":2},{"language":"en","tag":"counsel-js","count":2},{"language":"fr","tag":"Guides","count":2},{"language":"fr","tag":"SDK","count":2},{"language":"fr","tag":"counsel-js","count":2},{"language":"en","tag":"Leaderboard","count":1},{"language":"fr","tag":"Classement","count":1},{"language":"default","tag":"Leaderboard","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"fr/guides/building-bots","slug":"/fr/guides/building-bots","pageMetadata":{"title":"Créer des bots sur counsel : automatisez votre stratégie de pari","sidebarTitle":"Créer des bots","description":"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.","href":"/fr/guides/building-bots"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Les bots sont des citoyens de premier rang sur counsel. Un bot est un client XRPL ordinaire : il lit les marchés en direct, récupère un `,_jsx(_components.code,{children:`Payment`}),` de pari non signé, le signe avec sa propre clé, puis le soumet au ledger. counsel ne détient jamais de clé. Chaque pari porte le `,_jsx(_components.code,{children:`SourceTag`}),` de counsel, de sorte que le volume on-chain d’un bot compte dans l’attribution au classement de la même manière qu’un pari manuel. Comme les marchés counsel sont parimutuels, il n’y a pas de carnet d’ordres : les bots apportent de la valeur en corrigeant les erreurs de prix, en équilibrant les pools ou en arbitrant entre plateformes. Chacune de ces actions est un Payment natif taggé, qui génère du volume on-chain direct.`]}),`\n`,_jsx(Heading,{level:`2`,id:`ce-qu’un-bot-peut-faire`,children:`Ce qu’un bot peut faire`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Value-betting`}),` : estimez la probabilité réelle de chaque issue et misez lorsque l’`,_jsx(_components.code,{children:`implied_prob`}),` du marché s’écarte de votre modèle d’une marge significative. Cela pousse la cote vers le prix juste, au bénéfice de tous les participants.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Équilibrage de pool`}),` : les cotes parimutuelles dérivent continuellement jusqu’au `,_jsx(_components.code,{children:`bet_cutoff`}),`. Un bot peut repérer un pool déséquilibré proche de la clôture et miser sur le côté sous-pondéré, capturant de meilleures cotes tout en corrigeant le déséquilibre.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Arbitrage entre plateformes`}),` : prenez une position sur counsel et couvrez-la sur le même événement sur une autre plateforme, verrouillant un écart lorsque les probabilités implicites divergent.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`démarrage-rapide--installation-et-configuration`,children:`Démarrage rapide : installation et configuration`}),`\n`,_jsx(_components.p,{children:`Installez le SDK depuis le repo et configurez l’URL de base :`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"./counsel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` counsel`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`baseUrl:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.counsel.markets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Définissez `,_jsx(_components.code,{children:`COUNSEL_URL`}),` sur `,_jsx(_components.code,{children:`https://api.counsel.markets`}),` et référencez-le avec `,_jsx(_components.code,{children:`process.env.COUNSEL_URL`}),` pour garder l’URL de base hors de votre code source.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`lire-les-marchés-en-direct`,children:`Lire les marchés en direct`}),`\n`,_jsx(_components.p,{children:`Récupérez tous les marchés publics et inspectez l’état actuel de leur pool ainsi que les cotes indicatives :`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`markets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`markets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Each market has: id, question, phase, status, outcomes[]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Each outcome: index, label, implied_prob, payout_per_unit, pool_xrp`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Filtrez sur les marchés qui acceptent actuellement des paris avant toute autre chose :`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` open`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`markets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` as`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` any`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[]).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`filter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"open\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`phase`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"open\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`récupérer-une-intention-de-pari`,children:`Récupérer une intention de pari`}),`\n`,_jsx(_components.p,{children:`Avant de vous engager, récupérez une transaction non signée pour le pari précis que vous souhaitez placer. Cela renvoie également l’impact projeté de votre mise sur la cote :`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` intent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`betIntent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`marketId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`walletAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`outcomeIndex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`amountXrp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// intent.tx = unsigned XRPL Payment ready to sign`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// intent.projected_implied_odds_after = { implied_prob, payout_per_unit }`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`betIntent`}),` correspond à :`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /api/v1/markets/:id/bet-intent`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ?account=WALLET_ADDRESS`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \u0026outcome=OUTCOME_INDEX`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \u0026amount=AMOUNT_XRP`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Le `,_jsx(_components.code,{children:`tx`}),` renvoyé est un objet XRPL `,_jsx(_components.code,{children:`Payment`}),` entièrement formé. Il ne reste plus qu’à compléter automatiquement les champs sequence/fee, à signer et à soumettre.`]}),`\n`,_jsx(Heading,{level:`2`,id:`signer-et-soumettre`,children:`Signer et soumettre`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`placeBet`}),` gère tout le cycle de vie : il appelle `,_jsx(_components.code,{children:`betIntent`}),` en interne, signe avec la seed fournie via `,_jsx(_components.code,{children:`xrpl.js`}),`, soumet, puis attend la validation par le ledger. Il renvoie le hash de la transaction confirmée.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` hash`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`placeBet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`BOT_SEED`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`marketId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`outcomeIndex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`amountXrp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tx:\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`hash`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Utilisez uniquement des seeds de testnet. Ne committez jamais de seeds dans le contrôle de version. Chargez `,_jsx(_components.code,{children:`BOT_SEED`}),` exclusivement depuis des variables d’environnement ou un gestionnaire de secrets.`]})}),`\n`,_jsxs(_components.p,{children:[`En interne, `,_jsx(_components.code,{children:`placeBet`}),` se connecte au nœud WebSocket XRPL spécifié dans `,_jsx(_components.code,{children:`CounselOptions.wss`}),` (par défaut `,_jsx(_components.code,{children:`wss://s.altnet.rippletest.net:51233`}),` pour le testnet), complète automatiquement la transaction, la signe avec `,_jsx(_components.code,{children:`Wallet.fromSeed(seed)`}),`, la soumet via `,_jsx(_components.code,{children:`submitAndWait`}),` et vérifie `,_jsx(_components.code,{children:`tesSUCCESS`}),` avant de renvoyer. La connexion WebSocket est fermée après chaque appel.`]}),`\n`,_jsx(Heading,{level:`2`,id:`exemple-complet-de-value-betting`,children:`Exemple complet de value-betting`}),`\n`,_jsx(_components.p,{children:`Le bot suivant récupère tous les marchés ouverts, fait passer chaque issue dans un modèle de probabilité, puis mise lorsqu’il trouve un avantage suffisant. Il vérifie aussi les cotes projetées après la mise avant de s’engager, afin d’éviter de parier alors que la cote a déjà dépassé le prix juste :`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`26`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`26`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"./counsel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` counsel`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`baseUrl:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`COUNSEL_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` SEED`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`BOT_SEED`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// testnet only`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Your model: the probability you believe each outcome has.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` myModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`question`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` number`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[] {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // ...return [pYes, pNo]; here a naive 50/50`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`markets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`markets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` m`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` of`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` markets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` as`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` any`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[]) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"open\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`phase`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"open\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`continue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` fair`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` myModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`question`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` o`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` of`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`outcomes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Bet when the market underprices an outcome vs your model, with edge to spare.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fair`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`o`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` o`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`implied_prob`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0.08`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` intent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`betIntent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`walletAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`o`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Check the projected odds AFTER your own stake before committing.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`intent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`projected_implied_odds_after`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`implied_prob`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fair`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`o`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`placeBet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`SEED`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`m`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`o`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`La vérification interne sur `,_jsx(_components.code,{children:`projected_implied_odds_after.implied_prob`}),` est importante : dans un petit pool, votre propre mise de 5 XRP peut déplacer la cote suffisamment pour éliminer l’avantage que vous aviez détecté à partir de l’`,_jsx(_components.code,{children:`implied_prob`}),` périmé figurant dans la liste des marchés.`]}),`\n`,_jsx(Heading,{level:`2`,id:`anti-slippage`,children:`Anti-slippage`}),`\n`,_jsxs(_components.p,{children:[`Les cotes parimutuelles ne sont pas fixes : chaque pari modifie le pool, et donc chaque payout ultérieur. Lorsque vous lisez l’`,_jsx(_components.code,{children:`implied_prob`}),` depuis `,_jsx(_components.code,{children:`GET /markets`}),`, ce chiffre reflète déjà tous les paris soumis avant votre lecture. Au moment où vous récupérez l’intention de pari, d’autres paris peuvent être arrivés.`]}),`\n`,_jsxs(_components.p,{children:[`Utilisez toujours `,_jsx(_components.code,{children:`projected_implied_odds_after`}),` comme critère de décision, et non les cotes de la liste des marchés :`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` intent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`betIntent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`marketId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`walletAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`outcomeIndex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`amountXrp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`intent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`projected_implied_odds_after`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`implied_prob`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` myFairProbability`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Market still offers value after your stake is factored in, proceed.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` counsel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`placeBet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`SEED`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`marketId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`outcomeIndex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`amountXrp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Your stake alone moves the line past fair value, skip.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Pour des mises importantes par rapport à la taille du pool, envisagez de découper un seul pari en plusieurs paris séquentiels plus petits et de revérifier l’intention à chaque fois.`}),`\n`,_jsx(Heading,{level:`2`,id:`limites-de-débit`,children:`Limites de débit`}),`\n`,_jsxs(_components.p,{children:[`L’API publique ne nécessite aucune authentification. Aucune limite de débit n’est imposée, mais l’API est une ressource partagée. Interrogez `,_jsx(_components.code,{children:`GET /markets`}),` à une cadence raisonnable : `,_jsx(_components.strong,{children:`5 à 10 secondes`}),` convient à la plupart des stratégies. Une interrogation à haute fréquence n’apporte aucun avantage sur les marchés parimutuels : les cotes changent quand les paris arrivent, pas selon un rythme régulier, et les payouts finaux sont déterminés à la clôture, quel que soit le moment où vous avez placé votre pari.`]}),`\n`,_jsx(Heading,{level:`2`,id:`référence-des-méthodes-du-sdk`,children:`Référence des méthodes du SDK`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Méthode`}),_jsx(_components.th,{children:`Endpoint`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`markets()`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/markets`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`market(id)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/markets/:id`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`betIntent(id, account, outcome, amount)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/markets/:id/bet-intent`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`positions(address)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/accounts/:address/positions`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`leaderboard()`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/leaderboard`})})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Créer des bots sur counsel : automatisez votre stratégie de pari","sidebarTitle":"Créer des bots","description":"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.","href":"/fr/guides/building-bots"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Ce qu’un bot peut faire","slug":"ce-qu’un-bot-peut-faire","depth":2,"children":[]},{"title":"Démarrage rapide : installation et configuration","slug":"démarrage-rapide--installation-et-configuration","depth":2,"children":[]},{"title":"Lire les marchés en direct","slug":"lire-les-marchés-en-direct","depth":2,"children":[]},{"title":"Récupérer une intention de pari","slug":"récupérer-une-intention-de-pari","depth":2,"children":[]},{"title":"Signer et soumettre","slug":"signer-et-soumettre","depth":2,"children":[]},{"title":"Exemple complet de value-betting","slug":"exemple-complet-de-value-betting","depth":2,"children":[]},{"title":"Anti-slippage","slug":"anti-slippage","depth":2,"children":[]},{"title":"Limites de débit","slug":"limites-de-débit","depth":2,"children":[]},{"title":"Référence des méthodes du SDK","slug":"référence-des-méthodes-du-sdk","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"counsel","siteName":"counsel","title":"Créer des bots sur counsel : automatisez votre stratégie de pari - counsel","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guides/building-bots","matchLevel":1},"fr":{"href":"/fr/guides/building-bots","matchLevel":0}}},"lastModified":"2026-06-25T04:38:12.185Z","originalFileLocation":"fr/guides/building-bots.mdx","locale":"fr"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"counsel\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Créer des bots sur counsel : automatisez votre stratégie de pari - counsel\">\u003cmeta data-mint-head property=\"og:description\" content=\"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"counsel\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.counsel.markets/fr/guides/building-bots\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://counsel.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cr%C3%A9er+des+bots+sur+counsel+%3A+automatisez+votre+strat%C3%A9gie+de+pari\u0026amp;description=Les+bots+sont+des+citoyens+de+premier+rang+sur+counsel.+R%C3%A9cup%C3%A9rez+des+intentions+de+pari+non+sign%C3%A9es%2C+signez-les+avec+votre+propre+cl%C3%A9%2C+puis+soumettez-les+%3A+le+\u0026amp;theme=f49bf70998daa09a87952394\u0026amp;signature=d77e2fff590020585e9a94a66429f7f282fb9e39312e6ee5692c431c8b250e44\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Créer des bots sur counsel : automatisez votre stratégie de pari - counsel\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://counsel.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cr%C3%A9er+des+bots+sur+counsel+%3A+automatisez+votre+strat%C3%A9gie+de+pari\u0026amp;description=Les+bots+sont+des+citoyens+de+premier+rang+sur+counsel.+R%C3%A9cup%C3%A9rez+des+intentions+de+pari+non+sign%C3%A9es%2C+signez-les+avec+votre+propre+cl%C3%A9%2C+puis+soumettez-les+%3A+le+\u0026amp;theme=f49bf70998daa09a87952394\u0026amp;signature=d77e2fff590020585e9a94a66429f7f282fb9e39312e6ee5692c431c8b250e44\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/counsel/LujfivnFOpsYuddN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"counsel\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.counsel.markets/fr/guides/building-bots\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/fr/guides/building-bots.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.counsel.markets/fr/guides/building-bots\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.counsel.markets/guides/building-bots\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.counsel.markets/guides/building-bots\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.counsel.markets/#organization\",\"name\":\"counsel\",\"url\":\"https://docs.counsel.markets\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/counsel/ZaSVrzORvIQhNEVy/logo/light.svg?fit=max\u0026auto=format\u0026n=ZaSVrzORvIQhNEVy\u0026q=85\u0026s=4c8138fe767b94026af2975d3674c40a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.counsel.markets#website\",\"name\":\"counsel\",\"url\":\"https://docs.counsel.markets\",\"publisher\":{\"@id\":\"https://docs.counsel.markets/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.counsel.markets/fr/guides/building-bots#webpage\",\"url\":\"https://docs.counsel.markets/fr/guides/building-bots\",\"name\":\"Créer des bots sur counsel : automatisez votre stratégie de pari\",\"description\":\"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\",\"dateModified\":\"2026-06-25T04:38:12.185Z\",\"isPartOf\":{\"@id\":\"https://docs.counsel.markets#website\"},\"breadcrumb\":{\"@id\":\"https://docs.counsel.markets/fr/guides/building-bots#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.counsel.markets/fr/guides/building-bots#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.counsel.markets/fr/guides/copy-trading\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Créer des bots sur counsel : automatisez votre stratégie de pari\",\"item\":\"https://docs.counsel.markets/fr/guides/building-bots\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.counsel.markets/fr/guides/building-bots#article\",\"headline\":\"Créer des bots sur counsel : automatisez votre stratégie de pari\",\"name\":\"Créer des bots sur counsel : automatisez votre stratégie de pari\",\"description\":\"Les bots sont des citoyens de premier rang sur counsel. Récupérez des intentions de pari non signées, signez-les avec votre propre clé, puis soumettez-les : le SDK gère tout le cycle de vie XRPL en quelques lignes.\",\"url\":\"https://docs.counsel.markets/fr/guides/building-bots\",\"mainEntityOfPage\":{\"@id\":\"https://docs.counsel.markets/fr/guides/building-bots#webpage\"},\"dateModified\":\"2026-06-25T04:38:12.185Z\",\"publisher\":{\"@id\":\"https://docs.counsel.markets/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.counsel.markets#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"counsel\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"counsel\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/fr/guides/building-bots.md","siteName":"counsel","nav":{"global":null,"languages":[{"language":"en","default":true,"pages":[{"title":"en","href":"/guides/building-bots"}]},{"language":"fr","tabs":[{"tab":"Documentation","groups":[{"group":"Pour commencer","pages":[{"title":"Introduction à counsel : les marchés de prédiction sur le XRP Ledger","sidebarTitle":"Introduction","href":"/fr/introduction"},{"title":"Démarrage rapide développeur","href":"/fr/quickstart"},{"title":"Fonctionnement de counsel : paris, résolution par oracle, payouts multisig","sidebarTitle":"Fonctionnement","href":"/fr/how-it-works"},{"title":"Placer un pari","href":"/fr/placing-a-bet"}]},{"group":"Concepts clés","pages":[{"title":"Pools parimutuels : comment se forment les cotes et les gains sur counsel","sidebarTitle":"Parimutuel","href":"/fr/concepts/parimutuel"},{"title":"Types de marchés, phases du cycle de vie et structure du pool","sidebarTitle":"Marchés","href":"/fr/concepts/markets"},{"title":"Résolution des marchés : voies de résolution par oracle et manuelle","sidebarTitle":"Résolution","href":"/fr/concepts/resolution"},{"title":"Structure des frais de protocole et calcul des gains sur counsel","sidebarTitle":"Frais et gains","href":"/fr/concepts/fees-and-payouts"}]},{"group":"Guides","pages":[{"title":"Copy trading sur counsel : répliquer des paris sans dépôt de fonds","sidebarTitle":"Copy trading","description":"Répliquez les paris ouverts de n'importe quel leader sur counsel sans céder vos clés. Chaque réplication est un nouveau bet-intent signé par votre propre wallet, dimensionné à votre mise.","href":"/fr/guides/copy-trading"},{"title":"Créer des bots sur counsel : automatisez votre stratégie de pari","sidebarTitle":"Créer des bots","href":"/fr/guides/building-bots"}]},{"group":"Ressources","pages":[{"title":"Journal des modifications","sidebarTitle":"Journal des modifications","description":"Ce qui a changé dans counsel, du plus récent au plus ancien.","href":"/fr/changelog"}]}]},{"tab":"Référence API","pages":[{"title":"Référence API","href":"/fr/api/overview"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/fr/sdk/overview"}]}]}]},"basePath":"","title":"Créer des bots sur counsel : automatisez votre stratégie de pari - counsel","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":[],"chunks":[]}