कुछ भी नहीं होता: गैर-खेल Polymarket बाज़ारों में हमेशा ‘No’ खरीदने वाला बॉट
(github.com/sterlingcrispin)- Polymarket के गैर-खेल yes/no मार्केट्स में अपने-आप सिर्फ ‘No’ पोज़िशन खरीदने वाला एक asynchronous Python बॉट, जिसे मनोरंजन के उद्देश्य से उपलब्ध कराया गया है
- paper trading और live trading मोड अलग हैं, और live trading के लिए कई environment variables और private key सेटिंग्स अनिवार्य हैं
- dashboard interface के ज़रिए स्थिति मॉनिटर की जा सकती है, और order submission सक्षम होने पर real-time recovery state सेव की जाती है
- Heroku deployment scripts शामिल हैं, जो ऐप की स्थिति जांचने, logs देखने, live trading चालू करने, और process बंद करने जैसे कामों को automate करते हैं
- testing और data management tools शामिल हैं, इसलिए इसे local और cloud दोनों environments में सुरक्षित रूप से चलाया और verify किया जा सकता है
अवलोकन
- Nothing Ever Happens Polymarket प्लेटफ़ॉर्म के गैर-खेल yes/no मार्केट्स में हमेशा ‘No’ पोज़िशन खरीदने वाला asynchronous Python-आधारित बॉट है
- इसे मनोरंजन के उद्देश्य से उपलब्ध कराया गया है, और बिना किसी वारंटी या ज़िम्मेदारी के, उपयोगकर्ता के अपने जोखिम पर चलाया जाता है
- repository
bot/,scripts/,tests/directories से बनी है, जिनमें क्रमशः trading logic, operations scripts, और test code शामिल हैं
runtime संरचना
- runtime स्वतंत्र मार्केट्स को स्कैन करता है, और सेट की गई price ceiling से नीचे वाले ‘No’ entries को खोजकर पोज़िशन को ट्रैक करता है
- dashboard के माध्यम से स्थिति दिखाई जाती है, और यदि order submission सक्षम हो तो real-time recovery state सेव की जाती है
- execution module
nothing_happensहै, और निष्क्रिय मोड में PaperExchangeClient का उपयोग किया जाता है
safety model
- वास्तविक orders भेजने के लिए नीचे दिए गए तीनों environment variables सेट होना ज़रूरी है
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_RUN=false
- ऊपर की शर्तों में से एक भी न होने पर यह paper trading mode में बदल जाता है
- live trading mode में अतिरिक्त रूप से ये environment variables भी चाहिए
PRIVATE_KEYFUNDER_ADDRESS(signature type 1, 2 के लिए)DATABASE_URLPOLYGON_RPC_URL(proxy wallet approval और redemption के लिए)
setup और configuration
- installation के लिए
pip install -r requirements.txtचलाने के बाद example config file को कॉपी करके local configuration के रूप में इस्तेमाल किया जाता है config.jsonमें गैर-गोपनीय runtime settings होती हैं, जबकि.envमें secret keys और execution flags होते हैं- runtime settings
strategies.nothing_happensके अंतर्गत होती हैं, औरCONFIG_PATHenvironment variable से किसी दूसरे config file को चुना जा सकता है
local execution
- local में
python -m bot.mainकमांड से इसे चलाया जा सकता है - dashboard
$PORTयाDASHBOARD_PORTenvironment variable से bind होता है
Heroku deployment workflow
- Heroku environment में
HEROKU_APP_NAMEका उपयोग किया जाता है या explicit app name argument दिया जाता है - दिए गए scripts:
alive.sh: ऐप की स्थिति जांचनाlogs.sh: logs देखनाlive_enabled.sh/live_disabled.sh: live trading mode बदलनाkill.sh: process बंद करना
- सामान्य deployment प्रक्रिया इस प्रकार है
- environment variables सेट करना (
BOT_MODE,DRY_RUN,LIVE_TRADING_ENABLED,PRIVATE_KEY,FUNDER_ADDRESS,POLYGON_RPC_URL,DATABASE_URL) git push heroku <branch>:mainheroku ps:scale web=1 worker=0
- environment variables सेट करना (
workerprocess को अगर अनजाने में चल जाए तो जल्दी fail होने के लिए डिज़ाइन किया गया है
परीक्षण
- tests
pytestका उपयोग करके unit और regression verification करते हैं - कमांड:
python -m pytest -q
शामिल scripts
-
scripts/db_stats.py- real-time database tables की संख्या और हाल की activity की जांच
-
scripts/export_db.pyDATABASE_URLया Heroku app से tables export करना
-
scripts/wallet_history.py- configured wallet की positions, trades, और balance देखना
-
scripts/parse_logs.py- Heroku JSON logs को terminal या HTML format में convert करना
repository management
- local settings, ledgers, exported data, reports, और deployment artifacts को default रूप से git से बाहर रखा जाता है
- repository को production environment और local environment को साफ़ तौर पर अलग रखने के लिए संरचित किया गया है
1 टिप्पणियां
Hacker News की राय
इस ट्वीट को देखें तो साफ़ लिखा है कि मुनाफ़े या रिफंड का कोई वादा नहीं है
यह बस meme-based code से मज़े के लिए बनाया गया प्रोजेक्ट लगता है. धोखाधड़ी से ज़्यादा एक मज़ेदार प्रयोग जैसा है
एक आँकड़ा है कि Polymarket के लगभग 73% नतीजे वास्तव में ‘No’ पर खत्म होते हैं
अगर आपको data analysis में रुचि है, तो Hugging Face dataset देखना उपयोगी हो सकता है
इंसानी optimism bias की वजह से ‘Yes’ साइड शायद ज़्यादा मूल्यांकित हो सकती है, लेकिन Polymarket पर traders पहले से नज़र रखे हुए हैं, इसलिए कीमतें काफ़ी यथार्थवादी बनती हैं
अगर गिरते हुए coins पर bet लगाया जा सकता, तो दिलचस्प होता, लेकिन ऐसे बाज़ारों में भी आख़िरकार कीमतें कुशलता से समायोजित हो जातीं
यह दिलचस्प है कि यह प्रोजेक्ट non-sports market के लिए है
sports betting में भी आम तौर पर माना जाता है कि ज़्यादातर मामलों में ‘No’ साइड ज़्यादा return देती है. ‘Yes’ ज़्यादा रोमांचक होता है, इसलिए लोग उसकी ओर खिंचते हैं
आख़िरकार, ‘उबाऊ betting’ लंबी अवधि में बेहतर return दे सकती है
sports betting से मिली ऐसी behavioral economics वाली समझ शायद non-sports markets पर भी लागू हो सकती है
आख़िरकार कीमतों को सही जगह लाने वाला एक feedback loop बन जाता है
इसलिए अगर कोई सचमुच profit देने वाली strategy मिले, तो उसे open source में जारी करने के बजाय चुपचाप चलाना ही समझदारी है
‘हमेशा No पर bet करो’ वाला विचार मज़ेदार है, लेकिन असल में यह कितना मुनाफ़ेदार है, इसकी जाँच ज़रूरी है
हक़ीक़त में liquidity कम होती है, और एक बार का नुकसान कई बार के फ़ायदे मिटा सकता है
sports market तो उल्टा स्पष्ट end time और बड़े trading volume की वजह से ज़्यादा predictible होते हैं
बस हर चीज़ पर No लगाने के बजाय, जब कोई news अभी-अभी निकलनी शुरू हो, तब उससे जुड़े items पर No लगाओ, तो शायद काफ़ी स्थिर मुनाफ़ा मिल सकता है
इसे इंसानी imagination arbitrage कहा जा सकता है
लोगों को सनसनीखेज़ परिदृश्य पसंद आते हैं, लेकिन वास्तविकता ज़्यादातर उबाऊ होती है
मैंने भी financial crisis और COVID के दौरान इस पैटर्न से मुनाफ़ा कमाया था
अभी AI bubble की चिंता है, लेकिन तेज़ गिरावट के बजाय यह धीरे-धीरे ठंडा पड़ेगा, ऐसा लगता है, इसलिए मैंने bonds और cash का अनुपात बढ़ा रखा है
दावा किया गया कि ‘No’ पर bet करना दरअसल बाकी सभी नतीजों पर ‘Yes’ लगाने जैसा है
Polymarket docs में इससे जुड़ी गणना है
ऐसी strategy कुछ-कुछ चलती ट्रेन के आगे सिक्के बटोरने जैसी है
छोटे-छोटे फ़ायदे बार-बार मिलते हैं, लेकिन एक long-tail event सब कुछ मिटा सकता है
संबंधित research के तौर पर Prediction Market Microstructure है
(पिछली चर्चा: HN link)
मेरा मानना है कि market में price-in होना पहले ही हो चुका है
संबंधित ट्वीट देखें
संदर्भ लिंक
आख़िरकार समय के साथ realized volatility, implied volatility से कम निकलने की प्रवृत्ति रखती है
बेशक, एक बार कुछ बड़ा हुआ तो भारी नुकसान भी हो सकता है
सिर्फ़ इसलिए कि ‘No’ 70% बार आता है, इसका मतलब यह नहीं कि आप पैसा कमा लेंगे
यह क्लासिक खराब गणित है. यह ‘steamroller के आगे सिक्के बटोरने’ जैसी strategy है
लेकिन ऐसे inefficient markets छोटे और दुर्लभ होते हैं, इसलिए आख़िर में ‘सिक्के तो मिलेंगे, पर बस सिक्के ही’ वाली स्थिति हो सकती है
Kelly criterion मानने पर भी अगर random betting की जाए, तो आख़िरकार capital खत्म होने की संभावना काफ़ी रहती है. हर market के लिए गहन analysis (DD) ज़रूरी है