1 पॉइंट द्वारा GN⁺ 18 일 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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=live
    • LIVE_TRADING_ENABLED=true
    • DRY_RUN=false
  • ऊपर की शर्तों में से एक भी न होने पर यह paper trading mode में बदल जाता है
  • live trading mode में अतिरिक्त रूप से ये environment variables भी चाहिए
    • PRIVATE_KEY
    • FUNDER_ADDRESS (signature type 1, 2 के लिए)
    • DATABASE_URL
    • POLYGON_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_PATH environment variable से किसी दूसरे config file को चुना जा सकता है

local execution

  • local में python -m bot.main कमांड से इसे चलाया जा सकता है
  • dashboard $PORT या DASHBOARD_PORT environment 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>:main
    • heroku ps:scale web=1 worker=0
  • worker process को अगर अनजाने में चल जाए तो जल्दी fail होने के लिए डिज़ाइन किया गया है

परीक्षण

  • tests pytest का उपयोग करके unit और regression verification करते हैं
  • कमांड: python -m pytest -q

शामिल scripts

  • scripts/db_stats.py

    • real-time database tables की संख्या और हाल की activity की जांच
  • scripts/export_db.py

    • DATABASE_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 टिप्पणियां

 
GN⁺ 18 일 전
Hacker News की राय
  • इस ट्वीट को देखें तो साफ़ लिखा है कि मुनाफ़े या रिफंड का कोई वादा नहीं है
    यह बस meme-based code से मज़े के लिए बनाया गया प्रोजेक्ट लगता है. धोखाधड़ी से ज़्यादा एक मज़ेदार प्रयोग जैसा है

    • सही है. बॉट में risk management बिल्कुल नहीं है, और GitHub पर भी साफ़ लिखा है कि यह meme है
      एक आँकड़ा है कि Polymarket के लगभग 73% नतीजे वास्तव में ‘No’ पर खत्म होते हैं
      अगर आपको data analysis में रुचि है, तो Hugging Face dataset देखना उपयोगी हो सकता है
    • तो इसका मतलब यह है कि यह वास्तव में इस्तेमाल करने लायक trading strategy नहीं है
      इंसानी optimism bias की वजह से ‘Yes’ साइड शायद ज़्यादा मूल्यांकित हो सकती है, लेकिन Polymarket पर traders पहले से नज़र रखे हुए हैं, इसलिए कीमतें काफ़ी यथार्थवादी बनती हैं
      अगर गिरते हुए coins पर bet लगाया जा सकता, तो दिलचस्प होता, लेकिन ऐसे बाज़ारों में भी आख़िरकार कीमतें कुशलता से समायोजित हो जातीं
    • लोग अगर सच में profit देने वाली strategy ढूँढ़ लें, तो उसे आमतौर पर साझा नहीं करते
    • “meme-based code” वाली अभिव्यक्ति बहुत मज़ेदार है. लगता है ऐसी nerdy शरारत ने ही चर्चा को भड़का दिया
    • कई बाज़ार आपस में जुड़े हुए हैं, इसलिए ‘No’ ज़्यादा आने का यह कारण स्वाभाविक है. उदाहरण के लिए 10 उम्मीदवार हों, तो 9 का अंत ‘No’ से होगा
  • यह दिलचस्प है कि यह प्रोजेक्ट non-sports market के लिए है
    sports betting में भी आम तौर पर माना जाता है कि ज़्यादातर मामलों में ‘No’ साइड ज़्यादा return देती है. ‘Yes’ ज़्यादा रोमांचक होता है, इसलिए लोग उसकी ओर खिंचते हैं
    आख़िरकार, ‘उबाऊ betting’ लंबी अवधि में बेहतर return दे सकती है
    sports betting से मिली ऐसी behavioral economics वाली समझ शायद non-sports markets पर भी लागू हो सकती है

    • Polymarket के backend structure की वजह से sports betting भी दरअसल Yes/No form में ही होती है, इसलिए यह फ़र्क थोड़ा धुंधला है
    • ऐसी strategy शुरुआत में positive expected value (EV) दे सकती है, लेकिन जैसे ही लोग इसे समझेंगे, market कुशलतापूर्वक फिर से adjust हो जाएगा
      आख़िरकार कीमतों को सही जगह लाने वाला एक feedback loop बन जाता है
      इसलिए अगर कोई सचमुच profit देने वाली strategy मिले, तो उसे open source में जारी करने के बजाय चुपचाप चलाना ही समझदारी है
  • ‘हमेशा No पर bet करो’ वाला विचार मज़ेदार है, लेकिन असल में यह कितना मुनाफ़ेदार है, इसकी जाँच ज़रूरी है

    • मैंने भी backtest किया था, लेकिन 100% APR जैसा दिखने के बावजूद उसमें result timing पहले से जानने जैसी cheating शामिल थी
      हक़ीक़त में liquidity कम होती है, और एक बार का नुकसान कई बार के फ़ायदे मिटा सकता है
      sports market तो उल्टा स्पष्ट end time और बड़े trading volume की वजह से ज़्यादा predictible होते हैं
    • मुझे भी prediction markets पसंद हैं, इसलिए मैंने कई strategies आज़माई हैं, और timing ही सबसे अहम है
      बस हर चीज़ पर No लगाने के बजाय, जब कोई news अभी-अभी निकलनी शुरू हो, तब उससे जुड़े items पर No लगाओ, तो शायद काफ़ी स्थिर मुनाफ़ा मिल सकता है
  • इसे इंसानी imagination arbitrage कहा जा सकता है
    लोगों को सनसनीखेज़ परिदृश्य पसंद आते हैं, लेकिन वास्तविकता ज़्यादातर उबाऊ होती है

    • लोग black swan events को कम आँकते हैं, लेकिन जब वे सच में होते हैं, तो ज़रूरत से ज़्यादा प्रतिक्रिया देते हैं
      मैंने भी financial crisis और COVID के दौरान इस पैटर्न से मुनाफ़ा कमाया था
      अभी AI bubble की चिंता है, लेकिन तेज़ गिरावट के बजाय यह धीरे-धीरे ठंडा पड़ेगा, ऐसा लगता है, इसलिए मैंने bonds और cash का अनुपात बढ़ा रखा है
    • लेकिन अगर ऐसा bot military या political घटनाओं पर लागू हो, तो किसी के लिए ‘Yes’ को वास्तविकता में बदलने का प्रोत्साहन बन सकता है
    • इसी वजह से market में हर चीज़ की कीमत एकसमान तरीके से तय नहीं होती
    • समस्या यह है कि यह तर्क वास्तविक strategy के रूप में ठीक से काम नहीं करता
  • दावा किया गया कि ‘No’ पर bet करना दरअसल बाकी सभी नतीजों पर ‘Yes’ लगाने जैसा है
    Polymarket docs में इससे जुड़ी गणना है

    • लेकिन यह ग़लतफ़हमी है. उदाहरण के लिए “Joe Dart wins presidency Y/N” और “Cory Wong wins presidency Y/N” एक-दूसरे से स्वतंत्र हैं
    • सही. हर नतीजा एक-दूसरे से जुड़ा हुआ नहीं है
  • ऐसी strategy कुछ-कुछ चलती ट्रेन के आगे सिक्के बटोरने जैसी है
    छोटे-छोटे फ़ायदे बार-बार मिलते हैं, लेकिन एक long-tail event सब कुछ मिटा सकता है

    • लेखक ने भी इसे कोई गंभीर strategy के रूप में पेश नहीं किया, बल्कि शायद meme project की तरह बनाया है
    • अगर एक ही event पर पूरी रकम न लगाई जाए, तो नुकसान bet की गई राशि तक सीमित रहता है
  • संबंधित research के तौर पर Prediction Market Microstructure है
    (पिछली चर्चा: HN link)

  • मेरा मानना है कि market में price-in होना पहले ही हो चुका है

    • लेखक ने भी कहा है कि “लंबी अवधि में 0.73 से नीचे खरीदना चाहिए”
      संबंधित ट्वीट देखें
    • लेकिन market का अस्तित्व ही availability heuristic को उकसा सकता है, जिससे लोग probability को ज़्यादा आँक सकते हैं
      संदर्भ लिंक
    • “कुछ भी नहीं होता” यह बात बिल्कुल सटीक बैठती है
    • Benjamin का ज़िक्र दिलचस्प है
  • आख़िरकार समय के साथ realized volatility, implied volatility से कम निकलने की प्रवृत्ति रखती है

    • लोग skew protection के लिए ज़रूरत से ज़्यादा भुगतान करते हैं, और अगर आप उसे बेचें तो लगातार मुनाफ़ा कमा सकते हैं
      बेशक, एक बार कुछ बड़ा हुआ तो भारी नुकसान भी हो सकता है
  • सिर्फ़ इसलिए कि ‘No’ 70% बार आता है, इसका मतलब यह नहीं कि आप पैसा कमा लेंगे
    यह क्लासिक खराब गणित है. यह ‘steamroller के आगे सिक्के बटोरने’ जैसी strategy है

    • शायद कोई धोखा नहीं खाएगा. लेखक ने भी इसे बस मज़ाक में बनाया लगता है
    • leverage का इस्तेमाल न करें, तो ऐसी strategy का risk सीमित रहता है
      लेकिन ऐसे inefficient markets छोटे और दुर्लभ होते हैं, इसलिए आख़िर में ‘सिक्के तो मिलेंगे, पर बस सिक्के ही’ वाली स्थिति हो सकती है
    • मुनाफ़ा होगा या नहीं, यह entry price, expected value, remaining duration जैसी variables पर निर्भर करता है
      Kelly criterion मानने पर भी अगर random betting की जाए, तो आख़िरकार capital खत्म होने की संभावना काफ़ी रहती है. हर market के लिए गहन analysis (DD) ज़रूरी है