Polymarket Bot Tutorial · Sura ya 30 kati ya 32
Production-grade risk management code kwa Polymarket bots: position caps, daily loss limits, halt sentinels, fill-rate watchdogs, reconcile-on-restart, idempotent retries. Code patterns kutoka real production trader.
Sura hii inafunika nini
Risk code ni mengi ya production trading bot. Strategy logic ni easy part; surrounding caps, halts, watchdogs, na reconcilers ndio zinazoamua kama bot itaishi bad week yake ya kwanza. Sura hii ni production-grade risk pattern.
- Kwa nini risk code ni mengi ya real trading bot
- Position caps (per-market, per-strategy, total)
- Daily loss kill switch
- Halt sentinels (file-based emergency stop)
- Fill-rate watchdog
- Reconcile diary vs on-chain kwenye restart
- Code: production-grade halt-aware loop
Kwa nini risk code ni mengi ya real trading bot
Measurement tuliyoifanya kwenye bot codebase yetu wenyewe: 60% ya LOC ni risk code (caps, halts, watchdogs, reconciliation). 30% ni strategy. 10% ni glue.
Ratio hiyo ni correct. Strategy ni easy part - kueleza wakati wa kuingia na wakati wa kuexit inafit katika mistari machache. Risk code ni kila kitu kingine: kile cha kufanya wakati price inahama dhidi yako faster kuliko expected, kile cha kufanya wakati fills zinakoma kuland, kile cha kufanya wakati WebSocket inadrop, kile cha kufanya wakati strategy inageuka kuwa unprofitable.
Builder failure stories nyingi zinashare shape sawa: strategy ilifanya kazi, lakini bot iliendelea kutrade kupitia regime change kwa sababu hakuna halt iliyofired. Andika halts kabla ya kuandika strategy.
Position caps (per-market, per-strategy, total)
Caps tatu, zilizoenforced katika code.
- Per-market cap: max $X per market bila kujali edge confidence. Typical: $25-100 kwa small bots, $200-500 kwa production. Bounds blast radius ya single-market wrong call.
- Per-strategy cap: ikiwa unaendesha strategies nyingi, kila moja inapata slice ya total capital. Typical: 30-50% per strategy. Inazuia bad day ya strategy moja kuconsume capital ya nyingine.
- Total cap: max % ya wallet balance deployed simultaneously. Typical: 50-70%. Inaacha capital kwa unexpected opportunities au kwa kukamata bot bookkeeping bugs zake.
Caps zote tatu zinapaswa kuenforced ndani ya order-placement function, sio tu katika strategy logic. Strategy inaweza kuwa na bug; order-placement gate ni last line of defense.
Daily loss kill switch
Single most important risk control: daily-loss kill switch.
Rule: ikiwa realized + unrealized PnL tangu midnight UTC inadrop chini ya -X% ya starting daily balance, bot inakoma kufungua new positions na (optionally) inaflattens existing zone. Typical X: 5-10%.
Math: bot na 60% expected win rate ina perhaps 5% chance ya 10-trade losing streak. Bila kill switch, streak hiyo inacompound: $200 loss → bot inaendelea kutrade → another $200 loss → wallet down 40%. Na switch firing kwa -10%, bad day inacap kwa $200, na kesho bot inaanza fresh.
Switch inaenforced server-side: andika halt file au weka database flag ambayo trading loop inacheck kila iteration. Restart tu baada ya manual review.
Halt sentinels (file-based emergency stop)
Simplest possible halt mechanism: bot inacheck kwa file (mfano /opt/pmt/HALT) kila loop iteration na inakoma trading ikiwa file inakuwepo.
def trading_loop():
while True:
if os.path.exists("/opt/pmt/HALT"):
log("HALT file detected, sleeping")
time.sleep(30)
continue
run_one_iteration()
time.sleep(5)
Kuhalt mara moja kutoka popote (SSH, Telegram bot, monitoring system): touch /opt/pmt/HALT. Kuresume: rm /opt/pmt/HALT.
File-based approach ni intentionally low-tech kwa sababu inafanya kazi chini ya conditions ambapo more sophisticated halt mechanisms zinafail: wakati bot ni partially crashed, wakati database ni unreachable, wakati API key imerate-limited. File-system access daima inapatikana.
Fill-rate watchdog
Strategy inadhani FOK orders zinafill kwa rate fulani (mara nyingi 60-80%). Wakati rate inadrop significantly, kitu kimebadilika: market makers walipull, strategy yako ilipata identified, API outage iko ongoing. Whatever reason, assumption iliyodrive strategy PnL math imebreak.
Watchdog logic: rolling 24-hour fill-rate count. Ikiwa < 30% (au 50% ya expected), alert + auto-halt. Resume tu baada ya manual review.
Watchdog pia ni useful kama diagnostic. Sudden fill-rate drop kawaida inacorrelate na external event (Polymarket deploy, Polygon congestion, IP yako kupata rate-limited) ambayo ungetaka kujua bila kujali trading impact.
Reconcile diary vs on-chain kwenye restart
Bot inadumisha diary ya positions inayoshikilia. Chain inadumisha truth. Wanapaswa daima kuagree; wakati hawagree, bot inaopera kwenye wrong belief na itatrade incorrectly.
Reconciliation logic: kwenye kila restart na mara moja per hour wakati wa normal operation, fetch on-chain balances kwa kila token bot imegusa. Linganisha dhidi ya diary; alert + halt ikiwa token yoyote balance inadiffer kutoka diary kwa zaidi ya rounding tolerance.
Most common cause ya divergence ni successful order ambayo bot API call ilikosa (timeout, retry kamwe haijarekodi). Chain ina position; bot inadhani haina. Bila reconciliation, bot haitapost take-profit exit na position inariden hadi resolution.
Code: production-grade halt-aware loop
Reference: production trading loop na risk controls zote zimewired.
def production_loop():
while True:
# Halt checks
if os.path.exists("/opt/pmt/HALT"):
sleep_with_log(30); continue
if daily_pnl_below_threshold():
create_halt("daily PnL kill"); continue
# Reconcile every hour
if now() - last_reconcile > 3600:
ok = reconcile_diary_vs_chain()
last_reconcile = now()
if not ok: create_halt("reconciliation failed"); continue
# Fill-rate watchdog
if recent_fill_rate() < 0.30:
create_halt("fill rate collapse"); continue
# Strategy
try:
run_strategy_once()
except Exception as e:
log_exception(e)
if consecutive_exceptions >= 5:
create_halt(f"exceptions: {e}"); continue
time.sleep(5)
Pattern: kila iteration inapita kupitia gate. Strategy bugs haziwezi kubypass controls, by construction.





