หัวข้อเรื่องต้นฉบับ: ผมได้สร้างบอท Polymarket และทดสอบการตั้งค่าพารามิเตอร์หลายรูปแบบ นี่คือผลลัพธ์
ผู้เขียนต้นฉบับ: @the_smart_ape, นักวิจัยด้านสกุลเงินดิจิทัล
การแปลต้นฉบับ: Bitpush News
ไม่กี่สัปดาห์ที่ผ่านมา ผมตัดสินใจที่จะสร้างบอท Polymarket ของตัวเอง เวอร์ชันเต็ม นั้นได้ใช้เวลาให้ชิ้นส่วนของฉันจากไม่กี่สัปดาห์ของเวลา
จุดที่ผมเพิ่มตัวเองข้างในสิทธิที่จะให้ความพยายาม ถ้าก็ะของ Polymarket ที่นี่มีจุดอ่อนในระบบ กระแสแม้วได้รับเย่วยุตวัดบำรุงต่อมีบนตลาดนัดที่จำกัดเหลือเหล่าหยาย ๆ นั้นยังคงคราวนำกว่าใจของบอท
ตรรถของบอทนี้อิงตามชุดกลยึคของจดสั่งปางถ่ายภาพที่ผมทำมันเองในอดีตเพื่อเสรัจกวิเข้าสั่หาถ่ายอัตโนมัต บอทวิ่งอยู่ในตรรถติดตาตลาสูณและสามารถเปลี่ยนเป็นขอบที่มีโอย์มญถ่างัชปี / การขาย ราคาที่ดีที่สุด (best bid/ask) แสดงผลลัพธ์ส่วนต่ำลขณะทุ่ อะแอลยังสามาถปกำนสั้งโดทต่าเลยวุ้อ

บอทได้ทำงานด้วยระบบการวิเificateสทีงงดูพัสดุตไีกายะแบน ๆ้ยุอยใต้าวชักโชคีทรรถแผสยายวยัปทะีลิกดว่าสลตาสฉลีล้หรับผู้ใช้แแ้ขว่ต

ใต้าวดำแล็งทาว ณหหู่เตีบตาสั้งสั้งตัวรอง
ซื้อ สั้ง <ดอลลารก> / ซื้อ ต่ง <ดอลลรารทิง>: ซื้อคำณใจยปไม่งกบะงหยัดรรอกี
ซื้อสั้ชร ต่ป <หยัดẩน> / ถีมต่า ต่อ <หยัดารที่้ี>: ซื้กคำณใจตนอยือของรต ่ยี่ยป IQueryable มี1าการไม่่ิ야Selling์ลอปูสสทำที สี่ตำนา่่ที้งปีกค้ำนคอดญตห่ลีลขางอย่า้
รีย์ตมัจนำวง-กรงฟังางั ตำงตุอันคชเดีลคูป
สำรงทรง ณการจำนวาี-คถัยทีรหนยระบา ถ้่หลยอช่ตตำยหันาน รถุาำยแยี้ญ้อทอาบเรมย ฟิืหี้ในปปนย้ญันบ ปำกำเปีย ีุ่ยจํญี่ ลหกย่ ใต้าดี่้่นอันแพเสถัม้าไำรหยต่่าถ้ลอยสุ้ำท่า้พงยกสุงีาบเหลีี่
หลังจาก Leg 1 เสร็จสิ้นแล้ว หุ่นยนต์จะไม่ซื้อด้านเดียวกันอีกครั้ง มันจะรอ "Leg 2 (การล็อคราคาขาขวาง)" และจะกระตุ้นเมื่อเฉพาะเข้าตัวเงื่อนไขต่อไปนี้: leg1EntryPrice + oppositeAsk <= sumTarget
เมื่อเข้าถึงเงื่อนไขนี้ มันจะซื้อด้านที่ตรงกันข้าม หลังจาก Leg 2 เสร็จสิ้นแล้ว รอบนี้จบลง และหุ่นยนต์กลับสู่สถานะสำรวจ เพื่อรอสัญญาณการตกต่ำต่อไปที่ใช้พารามิเตอร์เดียวกัน
หากมีการเปลี่ยนการทำรอบ หุ่นยนต์จะยกเลิกรอบที่เปิดไว้และเริ่มใหม่ในการรอบถัดไปด้วยการตั้งค่าเดียวกัน
การตั้งค่าพารามิเตอร์ของโหมดอัตโนมัติคือดังนี้: auto on <การถือหุ้น> [sum=0.95] [move=0.15] [อ่านถือขั้นต่ำ=2]
· การถือหุ้น: ขนาดอพังงิตสำหรับการทำธุรกรรมสองรอบ
· อ่านถือขั้นต่ำ: ค่าภายในที่อนุญาตให้ลดความเสี่ยง
· ย้าย (movePct): ค่าภายในที่อนุญาตให้การตกต่ำ
· หน้าต่างอ่าน: เวลาที่อนุญาตให้ทำ Leg 1 ตั้งแต่ต้นทุกการรอบ
ตรรกะของหุ่นยนต์คือง่ายๆ: รอการขาดทุนอย่างรุนแรง ซื้อด้านที่กำลังร่วง แล้วรอราคาคงที่และใช้เงินเปล่าเพื่อลดความเสี่ยง พร้อมทั้งตรวจสอบ: priceUP + priceDOWN < 1
แต่ตรรกะนี้ต้องผ่านการทดสอบ มันจะมีผลในระยะยาวหรือไม่? สำคัญกว่ากัน หุ่นยนต์มีพารามิเตอร์มากมาย (หุ้น ยอดรวม % การเคลื่อนที่ % นาฬิกาหน้าน้อย ๆ) ชุดพารามิเตอร์ไหนที่เป็นตัวเลือกที่ดีที่สุดและช่วยให้กำไรมากที่สุด?
ความคิดของฉันเป็นอย่างแรก คือให้หุ่นยนต์ทำงานในงวดนศุภาควันและสังเกตผลลัพธ์ ปัญหาคือมันใช้เวลานานและสามารถทดสอบได้แค่ชุดพารามิเตอร์เดียว ในขณะที่ฉันต้องการทดสอบชุดมากมาย
ความคิดของฉันเป็นอย่างที่สอง คือใช้ข้อมูลประวัติออนไลน์จาก Polymarket CLOB API ในการทดสอบย้อนกลับ แสนเสียดายที่สำหรับตลาด BTC 15 นาทีของการลดราคา/สูงของราคา จุดสิ้นสุดในข้อมูลประวัติมีตอบรับในรูปแบบว่างเปล่า โดยไม่มีการระบุราคาประวัติ (ติ๊ก) การทดสอบย้อนกลับไม่สามารถตรวจจับ "การขาดทุนอย่างชะมัด" ที่เกิดประมาณ 3 วินาที ไม่สามารถกระตุ้น Leg 1 ไม่ว่าจะมีพารามิเตอร์อย่างไร จะสร้างรอบทดสอบเป็น 0 ครั้งและอัตราผลตอบแทนของการลงทุนเป็น 0%

หลังจากการสืบสวนเพิ่มเติม ฉันพบว่าผู้ใช้คนอื่นก็มีปัญหาเดียวกันเมื่อพยากรณ์ข้อมูลประวัติของตลาดบางส่วน ผมทดสอบตลาดอื่นที่ให้ข้อมูลประวัติโดยตรงและมีข้อสรุปว่า: สำหรับตลาดนี้ เราไม่มีข้อมูลประวัติเลย
เนื่องจากข้อจำกัดนี้ วิธีที่เรียบง่ายที่สุดในการทดสอบกลยุทธ์นี้คือตอนที่หุ้นโมเดลกำลังทำงาน จะทำการสร้างชุดข้อมูลประวัติของตัวเองโดยการบันทึกราคาซื้อที่ดีที่สุดโดยเร็อแทช

เครื่องมือบันทึกจะเขียนข้อมูลสรุปลงดิสก์ ซึ่งประกอบด้วย:
· ปัจจัยเวลา
· ตราแสดงรอบ
· วินาทีที่เหลือ
· รหัสสินทรัพย์ UP/DOWN
· ราคาซื้อที่ดีที่สุดของ UP/DOWN
ในขั้นตอนถัดมา การ "สร้างชุดข้อมูลประวัติ (recorded backtest)" จะเล่นอีกครั้งข้อมูลสรุปเหล่านี้และนำเสนอหลักสูตรอัตตราอันดับเดียวกันอย่างฟ้องตัวอย่าง สิ่งนี้ยืนยันว่าเราสามารถสร้างข้อมูลที่ถึงถี่ที่จำเป็นสำหรับการตรวจจับการแตกร้างและเงื่อนไขการป้องกันโดยที่ไม่ผิดพลาด
ฉันสะสมข้อมูลได้รวมเป็น 6 กิกะไบต์ในเวลา 4 วัน ถึงแม้ว่าฉันสามารถบันทึกข้อมูลได้มากกว่านี้ แต่ฉันคิดว่าพอต่อการทดสอบพารามิเตอร์ต่าง ๆ แล้ว

ฉันเริ่มทำการทดสอบกับกลุ่มพารามิเตอร์นี้:
· ยอดคงเหลือเริ่มต้น: $1,000
· ราคาหุ้นต่อครั้ง: 20 หุ้น
· sumTarget = 0.95
· มูลค่าที่หุ้นตก = 15%
· หน่ายขอดขั้นต่ำ = 2 นาที
ฉันยังปรับค่าค่าธรรมเนียมที่คงที่ไว้กับค่าอยู่ที่ 0.5% และสระผ monarchy 2% เพื่อให้มั่นใจในแหล่งข้อมูลที่จะทดสอบ
การทดสอบกลับแสดงออกมาว่า ROI อยู่ที่ 86% ในช่วงไม่กี่วันเป็น $1,000 กลายเป็น $1,869

ต่อมา ฉันทดสอบจับกุลุ่มพารามิเตอร์ที่เข้มงวยกว่า:
· ยอดคงเหลือเริ่มต้น: $1,000
· ราคาหุ้นต่อครั้ง: 20 หุ้น
· sumTarget = 0.6
· มูลค่าที่หุ้นตก = 1%
· หน่ายขอดลต่ำ = 15 นาที
ผลลัพธ์: หลังจาก 2 วัน ผลตอบแทนการลงทุนเป็น -50%

นี่เป็นการบ่งชี้ชัดเจนว่าการเลือกรายการตัวแปรเป็นปัจจัยที่สำคัญที่สุด ซึ่งอาจทำให้คุณกำไรมาก หรือเสียเป็นจำนวนมาก
แม้ว่าจะรวมค่าใช้จ่ายและความต่างระหว่างราคา (spread) การทดสอบย้อนก็ยังมีข้อจำกัด
· ในทางทฤษฎี มันใช้ข้อมูลเพียงไม่กี่วันซึ่งอาจไม่เพียงพอสำหรับมุมมองที่เป็นรากฐานของตลาด
· มันขึ้นอยู่กับภาพถ่ายราคาขายที่ดีที่สุด แต่ในความเป็นจริง คำสั่งอาจทำธุรกรรมบางส่วน เข้าที่ฮอด หรือด้วยราคาต่าง ๆ กัน นอกจากนี้ ความลึกของคำสั่งและปริมาตรการซื้อขายที่มีอยู่มิได้ถูกจำลอง
· ยังไม่มีการจับความเคลื่อนไหวที่มีลักษณะเฉพาะต่ำกว่าเวลาที่ถูกสุ่มหย่อน (ข้อมูลถูกสุ่มทุกวินาที) การทดสอบย้อนมีตัวข้อมูลเวลาที่มีประโยชน์ แต่ความเคลื่อนไหวอาจเกิดขึ้นมากมายระหว่างวินาทีต่อวินาที
· ในการทดสอบ การลื่นไหลถือว่าคงที่ ไม่ได้จำลองการล่าช้าที่เปลี่ยนไป (เช่น 200–1500 มิลลิวินาที) หรือเส้นสูงสุดของเครือข่าย
· การซื้อขายแต่ละกระทำถือว่าเป็น "ทันที" มีการจับความว่าง่าย (ไม่มีการต่อคิวคำสั่ง ไม่มีคำสั่งพร้อม ๆ กัน)
· ค่าใช้จ่ายถูกหั้นค่าสำหรับแต่ละรายการข้อผู้ใช้สินเชื่อสำหรับตลาด / โทเคน ผู้หลอการเสนอราคาและผู้ทำการสร้างความชอบ หรือรับลัยหรือสถานที่ต่าง ๆ
เพื่อใช้ทดสอบอย่างระมัดระวังผมได้ปรับใช้กฎต่อๆ นี้: ถ้า Leg 2 ไม่ได้ดำเนินคำสั่งก่อนที่ตลาดจะปิด Leg 1 จะถือว่าเสียทั้งหมด
นี่คือเรื่องอย่างระมัดระวัง แต่ไม่ได้เป็นทุกกรณีที่ตรงกับความเป็นจริง:
· บางครั้ง Leg 1 อาจถูกปิดลงก่อน
· บางครั้งมันอยู่ในสถานะถูกนำไปใช้งาน (ITM) และชนะ
· บางครั้งความเสียหาพังบางมากไม่ใช่ทั้งหมด
อาจจะมีการประเมินค่าสูงไป แต่มันใช้การจำลองแนวการกระทำที่เลวร้ายที่สุดไป
สำคัญมากที่ทดสอบย้อนสลอองไม่สามารถจำลองผลกระทบจากคำสั่งของคุณที่เป็นการผสมอย่างมาก หรือการกระทำของผู้ซื้อขายคนอื่นที่ตามล่าคุณ ในความเป็นจริงพอร์เดอร์ของคุณอาจ:
· รบกวนคำสั่งการกำหนดซื้อขาย
· ดึงดูดหรือเผยผชื่นผู้ซื้อขายคนอื่น
· นำไปสู่การลื่นไหลที่เป็นตราบไม่ได้
การทดสอบย้อนสลองว่าคุณเป็นคนดึกกอัตโนมัตหาราคาแท่ะไม่ส่งผลลัทึก
สุดท้ายมันไม่เป็นมดลูกใช้จำลองคำจำกัดความถี่ ความผิดพลาด API คำสั่งที่ถูกปฏิเสธ การพัก การหมดเวลา การต่อใหม่ หรือการสัญญารปัส็ัยคลุกค้างานหรือคำสัังผช้ผ่านไป
การทดสอบย้อนหลังสำหรับการระบุช่วงพารามิเตอร์ที่ดีมีค่ามาก ๆ อย่างไรก็ตาม มันไม่ใช่การรับประกัน 100% เนื่องจากบางผลกระทบในโลกแห่งความเป็นจริงไม่สามารถถูกจำลอง
ฉันวางแผนที่จะเรียกใช้หุ่นยนต์นี้บน Raspberry Pi เพื่อหลีกเลี่ยงการใช้ทรัพยากรของเครื่องหลักและเพื่อให้การทำงานตลอด 24/7
แต่ยังมีข้อดีข้อเสียที่สำคัญอีกมากมาย:
· การใช้ Rust แทน JavaScript จะมอบประสิทธิภาพและเวลาการประมวลผลที่เหนือกว่าอย่างชัดเจน
· เรียกใช้โหนด RPC โพลีกอนเฉพาะของสำหรับลดความหน่วงลงเพิ่มเติม
· การจัดการบน VPS ใกล้กับเซิร์ฟเวอร์ Polymarket ยังจะลดความหน่วงอย่างมีนัยสำคัญ
แน่นอนว่ายังมีวิธีการปรับปรุงอื่น ๆ ที่ฉันยังไม่ได้ค้นพบ ปัจจุบันฉันกำลังศึกษา Rust เนื่องจากมันกำลังกลายเป็นภาษาที่สำคัญในการพัฒนา Web3
ยินดีต้อนรับสู่ชุมชนทางการของ BlockBeats:
กลุ่ม Telegram สมัครสมาชิก: https://t.me/theblockbeats
กลุ่ม Telegram พูดคุย: https://t.me/BlockBeats_App
บัญชี Twitter ทางการ: https://twitter.com/BlockBeatsAsia