Un bot utilisant l’API Kalshi doit mériter son périmètre de fonctionnement par les comportements qu’il démontre. Une connexion réussie ou un ordre accepté ne montrent pas comment le programme gère les exécutions partielles, les messages en double, les changements de contraintes du marché ou un plantage après transmission. Ces cas déterminent si les enregistrements de son compte restent fiables lorsque les hypothèses habituelles ne tiennent plus.

Les critères d’acceptation traduisent des affirmations générales comme la fiabilité ou la sécurité en résultats observables. Ils précisent l’état initial du compte, l’événement introduit, l’action que le bot peut entreprendre et les enregistrements attendus ensuite. Un test qui ne peut pas énoncer son résultat économique attendu a peu de chances d’établir grand-chose sur le comportement du bot.

Ce guide présente des exercices d’acceptation hypothétiques destinés à un processus de développement autorisé. Les limites chiffrées et les prix sont inventés. Les tests en environnement de démonstration, les réponses simulées et les enregistrements rejoués permettent d’évaluer le comportement du logiciel sans prouver la liquidité en production ni la rentabilité d’une stratégie. Toute autorisation de trading réel reste une décision distincte, encadrée par les instructions du propriétaire du compte.

Rédiger d’abord les critères d’acceptation du bot API Kalshi

Les critères d’acceptation d’un bot Kalshi doivent décrire les résultats avant les détails d’implémentation. Par exemple, rejouer deux fois la même exécution ne doit modifier la position qu’une seule fois. Une proposition expirée ne doit pas devenir un nouvel ordre. Une réponse perdue doit créer un état non résolu plutôt que libérer automatiquement la capacité réservée correspondante.

Précisez les éléments de preuve nécessaires à la réussite du test. Un message de console indiquant qu’un doublon a été ignoré ne suffit pas si le registre comptable a malgré tout comptabilisé la quantité deux fois. Examinez la position obtenue, les frais, l’état de l’ordre et le journal. Le résultat du test d’acceptation doit être compréhensible pour une personne qui n’a pas écrit le code concerné.

Le guide antérieur du bot de trading Python utilisant l’API Kalshi décrit une conception fiable au-delà d’un client propre à un langage. Adoptez cette perspective ici : la propriété importante est le comportement au niveau du compte. Le choix du langage de programmation ne dispense pas de vérifier le sens économique.

Établir un état initial connu du compte

Chaque exercice nécessite un état initial vérifiable de manière indépendante. Précisez les positions, les ordres actifs, la capacité disponible et les intentions non résolues. Sans référence initiale connue, un écart ultérieur peut être attribué à une situation antérieure inexpliquée plutôt qu’au comportement testé.

Pour une suite de tests hypothétique, partez de dix contrats Yes, d’un ordre actif de cinq contrats et d’une limite de trente contrats par événement. Selon cette règle simple, le bot doit calculer une exposition existante ou possible de quinze contrats. Une nouvelle demande de vingt dépasserait la limite si toutes les quantités devenaient des positions.

Séparez ces données de test des informations du compte réel. Un test ne doit jamais utiliser silencieusement des identifiants de production ni supposer qu’un identifiant de marché familier est sans danger. Identifiez clairement l’environnement et utilisez les contrôles qui lui conviennent. L’objectif est de tester un comportement circonscrit, pas de découvrir l’état du compte par une exécution accidentelle.

Tester les montants décimaux exacts

La documentation actuelle de Kalshi utilise des prix et des quantités en virgule fixe. Les tests d’acceptation doivent inclure des valeurs qu’un analyseur limité aux centimes entiers ou aux contrats entiers traiterait mal, tout en respectant les contraintes de marché hypothétiques utilisées dans l’exercice.

Utilisez un prix valide inventé de 0,3375 $ et une quantité de 8,40 contrats. Leur valeur d’achat est de 2,835 $ avant frais. Le registre comptable attendu doit conserver le produit exact à l’étape où celui-ci a un sens, puis appliquer séparément les éventuelles règles d’arrondi final documentées. Tronquer la quantité à huit constitue un échec.

Testez aussi les formats invalides, les unités manquantes et les valeurs hors des plages autorisées. Le bot doit rejeter ou mettre en quarantaine un montant ambigu plutôt que le deviner. Un analyseur qui accepte des valeurs mal formées parce qu’il peut en extraire quelques chiffres crée un écart dangereux entre ce qu’indique l’entrée et ce que le compte peut faire.

Tester la grille de prix indépendamment de la précision

Une valeur décimale peut être syntaxiquement valide tout en se situant hors de la grille autorisée par le marché. Le bot doit lire les contraintes de prix actuelles et vérifier que la limite proposée les respecte. Une chaîne à quatre décimales ne constitue pas automatiquement un prix valide à quatre décimales pour tous les marchés.

Dans une plage hypothétique avec des pas de 0,005 $, un prix d’achat maximal prévu de 0,3375 $ se situe entre 0,335 $ et 0,340 $. Si la règle prévoit un arrondi vers un prix d’achat autorisé, celui-ci ne doit pas dépasser le maximum approuvé. Arrondir à la hausse à 0,340 $ enfreindrait cette instruction précise.

Testez un changement de grille entre la création et la soumission de la proposition. Le comportement attendu doit être une nouvelle validation, un ajustement autorisé ou un rejet en vue d’un examen. Le bot ne doit pas soumettre à répétition un prix invalide en supposant que chaque rejet correspond à un problème réseau temporaire.

Tester le sens économique avec des cas formulés en langage courant

Un adaptateur d’ordres doit traduire correctement l’exposition au résultat souhaitée par l’utilisateur dans les champs de sens de l’opération du point de terminaison actuel. La documentation de Kalshi sur le sens des ordres sert de référence pour interpréter les champs de réponse actuels. Il faut également vérifier la sémantique des requêtes par rapport au point de terminaison exact utilisé.

Rédigez les cas en termes compréhensibles avant d’examiner les données sérialisées : augmenter l’exposition à Yes à un prix maximal, réduire une position existante à un prix minimal, ou exprimer une décision prise en charge du côté No au moyen de l’interface actuelle. Retraduisez chaque requête en langage courant et comparez-la à l’intention initiale.

Incluez des cas de prix complémentaires, car ils peuvent masquer des erreurs. Une valeur numériquement plausible du mauvais côté peut produire une exposition valide mais non souhaitée. Réussir la validation d’un schéma prouve seulement que la requête a une forme acceptable ; les tests d’acceptation doivent aussi prouver que cette forme porte l’instruction économique prévue.

Tester le périmètre des autorisations

Autorisez le bot à observer une large liste de marchés, mais à négocier seulement sur un petit sous-ensemble approuvé. Présentez ensuite une proposition attrayante en dehors de ce sous-ensemble. Le résultat attendu est un rejet enregistré, sans ordre signé ni transmis.

Répétez l’exercice avec un type d’ordre non pris en charge, une quantité excessive et une autorisation expirée. Chaque cas doit échouer au contrôle approprié. Une explication produite par un modèle ne doit pas pouvoir contourner les règles en employant un langage pressant ou en affirmant un niveau de confiance inhabituellement élevé.

Le guide de l’automatisation sur Polymarket compare les processus manuels, supervisés et délégués. La leçon générale utile est que l’autorité doit être explicite à chaque étape. Pour ce bot Kalshi, le compte rendu d’acceptation doit montrer exactement quelle action a été refusée et quels travaux d’observation ou de rapprochement restaient autorisés.

Tester des propositions concurrentes soumises à une même limite

Deux propositions peuvent être acceptables individuellement tout en dépassant ensemble une limite commune. Le test d’acceptation doit les introduire assez près dans le temps pour révéler une concurrence entre la vérification de la capacité et l’enregistrement des réservations. Le comportement attendu est une autorisation coordonnée, et non deux approbations indépendantes fondées sur le même instantané périmé.

Revenez à la limite hypothétique de trente contrats, dont quinze sont déjà détenus ou engagés. Deux propositions demandent chacune dix contrats. Un seul ajout de dix contrats est possible si la règle évalue la quantité exécutée dans le pire des cas ; le second porterait l’exposition potentielle à trente-cinq. Le bot doit rejeter la seconde proposition, en ajuster la taille selon une règle autorisée ou la différer.

Examinez le registre comptable partagé après les deux décisions. Il doit contenir un total cohérent de la capacité réservée et le motif du report ou du rejet de la proposition. Le test ne doit pas être considéré comme réussi simplement parce qu’un rejet ultérieur de la plateforme de négociation a empêché par hasard le dépassement. Le contrôle des autorisations propre à l’application doit fonctionner.

Tester le traitement idempotent des exécutions

Le traitement idempotent des exécutions signifie que recevoir plusieurs fois la même exécution économique a le même effet sur le compte que la recevoir une seule fois. Les flux, les reconnexions et les consultations ultérieures du compte peuvent tous fournir des éléments de preuve qui se recoupent. Le bot doit reconnaître une même exécution grâce à son identité stable et aux règles documentées de révision.

Partez de dix contrats et introduisez une exécution de quatre contrats. La position obtenue est de quatorze. Rejouez la même exécution par un second canal ; le résultat doit rester de quatorze, les frais associés n’étant enregistrés qu’une fois. Une seconde exécution distincte de quatre contrats doit ensuite porter la position à dix-huit.

Ce test distingue la transmission en double d’opérations de trading légitimement répétées. Dédupliquer uniquement selon la quantité et le prix éliminerait à tort des exécutions distinctes dont les conditions sont identiques par hasard. Les enregistrements doivent comporter des identifiants et une provenance suffisamment solides pour préserver les exécutions réelles tout en supprimant les observations répétées d’une même exécution.

Tester les exécutions partielles et l’état du reliquat

Une exécution partielle doit mettre à jour les avoirs à hauteur de la quantité exécutée et préserver l’état correct de la portion non exécutée. Le comportement choisi pour la durée de validité de l’ordre compte. Un reliquat maintenu dans le carnet et un reliquat immédiatement annulé constituent des engagements différents pour le compte, même lorsque la quantité exécutée est identique.

Dans un ordre hypothétique de douze contrats, cinq sont exécutés à 0,40 $, pour un coût de 2 $ avant frais. Sept restent non exécutés. Un exercice maintient ces sept contrats actifs ; un autre y met fin selon le comportement documenté choisi pour l’ordre immédiat. Les panneaux présentant les réservations et les ordres doivent donc différer.

Le bot ne doit jamais déduire que toute exécution partielle crée un reliquat actif. Il doit aussi éviter de traiter l’annulation d’un reliquat comme l’annulation des cinq contrats exécutés. Vérifiez ensemble la position, le coût d’achat, les frais et l’état final de l’ordre afin que le test couvre le résultat économique complet.

Tester la perte de la réponse à une soumission

Simulez la transmission d’un ordre suivie de la perte de la réponse. Dans un cas, la plateforme de négociation l’a accepté ; dans un autre, elle l’a rejeté. Le bot présente initialement le même symptôme local, si bien que sa première réaction doit préserver l’incertitude et enquêter sur l’intention initiale.

Le comportement attendu comprend le maintien de la capacité réservée concernée, l’absence de nouvel ordre sans lien avec le précédent et la consultation des enregistrements d’ordres et d’exécutions pris en charge. Le test doit vérifier qu’une liste d’ordres ouverts vide ne clôt pas à elle seule le cas si l’ordre a pu être entièrement exécuté.

Un identifiant d’ordre client peut aider à relier les enregistrements, mais le bot doit vérifier les règles actuelles de traitement des doublons de la plateforme plutôt que supposer une garantie illimitée d’exécution exactement une fois. Le traitement idempotent local, l’identité des requêtes et les garanties d’acceptation à distance sont des outils liés dont les périmètres diffèrent. Les critères d’acceptation doivent indiquer quelle garantie est effectivement testée.

Tester un plantage après l’acceptation

Un exercice particulièrement utile de reprise après redémarrage arrête le processus après l’acceptation d’un ordre par la plateforme, mais avant l’enregistrement local de sa réussite. Au redémarrage, le bot doit charger son intention enregistrée de manière persistante et rapprocher l’état distant avant de décider s’il faut envoyer quoi que ce soit.

S’il rejoue simplement toutes les intentions dépourvues d’indicateur local d’achèvement, il risque de créer une exposition en double. Le résultat de reprise attendu est un seul ordre économique relié à l’intention initiale, dont toute quantité active ou exécutée est reflétée dans le registre comptable du compte. Si les éléments disponibles ne permettent pas d’établir cette relation, le résultat doit rester explicitement non résolu.

Le guide antérieur du bot de trading automatique Kalshi explique les états de fonctionnement. Le redémarrage doit passer par l’observation et le rapprochement, plutôt que basculer automatiquement vers un trading sans restriction. Les tests d’acceptation doivent examiner cette transition, et pas seulement confirmer que le processus démarre correctement.

Tester une annulation pendant une exécution

Introduisez une exécution alors qu’une annulation est en cours. Le bot doit rapprocher le montant exécuté et la portion effectivement retirée. Une demande d’annulation exprime une intention ; elle n’empêche pas rétroactivement une exécution déjà survenue.

Pour un reliquat actif inventé de neuf contrats, supposez que trois soient exécutés avant que l’annulation ne retire les six autres. La position du compte augmente de trois et l’engagement associé aux six prend fin. Une proposition de remplacement doit utiliser cet état résultant plutôt que supposer que les neuf contrats ont tous été annulés.

Vérifiez l’explication destinée à l’opérateur autant que les chiffres. L’interface doit montrer pourquoi la position finale diffère du montant visible au début de l’annulation. Un libellé générique indiquant une annulation peut masquer l’exécution supplémentaire et encourager un remplacement de taille excessive, même si le registre comptable sous-jacent contient la bonne quantité.

Tester un changement d’état du marché

Une proposition peut être valide à sa création et invalide au moment de sa soumission. Introduisez une suspension, une clôture ou une modification des contraintes du marché entre ces étapes. Le comportement attendu doit respecter les règles actuelles de la plateforme et celles de l’application, sans tenter de contourner cet état par des requêtes répétées.

La documentation de Kalshi sur le cycle de vie des marchés décrit les étapes actuelles de négociation et de règlement. La suite de tests d’acceptation doit utiliser cette sémantique plutôt que supposer qu’un indicateur générique ouvert ou fermé couvre toutes les responsabilités.

La recherche peut continuer lorsque la création d’ordres est désactivée, et le rapprochement peut rester nécessaire après la fin des échanges. Testez ces capacités séparément. Un bot qui cesse toute observation du compte à la clôture d’un marché peut manquer précisément les enregistrements nécessaires pour établir les positions finales, les frais et le règlement. Les restrictions opérationnelles doivent limiter les actions sans effacer l’obligation de rendre compte des actions antérieures.

Tester un changement d’état du marchéAmount testsAuthority testsDuplicate testsRecovery testsLifecycle testsTRADING FIELD NOTESEDUCATIONAL RESOURCE
Les cas portant sur les montants, les autorisations, les doublons, la reprise et le cycle de vie testent des points de contrôle différents ; la réussite de l’un ne valide pas les autres.

Tester les interruptions de flux et les lectures de reprise qui se recoupent

Déconnectez le flux privé pendant que des exécutions ont lieu, puis reconnectez-le et récupérez l’historique du compte. Le processus de reprise peut rencontrer à la fois des exécutions déjà observées avant l’interruption et de nouvelles exécutions. Le registre comptable attendu doit inclure chaque événement économique une seule fois et identifier l’intervalle récupéré.

Un exercice utile renvoie les enregistrements dans un ordre peu commode. Une mise à jour tardive ne doit pas écraser un état plus récent au seul motif qu’elle est arrivée plus tard localement. Préservez les identifiants d’événements, les horodatages pertinents et les informations de version documentées pour déterminer les relations entre les enregistrements.

Si l’exhaustivité de la couverture ne peut pas être établie, le bot doit conserver une anomalie ouverte et limiter toute nouvelle exposition selon ses règles. Une position d’apparence précise déduite d’un flux incomplet ne constitue pas une reprise réussie. Le test est réussi lorsque le résultat est soit vérifié, soit honnêtement déclaré non résolu, avec une prochaine étape claire.

Tester les limites de fréquence sans changer l’intention

Une lecture ou une écriture soumise à une limite de fréquence ne doit pas conduire le bot à modifier le sens économique de la requête. Un délai d’attente avant une nouvelle tentative peut changer le calendrier, mais ne doit pas augmenter silencieusement la quantité, assouplir une limite ou générer une nouvelle intention indépendante. Les propositions retardées peuvent expirer pendant l’attente.

Testez à la fois la limitation habituelle des données de marché et une requête privée de rapprochement nécessaire pour lever une incertitude. Le bot doit établir les priorités selon ses règles de fonctionnement et préserver suffisamment de capacité pour l’observation essentielle du compte lorsque l’interface le permet. Il ne doit pas consacrer toutes les requêtes disponibles à des actualisations de cotations de faible utilité.

Enregistrez le délai réel dans l’historique de recherche et d’exécution. Une stratégie ne peut pas revendiquer la cotation initiale si la limitation de fréquence a différé sa décision. Le résultat d’acceptation doit montrer que les propositions périmées ont été revalidées ou rejetées et que les soumissions non résolues sont restées associées à leurs réservations initiales.

Tester la défaillance des identifiants comme un état maîtrisé

Des identifiants expirés, révoqués ou mal configurés doivent produire un état clair de perte de capacités. Le bot doit éviter d’exposer des secrets dans les messages d’erreur et ne doit pas se rabattre sur un compte ou un environnement non prévu simplement pour faire réussir la requête.

Distinguez l’observation publique de l’accès privé. L’écran des données de marché peut continuer à fonctionner alors que les lectures du compte et les actions sur les ordres échouent. L’interface doit expliquer cette différence pour que l’opérateur ne déduise pas d’un affichage de prix en mouvement que la connexion de trading fonctionne correctement.

Le guide d’une plateforme de trading Kalshi aborde l’accès au compte et la facilité d’utilisation opérationnelle. Les tests d’acceptation doivent inclure ce que voit le lecteur en cas de défaillance des identifiants : les autorisations affectées, l’heure de la dernière vérification du compte et les engagements non résolus. Un indicateur générique de déconnexion ne suffit pas s’il masque les responsabilités qui peuvent encore être remplies.

Tester l’interface d’examen humain

Un bot peut tenir des enregistrements internes corrects tout en induisant son opérateur en erreur par une mauvaise présentation. Vérifiez si l’écran distingue les états proposé, autorisé, soumis, actif, exécuté et rapproché. Affichez les quantités partielles et les éléments non résolus sans obliger le lecteur à interpréter des journaux bruts.

Demandez à une personne chargée de l’examen d’expliquer un incident inventé à partir des seuls enregistrements affichés. Elle doit identifier le contrat, l’exposition possible, les derniers éléments de preuve vérifiés et la prochaine action. Si elle n’y parvient pas, la suite de tests d’acceptation a révélé un problème d’utilisation susceptible de devenir un problème opérationnel sous pression.

La comparaison avec une plateforme de trading Polymarket aide à distinguer les responsabilités générales de l’interface des mécanismes propres à la plateforme de négociation. Des informations claires sur la conservation des actifs, les ordres et le règlement comptent dans les deux contextes, mais les libellés doivent décrire le modèle réel du compte. Une conception visuelle commune ne doit pas faire paraître économiquement identiques des états différents.

Conserver des versions des éléments de preuve d’acceptation

Enregistrez le scénario, la version du client, la configuration et le résultat observé pour chaque exécution des tests d’acceptation. Une modification ultérieure du code ou du schéma pourra ainsi être comparée à une référence connue. Sans éléments de preuve versionnés, affirmer que le bot a réussi les tests peut renvoyer à une configuration qui n’est plus utilisée.

Concentrez les vérifications de non-régression sur les points de contrôle importants : les montants, le sens de l’opération, les autorisations, le traitement des doublons et la reprise. Répéter des centaines de fois un test de connexion ordinaire réussi apporte peu si une migration a modifié le champ qui détermine si un ordre achète ou vend le résultat visé.

Le guide antérieur de l’API de trading sur les marchés de prédiction explique que la connexion et la vérification sont des responsabilités distinctes. Les éléments de preuve d’acceptation doivent de même distinguer l’accessibilité d’une interface du bon fonctionnement du processus complet du compte. Les deux faits sont utiles, mais un seul répond aux cas opérationnels difficiles.

N’accorder au bot API Kalshi que le périmètre validé par ses tests

Les tests d’acceptation servent de base à une décision de fonctionnement circonscrite. Un bot qui réussit des tests de rapprochement en lecture seule n’a pas automatiquement démontré sa capacité de reprise pour des ordres réels. Un bot testé sur un type d’ordre n’a pas nécessairement géré toutes les autres durées de validité ni toutes les configurations de compte.

Documentez le périmètre approuvé, les limites connues et les conditions qui imposent un nouvel examen. Toute extension doit s’appuyer sur de nouveaux éléments de preuve : la couverture de scénarios supplémentaires, la validation du schéma actuel et des règles claires pour le compte. Préservez la possibilité de rester en mode observation ou supervisé lorsqu’un cas de reprise demeure non résolu.

Le résultat d’acceptation le plus utile est un énoncé précis du comportement démontré. Il montre que le bot préserve les unités, respecte les autorisations, traite les exécutions une seule fois et reconstitue l’état du compte après les défaillances spécifiées. Ces éléments sont plus instructifs qu’une qualification générale de fiabilité et donnent à l’opérateur une base concrète pour décider du travail que le programme pourra ensuite effectuer.

Poursuivre l’apprentissage

Explorer toutes les ressources