DeepQuantProjects คือ project workspace ที่ประกอบด้วยหลายโปรเจ็คต์ย่อยที่สำคัญในการทำ ‘model & bot’ ในแบบ end-to-end นั่นคือทำตั้งแต่เตรียมไฟล์ราคาจนถึงการเตรียมไฟล์เพื่อ deploy บอทขึ้นรันเทรดจริง ผู้ใช้จะได้ฝึกและใช้ตั้งแต่ต้นจนรันบอทเทรดใช้งานจริง จากในรูปด้านล่างเรียกว่า DeepQuant Core ซึ่งถือเป็น backbone pipeline ที่ทำตั้งแต่เริ่มจนจบกระบวนการ DeepQuant Core เปรียบเสมือนเป็นเฟรมเวิร์กและแพลตฟอร์มในการทำ model & bot เพื่อมุ่งเน้นให้ผู้เรียนในคอร์ส Algorithmic Trading System & AI Robots ซึ่งเป็นสมาชิกในกลุ่ม DeepQuant ได้เรียนและฝึกทำ model & bot แบบเน้นใช้งานจริง ซึ่งตั้งใจให้รองรับผู้ใช้ได้ทุกระดับไม่ว่าจะชำนาญด้านไอทีมาก/น้อยก็สามารถใช้งานได้
ขั้นตอนการใช้งาน ได้แก่
- Price Data Preparation คือ การเตรียมข้อมูลไฟล์ราคา
- Project Setting คือ การเตรียมไฟล์โปรเจ็คต์
- Dataset Engineering คือ การเตรียม dataset เช่น การเลือกใช้ indicator, การทำ feature engineering
- ML Signal Modeling / Rule Based Signal Modeling / RL-TradeSignal คือ การทำโมเดล predict signal
- RL-TEP (RL-TradeEntryProperties) คือ การทำโมเดลด้วย Reinforcement Learning เพื่อใช้เลือกระยะ SL (stop loss), TP (take profit), position size
- RL-TM (RL-TradeManagement) คือ การทำโมเดลด้วย Reinforcement Learning เพื่อใช้เลือก action เช่น hold, close position, scale in, scale out, trailing stop
- Backtesting คือ การ backtest โมเดล (trading strategy) เพื่อดู performance ของโมเดล
- Prepare Execution คือ การเตรียมไฟล์สำหรับ execute (รันบอทเทรด)
- Prepare Deployment คือ การเตรียมไฟล์ docker สำหรับ deploy เช่นการ deploy บอทและระบบทั้งหมดที่เกี่ยวข้องขึ้นไปรันบนคลาวด์
จุดเด่น
system architecture ของ DeepQuant Core มุ่งเน้นด้าน resiliency เพื่อให้มีความยืดหยุ่น รองรับการใช้งานที่หลากหลาย เมื่อผู้ใช้งานเรียนรู้และฝึกจนชำนาญในระดับหนึ่ง จะพัฒนาต่อยอดไปในแนวทางของตนต่อไปตามกิ่งก้านที่ตนสนใจได้ เช่น ใครสนใจด้าน RL ก็เน้นต่อยอดหรือลงลึกด้าน RL-TEP / RL-TS / RL-TM, ใครสนใจ ML ก็เน้นต่อยอดหรือลงลึกด้าน ML, ใครสนใจด้าน deployment ก็เน้นต่อยอดหรือลงลึกด้าน deployment, ใครสนใจด้าน data ก็เน้นต่อยอดหรือลงลึกด้าน data หรือแม้แต่ใครที่สนใจทั้งหมดในระดับ system architecture ก็สามารถนำดีไซน์และโค้ดทั้งหมดไปพัฒนาต่อยอดหรือลงลึกหรือจะดัดแปลงอย่างไรก็ได้ตามชอบ (อันหลังนี่เตือนไว้ก่อนว่า learning-curve สูงปรี๊ดนะ ^^)
จุดด้อย
เมื่อ DeepQuant Core หรือการใช้งานตามขั้นตอนต่างๆ ใน DeepQuantProjects มีความเป็นเฟรมเวิร์ก (กรอบการทำงาน) จึงอาจไม่ตอบสนองความต้องการของทุกคนได้ เช่น ไม่รองกรับกลยุทธ์ grid trading, ไม่รองรับกลยุทธ์ที่มีโครงสร้างซับซ้อนมากๆ* (แต่รองรับกลยุทธ์ที่มีลอจิกซับซ้อน), ไม่รองรับการใช้ข้อมูล bid/offer (bid/ask) และ tick data (จริงๆ รองรับนะ แต่ต้องมีทักษะไอทีเยอะหน่อย ด้วยการเขียนโค้ดใส่ในส่วนการทำ dataset engineering เอง)
เหตุผลที่ออกแบบให้มีจุดด้อยดังกล่าว คือ ความตั้งใจ เนื่องจาก:
- ผู้เรียนและสมาชิกส่วนใหญ่ในกลุ่ม DeepQuant ไม่ใช่สายไอที ไม่ว่าจะเทรดเก่งแค่ไหน มีประสบการณ์หรือประสบความสำเร็จในการเทรดมาเท่าไหร่ หากเขียนโปรแกรมไม่ชำนาญ มีทักษะด้านระบบไอทีไม่มาก แล้วอยากทำบอทที่ใช้กลยุทธ์ซับซ้อนมากๆ จะทำได้ยากมาก เช่น การเขียนโปรแกรมสร้างบอท arbitrage กับบอท grid เขียนโปรแกรมแตกต่างกันแทบสิ้นเชิง DeepQuant Core จึงถูกออกแบบให้รองรับความซับซ้อนแบบเป็นระดับขั้น (hierarchy) ไม่ใช่ซับซ้อนภายในโค้ดบอทเป็นตัวๆ ขอยกตัวอย่างให้เห็นภาพง่ายๆ แนวทางผมคือ เน้นสร้างกองทัพ ที่มีทหาร แม่ทัพ ขุนศึก ที่มีความหลากหลาย ไม่ได้เน้นสร้างทหารเก่งเป็นคนๆ ชำนาญการรบเป็นบางศึก
- เบื้องหลังการออกแบบ system architecture คือนำแนวคิดต่างๆ มาประยุกต์ อาทิ industrial product design, production planning, economy of scale, system of systems, product line architecture, product line engineering, reusable product product, mass customization, high-customizable product design, level of abstraction (เยอะเนอะ ซึ่งมีทั้งแนวคิดด้าน business strategy, product development, IT, engineering, architecting)
- เหตุผลสุดท้ายคือ ผมใจร้าย ^^ เพราะผมขี้เกียจซัพพอร์ตคนที่อยากทำบอทกลยุทธ์ซับซ้อน แต่ไม่ตั้งใจเรียนไม่ตั้งใจฝึก ส่วนมากคือคนที่เทรดมือมานาน แล้วอยากทำบอทให้เหมือนกับที่ตนเองเทรดมือ แต่ทนเรียนท่อนไอทีไม่ไหว ซึ่งในโลกแห่งความจริงอันโหดร้ายคือ กลยุทธ์การเทรดมีความหลากหลายมาก (mean reversion, trend following, scalping, grid, HFT, HST, sniper, arbitrage,…) และแต่ละตลาดหรือแพลตฟอร์มก็มีกฏเกณฑ์ต่างกันมากบ้างน้อยบ้าง เช่น ตลาด TFEX สินค้าตัวเดียวกันจะถือ long กับ short พร้อมกันไม่ได้ แต่ MT4/5 ทำได้ หรือ การดู bid/ask และ tick data ด้วยตาอาจง่าย เพราะจิตคนเราไวกว่าแสง แต่การเขียนโปรแกรมให้ทำ data snapshot แล้ววิเคราะห์ให้เร็วเท่าจิต ไม่ง่ายนะครับ หรือถ้าทำได้ จะจ่ายค่าเครื่องไหวไหม? การประมวลผลเร็วๆ ต้องใช้เครื่องแรงๆ บางคนเจอค่าคลาวด์เดือนละ 40$ ก็ร้องจ๊ากแล้ว พวกสถาบันการเงินโดยเฉพาะพวก quant fund ต่างชาติเขาใช้เครื่องหลักแสนหลักล้านบาทนะครับ สถาบันการเงินที่เอาเครื่องไปตั้งที่ ตลท. ใช้บริการ co-location เขาต้องจ่ายค่าบริการหลักแสนนะ
- หากอธิบายเปรียบเทียบอีกเล็กน้อย คือ คนทั่วไปมองว่า บอทคือระบบไอที แต่สำหรับผม บอทคือส่วนหนึ่งของระบบไอที DeepQuant Core จึงถูกออกแบบโดยเน้นสร้างระบบใหญ่ที่ประกอบด้วยบอทหลายตัว
*กลยุทธ์ที่มีโครงสร้างซับซ้อน หมายถึง ระบบมีโครงสร้างซับซ้อนสูง เนื่องจากมีองค์ประกอบจำนวนมาก มีความสัมพันธ์ระหว่างองค์ประกอบมาก เช่น กลยุทธ์ที่มีหลายกลยุทธ์ย่อยภายใน หรือ เทรดหลายสินค้า หรือ เทรดหลายตลาด หรือ ถือได้หลาย position พร้อมกัน หรือ มีกลยุทธ์การ execute หลายรูปแบบ หรือ เทรดสินค้าหลายประเภท (เช่นบอทตัวเดียวเทรดทั้งหุ้นและฟิวเจอร์ส เช่นกลยุทธ์แนว hedging) หรือ มีครบทุกข้อข้างต้น ^^
แต่ๆๆ ในความจริงแล้ว อย่างข้างต้นที่กล่าวถึง resilient architecture ตัว system architecture ของ DeepQuant Core ใน DeepQuantProjects นี้สามารถรองรับกลยุทธ์ที่มีโครงสร้างซับซ้อนมากๆ ได้นะ
สมมติคุณไปเรียนทำบอท arbitrage ที่หนึ่ง แล้วเข้าใจดี ทำบอทได้ รันได้ จากนั้นคุณไปเรียนทำบอท grid อีกที่หนึ่ง เขียนโปรแกรมไม่เหมือนก่อนหน้าละ จากนั้นคุณไปเรียนทำบอท DCA อีกที่หนึ่ง เขียนโปรแกรมไม่เหมือนกันอีกละ ทีนี้แนวทางคือ คุณต้องตัดสินใจเลือกสักกลยุทธ์หนึ่งจะได้ไม่ศึกษาเหนื่อย หรือถ้าอยากทำบอทหลายกลยุทธ์เป็นก็ต้องเหนื่อยศึกษาหน่อย ทีนี้ความหลากหลายไม่ได้มีแค่เรื่องกลยุทธ์ แต่ยังมีความหลากหลายในแง่ตลาด (SET, TFEX, Crypto, FX, USA,…), แพลตฟอร์ม (Python, MT4/5, Settrade Open API,…) เช่น การเขียนโปรแกรมบอท arbitrage สำหรับตลาด TFEX กับตลาด Crypto อาจเขียนโค้ดต่างกันหลายจุด อ้าว มึนอีกทีนี้ ^^
แผนของผมตั้งแต่เมื่อ 9 ปีที่แล้ว (ปี 2557) คือ ผมจะทำ ‘ระบบ’ ที่เทรดในหลายตลาด…
หากคุณทนเรียนและฝึกท่อนไอทีไม่ไหว ผมอยากแนะนำให้ทนเรียนและทำความเข้าใจเรื่อง data analytics, data science, AI, machine learning อย่างน้อยดูคลิปอธิบาย introduction หลายๆ รอบก็ยังดี เมื่อใดก็ตามที่คุณเข้าใจเรื่อง normalization เรื่อง resiliency คุณจะ…อ๋ออออออ…..แล้วเข้าใจว่าทำไมผมจึงออกแบบ DeepQuant Core แบบนี้ แล้วถึงวันนั้นผมเชื่อว่าคุณจะลืมเรื่อง กลยุทธ์ ไปเลย ^^
DeepQuantProjects & DeepQuant Core จึงได้ simplify & normalize หลายสิ่งหลายอย่างมาให้แล้ว ผมเรียกเท่ๆ ว่า ‘Unified Architecture’
มูซาชิ ใช้ดาบไม้ฟาดคู่ต่อสู้จนเอาชนะได้… อินดิเคเตอร์ธรรมดาๆ ก็ใช้ทำกำไรได้… แต่ต้องค้นพบ insight ก่อนนะ….
