Een arbitragebot voor gebeurteniscontracten moet de periode beheersen waarin een voorgestelde combinatie slechts gedeeltelijk werkelijkheid is. Een scanner kan prijzen vinden die samen aantrekkelijk lijken, maar een account ontvangt afzonderlijke orders en uitvoeringen. De ene order kan worden geaccepteerd terwijl de andere wordt afgewezen. Een annulering kan na een aanvullende uitvoering aankomen. Een antwoord kan verdwijnen hoewel het platform het verzoek heeft geaccepteerd. De bot moet die toestanden beschrijven zonder te doen alsof het beoogde paar al bestaat.
Het centrale ontwerpprobleem is coördinatie onder onzekerheid. Reserveer de capaciteit voor beide delen, bewaar hun identiteiten en meet de resterende blootstelling wanneer ze niet gelijk opgaan. De fictieve voorbeelden hier gebruiken expliciet verenigbare binaire uitbetalingen van één dollar. Ze illustreren uitvoeringscontroles, geen claim dat een echte transactie over meerdere platformen ondeelbaar kan worden voltooid of dat schijnbare arbitrage risicoloos is.
Reserveringen van een arbitragebot beginnen met een goedgekeurd paar
De uitvoeringsmotor moet een beoordeelde paardefinitie ontvangen, niet twee los verwante marktnamen. Die definitie bevat per deel de platformcontext, contractidentificator, uitkomstzijde, regelversie en het uitbetalingsverband. Ze moet ook aangeven welke uitzonderlijke uitkomsten zijn overwogen en welke voorwaarden de koppeling ongeldig maken. Een contractpaar waarvan de betekenis onopgelost blijft, hoort bij onderzoek en niet in de gereedstaande wachtrij van de uitvoerder.
De kandidaatinstructie voegt actuele hoeveelheden, prijsplafonds, kostenramingen en waarnemingstijden toe. Ze noemt de maximaal aanvaardbare gezamenlijke kosten en de hoeveelheid ongepaarde blootstelling die het account bereid is te verdragen. Dat zijn verschillende grenzen. Een paar kan bij voltooiing betaalbaar zijn terwijl het eerste deel te veel tijdelijke richtingblootstelling creëert. Beide vragen moeten vóór indiening van een order worden beantwoord.
Gebruik een blijvende dossieridentificator om definitie, aanbeveling, autorisatie en uiteindelijke orders te verbinden. Ieder deel moet ook een eigen vaste instructie-identiteit hebben. De paaridentificator verklaart waarom de orders bij elkaar horen; de deelidentificatoren laten het systeem één afzonderlijke indiening onderzoeken. Geen van beide mag worden vervangen enkel omdat een netwerkverzoek een time-out krijgt of een proces herstart.
Het oudere artikel over een arbitragebot voor voorspellingsmarkten beschrijft het bredere verband tussen een ontdekte kans en een handelsproces. Dit ontwerp begint waar de uitbetalingsanalyse al is beoordeeld. Het moet ervoor zorgen dat de daadwerkelijke accountcombinatie zichtbaar blijft terwijl orders verschillende toestanden doorlopen.
Reserveer lokale middelen en gedeelde risicocapaciteit
Stel dat een fictief paar 500 eenheden A Ja voor maximaal $0,37 en 500 eenheden B Nee voor maximaal $0,60 vereist. Neem aan dat de regels één eenheid van elk bij de gemodelleerde uitkomsten samen één dollar laten uitbetalen. De aankoopbedragen zijn dan $185 en $300. Met hypothetische vergoedingen van $3 en $4 zijn de totale verwervingskosten $492, zodat onder de aangenomen uitbetaling van $500 nog $8 resteert.
Onder die aannames heeft de bot $188 beschikbaar voor A en $304 voor B nodig. Als de delen afzonderlijke accounts gebruiken, is $492 ergens in de totale portefeuille onvoldoende. Ieder account heeft vóór uitvoering eigen bruikbare capaciteit nodig. De reservering moet de juiste vergoedingen en een eventuele aanvullende herstelbuffer van de operator bevatten. Die buffer is beheersbeleid en hoort niet bij de geraamde winst tenzij hij werkelijk wordt uitgegeven.
Reserveer op portefeuilleniveau naast geld ook de relevante gebeurtenisblootstelling. Meerdere kandidaatparen kunnen allemaal van dezelfde gebeurtenis of hetzelfde platform voor het tweede deel afhangen. Ieder dossier onafhankelijk middelen laten reserveren zonder gedeelde limieten te controleren, kan een buitensporige opeenstapeling van onvoltooide eerste delen veroorzaken. Een gemeenschappelijke risicodienst of een andere consistente coördinatiemethode moet voorkomen dat die dossiers dezelfde resterende capaciteit opeisen.
Reserveringen moeten bij onzekerheid blijven bestaan. Een order die met gezaghebbende bevestiging is afgewezen, kan zijn ongebruikte bedrag vrijgeven. Een order waarvan het antwoord ontbreekt, kan dat niet. Een procesherstart moet onopgeloste reserveringen laden voordat nieuwe dossiers worden geaccepteerd. Anders kan het programma een nieuw budget lijken te hebben terwijl de accounts nog verplichtingen uit de vorige sessie bevatten.
Kies de uitvoeringsvolgorde bewust
Beide delen vrijwel tegelijk indienen vermindert een deel van de volgordevertraging, maar garandeert geen gelijktijdige acceptatie of uitvoering. Eerst één deel versturen kan coördinatie vereenvoudigen, maar creëert een periode met bekende richtingblootstelling. Een systeem moet zijn volgorde kiezen op basis van waargenomen liquiditeit, platformgedrag en toegestane accountblootstelling. Beoordeel vervolgens de resultaten van die keuze, in plaats van haar als een implementatiedetail te behandelen.
Een gebruikelijke verleiding is het moeilijkste deel eerst uit te voeren. Dat kan redelijk zijn voor een getoetst proces, maar vereist nog steeds een bepaalde reactie als het eenvoudigere deel verdwijnt. Een andere aanpak gebruikt een rustende order voor één zijde en reageert op uitvoeringen daarvan. Dat kan een genoteerde instapprijs verbeteren en tegelijk de kans vergroten dat de complementaire prijs vóór de reactie verandert. De relevante maatstaf is de voltooide combinatie én de onvoltooide gevallen.
Instructies voor één order creëren geen transactie over meerdere platformen. Een alles-of-nietsinstructie kan bijvoorbeeld één deel begrenzen op een platform dat haar ondersteunt, maar dwingt een ander platform niet de bijbehorende order uit te voeren. Polymarkets documentatie over de orderlevenscyclus beschrijft verschillende gedragingen van afzonderlijke orders. De bot moet het werkelijk ondersteunde gedrag per deel controleren en een lokale garantie niet naar het hele paar uitbreiden.
Leg de gekozen volgorde in het dossier vast. Registreer wanneer iedere autorisatie is aangemaakt, wanneer ieder verzoek is verzonden en welke informatie vóór de tweede indiening beschikbaar was. Dat bewijs maakt latere vergelijking van volgordebeleid mogelijk. Zonder die registratie kan een geslaagd paar dezelfde timingzwakte verbergen die in het volgende geval een dure gedeeltelijke uitvoering veroorzaakt.
Volg hoeveelheden in iedere fase
Onderscheid per deel de gevraagde, geaccepteerde, uitgevoerde, geannuleerde en nog onzekere hoeveelheden. Die getallen beantwoorden verschillende vragen. De gevraagde hoeveelheid drukt een bedoeling uit. De uitgevoerde hoeveelheid stelt een positie vast. De open hoeveelheid kan die positie nog vergroten. De onzekere hoeveelheid vertegenwoordigt blootstelling die het lokale systeem nog niet heeft opgehelderd. Alles samenvoegen tot één voltooiingspercentage kan richting en omvang van het resterende risico verbergen.
De gepaarde hoeveelheid is de hoeveelheid waarvoor de vereiste posities daadwerkelijk in verenigbare verhoudingen zijn verworven. Als in het eenvoudige één-op-éénvoorbeeld A 500 uitgevoerde eenheden heeft en B 300, is de gepaarde hoeveelheid 300 en de ongepaarde A-hoeveelheid 200. Als een complexere uitbetaling een andere verhouding vereist, moet de koppelingsberekening die beoordeelde verhouding volgen in plaats van gelijkheid te veronderstellen.
Houd de hoeveelheidsberekening onafhankelijk van geldsaldi. Een saldoverandering kan kosten, overdrachten of niet-gerelateerde transacties bevatten en is daarom een slechte vervanging voor uitvoeringsregistraties. Bewaar per uitvoering identificator, zijde, hoeveelheid en prijs en ontdubbel herhaalde levering van dezelfde uitvoering. Een opnieuw afgespeelde gebeurtenis moet bestaande informatie bevestigen, niet een tweede positieboeking creëren.
De oudere gids over een arbitragebot voor Kalshi kan accountregistraties voor een platformspecifieke implementatie helpen ordenen. De algemene regel is dat paarvoltooiing uit daadwerkelijke hoeveelheden per deel moet worden afgeleid. Een positieve gezamenlijke prijsopgave, een ingediende reeks of twee bevestigde verzoeken kunnen de voltooide positie niet zelfstandig aantonen.
Gedeeltelijke uitvoeringen vereisen een nieuwe beslissing van de arbitragebot
Vervolg het fictieve voorbeeld met alle 500 A-eenheden uitgevoerd voor $0,37, maar slechts 300 B-eenheden voor $0,60. De aankoopbedragen zijn $185 en $180, samen $365 vóór kosten. Driehonderd eenheden vormen complete paren die vóór kosten $291 kosten. De resterende 200 A-eenheden kosten $74 en hebben richtingblootstelling. Het oorspronkelijke geraamde nettoresultaat van $8 voor 500 complete paren beschrijft deze accounttoestand niet meer.
De bot mag het dossier niet langer uitsluitend op de oorspronkelijke kansscore beoordelen. Hij heeft nu een herstelbeslissing met actuele prijsopgaven en expliciete grenzen nodig. Kunnen nog 200 B-eenheden binnen geautoriseerde totale kosten worden verworven? Kunnen de ongepaarde A-eenheden binnen een toegestaan verlies worden verkocht? Is tijdelijk aanhouden toegestaan, en hoelang? Iedere optie moet de daadwerkelijke bestaande positie en actuele uitvoerbare hoeveelheden gebruiken.
Stel dat de schriftelijke regel van de operator verkleining van ongepaard A tegen een biedprijs van minstens $0,34 toestaat nadat de resterende B-order bevestigd is geannuleerd. Verkoop van 200 A-eenheden tegen die prijs levert $68 op. Het account houdt dan 300 complete paren aan, die onder de voorbeeldaannames $300 uitbetalen. De gezamenlijke opbrengst is $368 tegenover het aankoopbedrag van $365, zodat vóór kosten $3 overblijft. Als de werkelijke totale kosten voor dit traject $5 bedragen, is het eindresultaat een verlies van $2.
Dat verlies bewijst niet dat de berekening voor een volledig voltooide combinatie van $492 onjuist was. Het laat zien dat de beoogde uitvoering niet plaatsvond en herstel kosten had. Het register moet beide berekeningen bewaren. Alleen voltooide gunstige paren beoordelen en herstelde gedeeltelijke gevallen uitsluiten, zou de bruikbaarheid van het uitvoeringsbeleid overdrijven.
Een indiening met een time-out moet haar identiteit behouden
Bij een time-out weet de bot dat de lokale communicatie faalde. Hij weet niet noodzakelijk of het platform de order heeft geaccepteerd. Zet het deel in een onzekere toestand, behoud zijn reservering en raadpleeg ondersteunde order- en accountregistraties. Gebruik waar beschikbaar de oorspronkelijke client- of platformidentificatoren. Als die registraties de poging niet onmiddellijk kunnen ophelderen, blijft de onzekerheid onderdeel van de blootstellingsberekening.
Maak geen nieuwe order aan enkel omdat de gewenste hoeveelheid nog niet in de lokale positie zichtbaar is. De oorspronkelijke order kan rustend of gedeeltelijk uitgevoerd zijn, of in een platformspecifieke verwerkingsfase wachten. Een tweede instructie kan de beoogde hoeveelheid verdubbelen. In een gepaard systeem kan dat een te groot uitgevoerd deel opleveren, zelfs nadat de andere zijde is voltooid. Een op papier gekoppeld dossier wordt dan opnieuw richtingblootstelling.
Herstel bij een arbitragebot voor gebeurteniscontracten heeft een escalatievoorwaarde nodig. Na een bepaalde periode of een specifieke fout kan het systeem nieuwe dossiers voor het betrokken account uitschakelen en beoordeling door de operator vragen. Dat is een beheersreactie op ontbrekend bewijs, geen verklaring dat het platform de order kwijt is. De registratie moet precies benoemen wat onbekend blijft en welke aanvragen of accountmomentopnamen zijn onderzocht.
Werk bij uiteindelijke opheldering het oorspronkelijke dossier bij in plaats van het achter een vervangende registratie te verbergen. Als de poging werd afgewezen, geef de ongebruikte reservering vrij. Als zij werd uitgevoerd, verwerk de uitvoeringen en bereken de gekoppelde hoeveelheid opnieuw. Blijft zij open, beslis dan op basis van de actuele dossiertoestand of ze wordt behouden of geannuleerd. Iedere uitkomst moet de verbinding met de oorspronkelijke autorisatie bewaren.
Annulering en vervanging hebben een eigen grens nodig
Een order annuleren draait eerdere uitvoeringen niet terug. Het bewijst ook niet dat er geen uitvoering plaatsvond terwijl het annuleringsverzoek onderweg was. De bot moet het deel blijven volgen totdat er voldoende gezaghebbend bewijs is om de definitief uitgevoerde hoeveelheid en de niet meer uitvoerbare hoeveelheid vast te stellen. De volledige reservering onmiddellijk na het versturen van een annulering vrijgeven, kan de accountverplichting onderschatten.
Een vervangende order brengt een vergelijkbaar probleem mee. Als de oude order nog actief kan zijn, kan opnieuw indienen van de volledige bedoelde hoeveelheid de uitvoerbare hoeveelheid tijdelijk verdubbelen. De uitvoerder heeft gedocumenteerd vervangingsbeleid nodig dat bij het werkelijke platformgedrag past. Dat beleid kan bevestiging vóór vervanging vereisen of voor ondersteunde overlap reserveren. Het mag nooit op het verbergen van de oude order in de lokale interface vertrouwen als bewijs dat het platform hem heeft verwijderd.
Stel dat in het voorbeeld van 500 tegenover 300 tijdens annulering nog 40 B-eenheden worden uitgevoerd. De gekoppelde hoeveelheid wordt 340 en ongepaard A daalt naar 160. Een herstelverkoop van 200 A-eenheden op basis van de eerdere momentopname zou te ver corrigeren en overtollige B-blootstelling achterlaten. De herstelbeslissing moet daarom een afgestemde hoeveelheidstoestand gebruiken of expliciet rekening houden met de resterende onzekerheid.
Het verwante artikel over een handelsbot voor gebeurtenismarkten onderzoekt onderbrekingen en geplande veranderingen breder. Gepaarde uitvoering voegt een specifieke eis toe: een beheershandeling op één deel kan veranderen wat bij het andere moet gebeuren. Het systeem moet die updates via een gedeelde dossiertoestand coördineren, in plaats van ieder deel als een los handelsprogramma te laten werken.
Bewaar een herstelbudget zonder voltooiing na te jagen
Een herstelbudget bepaalt hoeveel aanvullende kosten of verlies het systeem mag accepteren om onvoltooide blootstelling te verkleinen. Het moet losstaan van de oorspronkelijke instapdrempel. Het account kan na een gedeeltelijke uitvoering redelijkerwijs een beperkt verlies accepteren om een groter gebeurtenisrisico niet te behouden, maar die toestemming moet expliciet zijn. Anders kan een bot bijna iedere prijs rechtvaardigen door te beweren dat hij arbitrage voltooit.
Stel het budget vast in beoordeelbare termen: maximale verwervingskosten van ongepaard bezit, maximale extra voltooiingskosten, maximaal toegestaan verkleiningsverlies en voorwaarden die menselijk oordeel vereisen. Een prijsplafond voor het tweede deel kan uit de werkelijke kosten van het eerste deel en de toegestane uitkomst opnieuw worden berekend. De berekening moet reeds gemaakte werkelijke vergoedingen en voorzichtige ramingen voor de resterende handeling bevatten.
Een budget is geen instructie om de volledige ruimte te besteden. Vergelijk beschikbare alternatieven met actuele uitvoerbare hoeveelheden. Als annulering en een kleine verkleining een aanvaardbare positie herstellen, hoeft het systeem de oorspronkelijke omvang niet te forceren. Past geen alternatief binnen de goedgekeurde grenzen, pauzeer dan en toon de onopgeloste positie duidelijk. Het resterende accountrisico moet zichtbaar zijn, ook wanneer de bot het niet automatisch kan oplossen.
De oudere bespreking van een geautomatiseerde arbitragebot voor Polymarket biedt context voor deze scheiding tussen detectie en beheerst handelen. Herstellogica verdient een eigen beoordelingsverzameling omdat zij onder andere omstandigheden wordt aangeroepen dan een gewone instap. Gedrag dat in rustige momentopnamen werkt, kan falen wanneer liquiditeit precies verdwijnt op het moment dat het eerste deel wordt uitgevoerd.
Voorraad kan zich over meerdere dossiers ophopen
Een bot kan veel paren tegelijk beheren, maar het account ondervindt hun gezamenlijke voorraad. Twee onvoltooide dossiers kunnen blootstelling aan dezelfde uitkomst achterlaten, ook als hun paaridentificatoren verschillen. Voeg posities en open verplichtingen samen per gebeurtenis en relevant ongunstig scenario. Neem niet aan dat afzonderlijke dossiers onafhankelijke risicolimieten creëren.
Een marketmaker voor gebeurteniscontracten gebruikt voorraad om verdere prijsstelbeslissingen te bepalen. Een gepaarde bot heeft baat bij hetzelfde bewustzijn wanneer onvoltooide delen in het account blijven. Nieuwe dossiers kunnen een bestaande onbalans verkleinen, vergroten of bij uitzonderlijke uitkomsten een andere blootstelling creëren. De risicocontrole moet de resulterende portefeuille beoordelen, niet ieder voorgesteld paar automatisch als neutraal behandelen.
Als de bot ook aan marketmaking met gebeurteniscontracten doet, horen zijn rustende prijsopgaven in hetzelfde blootstellingsmodel. Een order voor liquiditeitsverschaffing kan worden uitgevoerd terwijl de arbitragemotor capaciteit voor een tweede deel reserveert. Afzonderlijke budgetten die elkaar negeren, kunnen beide lokaal slagen en op accountniveau falen. Gedeelde reserveringen en consistente afstemming zijn noodzakelijk, ook wanneer de strategieën andere doelen hebben.
Periodieke afstemming moet het gezamenlijke lokale model met gezaghebbende posities, orders en kosten vergelijken. Een dossier mag pas operationeel gesloten worden genoemd wanneer de orders zijn opgehelderd en de resterende positie correct is toegewezen. Als een bewust behouden restpositie naar een andere strategie wordt overgedragen, registreer dan die verantwoordelijkheidsoverdracht. Het verwijderen van een dossier van een scherm mag zijn risico niet uit het register verwijderen.
Test de gevallen die de beslissing zouden veranderen
Gebruik incidentherhalingen die coördinatie toetsen, niet alleen geslaagde orderindiening. Eén test moet A accepteren en B afwijzen. Een andere moet B tijdens een annulering gedeeltelijk uitvoeren. Een derde moet dezelfde uitvoering tweemaal leveren. Een vierde moet het proces herstarten na indiening van een verzoek maar voordat het antwoord is geregistreerd. De verwachte uitkomst moet hoeveelheden, reserveringen, toegestane vervolghandelingen en een eventuele vereiste pauze benoemen.
Controleer voor het uitgewerkte gedeeltelijke-uitvoeringsgeval de berekening onafhankelijk: $365 uitgegeven, $68 terugontvangen door verkleining van 200 ongepaarde A-eenheden, $300 ontvangen uit de resterende verenigbare paren en $5 aan aangenomen werkelijke kosten leveren een verlies van $2 op. De test mag het dossier geen winstgevend paar van 500 eenheden noemen enkel omdat dat de oorspronkelijke aanbeveling was. Hij moet de reden bewaren waarom het resultaat van het plan afwijkt.
Test ook de beslissing om niet te beginnen. Wijs een paar met afwijkende regels, onvoldoende lokale financiering, verouderde diepte of onopgeloste accounttoestand af. Die weigeringen horen bij het bedoelde botgedrag. Een systeem dat alleen actieve uitvoeringstoetsen doorstaat, kan nog onveilig zijn omdat het nooit heeft aangetoond de voorwaarden voor het achterwege laten van uitvoering te respecteren.
De uiteindelijke beoordeling moet ieder dossier van het goedgekeurde uitbetalingsverband tot het afgestemde accountresultaat kunnen reconstrueren. Een bot met gekoppelde delen is nuttig als hij onvoltooide combinaties expliciet maakt, de gevolgen begrenst en voldoende bewijs bewaart om herstel te verklaren. Dat is de praktische automatiseringsnorm voor een proces waarin twee aantrekkelijke prijzen geen twee voltooide transacties garanderen.