1 คะแนน โดย GN⁺ 15 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บอต Python แบบอะซิงโครนัสสำหรับตลาดทำนายผลแบบใช่/ไม่ใช่ของ Polymarket ที่ ไม่ใช่กีฬา โดยจะ ซื้อเฉพาะโพสิชัน ‘No’ อัตโนมัติ และมีไว้เพื่อความบันเทิง
  • แยก โหมดเทรดจำลองและโหมดเทรดจริง ออกจากกัน และเมื่อเทรดจริงจำเป็นต้องตั้งค่า ตัวแปรสภาพแวดล้อมหลายรายการและ private key
  • มี อินเทอร์เฟซแดชบอร์ด สำหรับติดตามสถานะ และเมื่อเปิดใช้งานการส่งคำสั่งซื้อ จะ บันทึกสถานะการกู้คืนแบบเรียลไทม์
  • มี สคริปต์ดีพลอยบน Heroku สำหรับทำงานอัตโนมัติ เช่น ตรวจสอบสถานะแอป ดูล็อก สลับเป็นโหมดเทรดจริง และหยุดโปรเซส
  • มี เครื่องมือสำหรับทดสอบและจัดการข้อมูล ทำให้สามารถรันและตรวจสอบได้อย่างปลอดภัยทั้งในเครื่องและบนคลาวด์

ภาพรวม

  • Nothing Ever Happens เป็นบอตที่พัฒนาด้วย Python แบบอะซิงโครนัส ซึ่งในตลาดทำนายผลแบบใช่/ไม่ใช่ของ Polymarket ที่ ไม่ใช่กีฬา จะคอย ซื้อโพสิชัน ‘No’ เสมอ
  • ให้บริการเพื่อ วัตถุประสงค์ด้านความบันเทิง และ ไม่มีการรับประกันหรือความรับผิดใด ๆ โดยผู้ใช้ต้องรับความเสี่ยงเอง
  • รีโพซิทอรีประกอบด้วยไดเรกทอรี bot/, scripts/, tests/ ซึ่งเก็บ ตรรกะการเทรด, สคริปต์ปฏิบัติการ, และโค้ดทดสอบ ตามลำดับ

โครงสร้างรันไทม์

  • รันไทม์จะ สแกนตลาดแบบอิสระ และค้นหา รายการ ‘No’ ที่มีราคาไม่เกินเพดานราคาที่ตั้งไว้เพื่อติดตามโพสิชัน
  • แสดงสถานะผ่าน แดชบอร์ด และ จะบันทึกสถานะการกู้คืนแบบเรียลไทม์เมื่อเปิดใช้งานการส่งคำสั่งซื้อ
  • โมดูลที่ใช้รันคือ nothing_happens และใน โหมดไม่ทำงานจริง จะใช้ PaperExchangeClient

โมเดลความปลอดภัย

  • หากต้องการส่งคำสั่งซื้อจริง ต้องตั้งค่าตัวแปรสภาพแวดล้อมทั้งสามรายการต่อไปนี้ครบถ้วน
    • BOT_MODE=live
    • LIVE_TRADING_ENABLED=true
    • DRY_RUN=false
  • หากขาดเงื่อนไขข้อใดข้อหนึ่ง จะสลับไปเป็น โหมดเทรดจำลอง
  • ในโหมดเทรดจริง ยังต้องมีตัวแปรสภาพแวดล้อมเพิ่มเติมดังนี้
    • PRIVATE_KEY
    • FUNDER_ADDRESS (สำหรับ signature type 1, 2)
    • DATABASE_URL
    • POLYGON_RPC_URL (สำหรับการอนุมัติกระเป๋าแบบพร็อกซีและการแลกคืน)

การตั้งค่าและคอนฟิก

  • การติดตั้งทำได้ด้วย pip install -r requirements.txt จากนั้นคัดลอกไฟล์คอนฟิกตัวอย่างมาใช้เป็นการตั้งค่าในเครื่อง
  • config.json มีไว้สำหรับ การตั้งค่ารันไทม์ที่ไม่เป็นความลับ ส่วน .env ใช้เก็บ คีย์ลับและแฟล็กการทำงาน
  • การตั้งค่ารันไทม์อยู่ภายใต้ strategies.nothing_happens และสามารถระบุไฟล์คอนฟิกอื่นได้ผ่านตัวแปรสภาพแวดล้อม CONFIG_PATH

การรันในเครื่อง

  • ในเครื่องสามารถรันได้ด้วยคำสั่ง python -m bot.main
  • แดชบอร์ดจะ bind กับตัวแปรสภาพแวดล้อม $PORT หรือ DASHBOARD_PORT

เวิร์กโฟลว์การดีพลอยบน Heroku

  • ในสภาพแวดล้อม Heroku สามารถใช้ HEROKU_APP_NAME หรือส่งอาร์กิวเมนต์ชื่อแอปแบบระบุชัดเจนได้
  • สคริปต์ที่มีให้:
    • alive.sh: ตรวจสอบสถานะแอป
    • logs.sh: ดูล็อก
    • live_enabled.sh / live_disabled.sh: สลับโหมดเทรดจริง
    • kill.sh: หยุดโปรเซส
  • ขั้นตอนการดีพลอยทั่วไปมีดังนี้
    • ตั้งค่าตัวแปรสภาพแวดล้อม (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 ถูกออกแบบให้ ล้มเหลวอย่างรวดเร็วหากถูกรันโดยไม่ตั้งใจ

การทดสอบ

  • การทดสอบใช้ pytest เพื่อตรวจสอบแบบ unit และ regression
  • คำสั่ง: python -m pytest -q

สคริปต์ที่รวมมาให้

  • scripts/db_stats.py

    • ตรวจสอบจำนวนตารางในฐานข้อมูลแบบเรียลไทม์และกิจกรรมล่าสุด
  • scripts/export_db.py

    • ส่งออกตารางจาก DATABASE_URL หรือจากแอป Heroku
  • scripts/wallet_history.py

    • ดูโพสิชัน ธุรกรรม และยอดคงเหลือของกระเป๋าที่ตั้งค่าไว้
  • scripts/parse_logs.py

    • แปลงล็อก JSON ของ Heroku เป็น รูปแบบเทอร์มินัลหรือ HTML

การจัดการรีโพซิทอรี

  • การตั้งค่าในเครื่อง เลดเจอร์ ข้อมูลที่ส่งออก รายงาน และอาร์ติแฟกต์จากการดีพลอย จะ ถูกยกเว้นจาก git โดยค่าเริ่มต้น
  • รีโพซิทอรีถูกจัดโครงสร้างให้ แยกสภาพแวดล้อมการปฏิบัติการและสภาพแวดล้อมในเครื่องออกจากกันอย่างชัดเจน

1 ความคิดเห็น

 
GN⁺ 15 일 전
ความเห็นจาก Hacker News
  • ถ้าดู ทวีตนี้ ก็มีระบุชัดว่าไม่ได้รับประกันผลตอบแทนหรือการคืนเงิน
    ดูเหมือนเป็นโปรเจ็กต์ที่ทำขึ้นขำ ๆ ด้วย โค้ดสายมีม มากกว่า
    ให้ความรู้สึกเหมือนการทดลองตลก ๆ มากกว่าจะเป็นการหลอกลวง

    • ใช่ บอทนี้ไม่มี การจัดการความเสี่ยง เลย และใน GitHub ก็เขียนชัดว่าเป็นมีม
      มีสถิติว่าใน Polymarket ประมาณ 73% ลงท้ายด้วย ‘No’ จริง ๆ
      ถ้าสนใจวิเคราะห์ข้อมูล ลองดู ชุดข้อมูลบน Hugging Face ได้
    • ถ้าอย่างนั้นก็แปลว่าไม่ใช่ กลยุทธ์การเทรด ที่เอาไปใช้จริงได้มากนัก
      เพราะอคติด้านการมองโลกในแง่ดีของมนุษย์ ฝั่ง ‘Yes’ อาจถูกประเมินมูลค่าสูงเกินจริงได้ แต่ใน Polymarket ก็มีเทรดเดอร์จับตาอยู่แล้ว เลยทำให้ราคาออกมาค่อนข้างสมจริง
      ถ้าสามารถเดิมพันกับเหรียญที่กำลังลงได้ก็น่าสนใจ แต่ตลาดแบบนั้นสุดท้ายก็น่าจะถูกปรับราคาอย่างมีประสิทธิภาพอยู่ดี
    • ถ้าคนเจอ กลยุทธ์ที่ทำกำไรได้จริง เขามักไม่ค่อยเอามาแชร์กัน
    • คำว่า “โค้ดสายมีม” นี่ตลกมาก เหมือน มุกเนิร์ด ๆ แบบนี้แหละที่จุดกระแสถกเถียงขึ้นมา
    • ตลาดหลายอันเชื่อมโยงกันอยู่ ดังนั้นที่ ‘No’ ออกมามากกว่าก็เป็นเรื่องปกติ เช่น ถ้ามีผู้สมัคร 10 คน ก็จะมี 9 คนที่จบด้วย ‘No’
  • น่าสนใจที่โปรเจ็กต์นี้ทำมาสำหรับ ตลาดที่ไม่ใช่กีฬา
    ในการเดิมพันกีฬาก็เป็นที่รู้กันว่าฝั่ง ‘No’ มักให้ผลตอบแทนดีกว่าในหลายกรณี เพราะฝั่ง ‘Yes’ ดูน่าตื่นเต้นกว่าและดึงคนเข้าไปมากกว่า
    สุดท้ายแล้ว การเดิมพันที่น่าเบื่อ อาจให้ผลตอบแทนระยะยาวดีกว่า
    ข้อค้นพบเชิง เศรษฐศาสตร์พฤติกรรม ที่สั่งสมมาจากการเดิมพันกีฬาอาจนำมาใช้กับตลาดที่ไม่ใช่กีฬาได้เหมือนกัน

    • จากโครงสร้างแบ็กเอนด์ของ Polymarket การเดิมพันกีฬาก็จริง ๆ แล้วอยู่ในรูปแบบ Yes/No เหมือนกัน เลยแยกกันไม่ชัดนัก
    • กลยุทธ์แบบนี้ช่วงแรกอาจมี มูลค่าคาดหวังเป็นบวก (EV) แต่พอคนเริ่มจับทางได้ ตลาดก็จะปรับตัวจนมีประสิทธิภาพมากขึ้น
      สุดท้ายจะเกิด วงจรป้อนกลับ ที่ทำให้ราคากลับไปอยู่ในระดับเหมาะสม
      เพราะงั้นถ้าเจอกลยุทธ์ที่ทำกำไรได้จริง ก็อย่าเอาไปโอเพนซอร์ส ปล่อยให้มันรันเงียบ ๆ จะฉลาดกว่า
  • ไอเดีย “เดิมพันฝั่ง No ตลอด” ฟังดูสนุกดี แต่ในทางปฏิบัติจะ ทำกำไรได้แค่ไหน ยังต้องพิสูจน์กันอีก

    • ผมก็ลองแบ็กเทสต์เหมือนกัน แม้จะดูเหมือน APR 100% แต่มีส่วนที่โกงอยู่ตรงที่รู้ เวลาที่ผลลัพธ์จะเกิดขึ้น ล่วงหน้า
      ในโลกจริงสภาพคล่องต่ำ และการขาดทุนครั้งเดียวอาจล้างกำไรจากหลายครั้งก่อนหน้าได้
      ตลาดกีฬากลับคาดเดาได้มากกว่า เพราะมีเวลาจบที่ชัดเจนและมีปริมาณการซื้อขายสูง
    • ผมก็ชอบตลาดพยากรณ์และลองมาหลายกลยุทธ์แล้ว โดย จังหวะเวลา คือหัวใจสำคัญ
      ไม่ใช่แค่ลง No ทุกอันแบบสุ่ม ๆ แต่ถ้าลง No ในหัวข้อที่เกี่ยวข้องตั้งแต่ตอนที่ข่าวเพิ่งเริ่มออก อาจทำกำไรได้ค่อนข้างสม่ำเสมอ
  • ผมมองว่ามันคือ การเก็งกำไรจากจินตนาการของมนุษย์
    คนชอบสถานการณ์หวือหวา แต่ความจริงส่วนใหญ่มักน่าเบื่อ

    • ผู้คนมักประเมิน เหตุการณ์ Black Swan ต่ำเกินไป แต่พอมันเกิดขึ้นจริงก็จะตอบสนองเกินเหตุ
      ผมเองก็เคยทำกำไรจากแพตเทิร์นนี้ตอนวิกฤตการเงินกับช่วงโควิด
      ตอนนี้ก็กังวลเรื่องฟองสบู่ AI แต่คิดว่าคงไม่ได้พังฮวบ แค่น่าจะค่อย ๆ เย็นลง เลยเพิ่มสัดส่วนพันธบัตรกับเงินสดไว้
    • แต่ถ้าบอทแบบนี้ถูกนำไปใช้กับเหตุการณ์ทางทหารหรือการเมือง ก็อาจทำให้เกิดแรงจูงใจให้ใครบางคนพยายามทำให้ฝั่ง ‘Yes’ กลายเป็นจริง
    • นั่นแหละคือเหตุผลที่ตลาดไม่ได้ถูกตั้งราคาอย่างสม่ำเสมอ
    • ปัญหาคือ ตรรกะแบบนี้ในฐานะกลยุทธ์จริงกลับ ใช้ไม่ได้ผลนัก
  • มีคนบอกว่าการเดิมพันฝั่ง ‘No’ ก็เท่ากับเดิมพัน ‘Yes’ กับผลลัพธ์อื่นทั้งหมดนั่นเอง
    ใน เอกสารของ Polymarket มีการคำนวณที่เกี่ยวข้องอยู่

    • แต่นั่นเป็นความเข้าใจผิด เช่น “Joe Dart ชนะเลือกตั้งประธานาธิบดี Y/N” กับ “Cory Wong ชนะเลือกตั้งประธานาธิบดี Y/N” เป็นคนละตลาดที่อิสระต่อกัน
    • ใช่ แต่ละผลลัพธ์ ไม่ได้เชื่อมโยงกัน
  • กลยุทธ์นี้เหมือน เก็บเหรียญหน้าารถไฟ
    ได้กำไรเล็ก ๆ ซ้ำ ๆ แต่เจอเหตุการณ์หางยาวครั้งเดียวก็อาจเสียหมด

    • ผู้เขียนเองก็คงไม่ได้เสนอสิ่งนี้เป็นกลยุทธ์จริงจัง แค่น่าจะทำเป็น โปรเจ็กต์สายมีม
    • ถ้าไม่ได้ทุ่มเงินทั้งหมดกับเหตุการณ์เดียว ความเสียหายก็จะจำกัดอยู่แค่เงินที่ลงเดิมพัน
  • มีงานวิจัยที่เกี่ยวข้องคือ Prediction Market Microstructure
    (การถกเถียงก่อนหน้า: ลิงก์ HN)

  • ผมคิดว่าตลาด สะท้อนราคา ไปหมดแล้ว

    • ผู้เขียนเองก็พูดไว้ว่า “ในระยะยาวควรซื้อเมื่อราคาต่ำกว่า 0.73”
      ดู ทวีตที่เกี่ยวข้อง
    • แต่การมีอยู่ของตลาดเองก็อาจไปกระตุ้น availability heuristic ทำให้ผู้คนประเมินความน่าจะเป็นสูงเกินจริง
      ดู ลิงก์อ้างอิง
    • คำว่า “ไม่มีอะไรเกิดขึ้น” นี่ตรงมาก
    • พูดถึง Benjamin แบบนี้ก็น่าสนใจดี
  • สุดท้ายแล้ว ความผันผวนที่เกิดขึ้นจริง มักมีแนวโน้มต่ำกว่า ความผันผวนโดยนัย เมื่อเวลาผ่านไป

    • คนมักจ่ายแพงเกินไปเพื่อ ป้องกัน skew และถ้าขายสิ่งนั้นก็อาจทำกำไรได้เรื่อย ๆ
      แน่นอนว่าถ้าเกิดเหตุหนักขึ้นมาครั้งหนึ่งก็อาจขาดทุนหนักได้
  • แค่เพราะ ‘No’ ออกมา 70% ไม่ได้แปลว่าจะทำเงินได้
    นี่เป็น คณิตศาสตร์ที่ผิดพลาด แบบคลาสสิก เป็นกลยุทธ์แนว “เก็บเหรียญหน้า steamroller”

    • คงไม่มีใครถูกหลอกหรอก ผู้เขียนก็น่าจะทำไว้ ขำ ๆ มากกว่า
    • ถ้าไม่ใช้เลเวอเรจ กลยุทธ์แบบนี้ก็มีความเสี่ยงจำกัด
      แต่ตลาดที่ไม่มีประสิทธิภาพแบบนี้ มีขนาดเล็กและพบได้น้อย สุดท้ายอาจเป็นแค่ “เก็บได้ก็แค่เหรียญไม่กี่เหรียญ”
    • จะกำไรหรือไม่ขึ้นอยู่กับตัวแปรอย่าง ราคาตอนเข้า, มูลค่าคาดหวัง, เวลาคงเหลือ เป็นต้น
      ต่อให้ใช้เกณฑ์ Kelly ถ้าลงแบบสุ่ม ๆ สุดท้ายก็มีโอกาสสูงที่เงินทุนจะหมดอยู่ดี ต้องทำ การวิเคราะห์เชิงลึก (DD) แยกเป็นแต่ละตลาด