วันอังคารที่ 29 ธันวาคม พ.ศ. 2558

ขั้นตอนสำหรับการส่งคำสั่งซื้อขายโดยใช้ Amibroker กับ eFin Trade+ CNS (โนมูระ)

ขั้นตอนสำหรับการส่งคำสั่งซื้อขายโดยใช้ Amibroker กับ eFin Trade+ CNS (โนมูระ)


3 ขั้นตอนการเตรียมโปรแกรมเพื่อการใช้งาน

1 สำหรับโปรแกรม Amibroker   

   เราสามารถ Save เงื่อนไขการ Backtest เป็น Analysis Project ไว้ได้ครับ โดยเลือก
   วันที่เริ่มต้นเป็นต้นปีเช่น 01/01/2015 ถึง 30/12/2015
   เราสามารถกำหรด Stock Universe โดยสร้างเป็น Watchlist ไว้ได้

   นอกจากเขียนโปรแกรมเงื่อนไขการซื้อขายของระบบแล้ว เราก็ต้องเขียนคำสั่ง Export Trade List ผมกำหนดให้ Export เฉพาะรายการซื้อขายของวันที่กด Backtest จำนวนหุ้นที่ซื้อก็ขึ้นกับการทำ Money Management ของระบบ ผมเลือกใช้ Custom Backtest ในการเพิ่มคำสั่ง Export Trade List

ข้อดีของการใช้ Backtest แทน Explore คือ มันสามารถทำงานเป็นระบบได้สะดวกกว่าเช่น คำนวณ Position Size หรือ การกำหนด Position Score เพื่อเลือกหุ้น กรณีที่ในวันมีหุ้นที่เกิดสัญญานซื้อขายมากกว่าจำนวนหุ้นที่เราจะซื้อได้



2  ไฟล์ .CSV สำหรับ Import เข้าโปรแกรมส่งคำสั่งซื้อขาย โดยจะถูกสร้างจากการ Backtest

รูปแบบคำสั่งก็จะมี Side, Stock Code, NVDR, Quantity, Price, Validity, Iceberg Vol
Side = B,S Buy or Sell
Stock Code =  ชื่อ Stock
Quantity  = จำนวนหุ้น
Price = ATO, ATC, MP, หรือตั้งเป็นราคา
Iceberg Vol = การแบ่งจำนวนซื้อ



 3   โปรแกรม eFin Trade+ CNS (โนมูระ) 




เมื่อมีโปรแกรมและระบบเทรดเรียบร้อยแล้ว ลองมาดูวิธีการทำงานในแต่ละวันกันครับ

ขั้นตอนการทำงาน ทุกสิ้นวัน
1 เปิดโปรแกรม Amibroker
2 เปิด Analyst Project แล้วกด Backtest ระบบจะสร้าง .CSV ให้อัตโนมัติ
3 โปรแกรม eFin Trade+ CNS (โนมูระ) 
4 คลิก Import Order
5 คลิก Send All เพื่อส่งคำสั่งซื้อขาย


เรียบร้อยครับ สำหรับการทำระบบซื้อขายหุ้นแบบเป็นตะกร้า 10-30 ตัวก็ช่วยทุ่นแรง ให้สามารถส่งคำสั่งทันก่อนตลาดปิดได้นะครับ






วันจันทร์ที่ 30 พฤศจิกายน พ.ศ. 2558

SiamQuant #1 พี่มด แมงเม่าคลับ





สรุปรายละเอียดงาน SiamQuant โดยพี่มด แมงเม่าคลับเป็นวิทยากร

จากเดิข้อจำกัดของข้อมูลสำหรับการ
Backtest  ข้อมูลที่ใช้ปกติก็จะมีแค่ ราคา Open, High, Low, Close และ Volume
แต่ขาดข้อมูลพื้นฐานเช่น  PE, Market Cap, ROA, Dividend หรือข้อมูลพื้นฐานอื่นๆ  

แต่สิ่งที่กำลังจะเปลี่ยนไป

คือ
การรวมข้อมูลพื้นฐานไว้เป็น Data Series (EOD) เพื่อนำมาใช้ในการ Backtest


การเตรียมข้อมูลอยู่ในรูปแบบ
End of Day เพื่อให้โปรแกรมเข้าไปจับข้อมูลได้เมื่อทำการ Backtest ระบบ

ปล ภาพประกอบสร้างขึ้นเองเพื่อความเข้าใจ ของจริงอาจจะมีรายละเอียดมากกว่านี้


เหตุผลที่ต้องมาศึกษาระบบ หรือ แนวทางการลงทุนใหม่ๆ

ความกลัวของนักลงทุนตามระบบ คือ กลัวพฤติกรรมราคาของตลาดจะหายไป

เช่น ระบบ
Turtle System ที่เคยใช้ได้ผลดี แต่หลังจากมีการเปิดเผยข้อมูล ก็ทำให้ผลตอบแทนเริ่มหมดประสิทธิภาพลง
แต่ในตลาดเมืองไทย ระบบ
Turtle System ยังคงใช้ได้อยู่

การกระจายความเสี่ยงเพื่อให้ Port เคลื่อนไหว Smooth มากขึ้น  โดยหาระบบที่มันไม่วิ่งไปทิศทางเดียวพร้อมกัน
หรือ ไม่ลงรอยกัน  เมื่อนำผลลัพธ์มารวมกัน เพื่อจะทำให้
Port เราเคลื่อนไหว Smooth มากขึ้น

ตัวอย่าง การ Optimal Portfolio  โดยการ กำหนดสัดส่วน การลงทุนใน Stock & Gold
เช่นถ้าลงทุนในหุ้น
100 ก็จะได้ผลตอบแทน 10 ความเสี่ยง ก็อาจจะได้ 15  แต่ถ้าลดขนาดลงทุนในหุ้นเหลือ 90 ผลตอบแทนก็อาจจะลดลง และความเสี่ยงก็อาจจะลดลงตามมาด้วย  

เป็นการกำหนดขนาดการลงทุนในสินค้าเพื่อให้ กำไร ต่อ ความเสี่ยง เพิ่มขึ้น หรือ ลดลง ในจุดที่เหมาะสม

ผลกระทบในการการกระจายความเสี่ยง ในแง่นักลงทุนตามระบบก็ต้องหา ระบบที่หลากหลาย ถ้าใครเคยทำระบบโดยใช้ 
Momentum/Trend Following  ส่วนมากแล้วจะเคลื่อนไหวไปในทิศทางเดียวกัน  เวลามันจะขึ้นจะลง โดยจะต่างกันนิดหน่อยตรงที่ลงมากลงน้อยเท่านั้นเอง


การนำเอาปัจจัยพื้นฐานมาช่วยในการออกแบบระบบ จึงเป็นอีกทางเลือกใหม่เพื่อทำระบบ
ตัวอย่างการนำค่า PE ย้อนหลัง 10 ปี กับผลตอนแทน 20 ปีถัดมา
แสดงให้เห็นว่า ยิ่งค่า PE 10 ปีย้อนหลัง น้อยลงเท่าไหร่  มักจะให้ผลตอบแทน 20 ปีถัดมามากขึ้นเรื่อยๆ แสดงให้ถึงความเสถียรของค่า PE

การจะพัฒนาระบบใหม่ๆ  หากเราไม่มี
Data เพื่อนำมาวิเคราะห์เพิ่ม เราก็จะต้องไปเพิ่มในส่วนของ Algorithm ยิ่งเราไปเพิ่มเงื่อนไขในการซื้อขายข้อมูลมากขึ้นเท่าไหร่ ก็มีโอกาสที่จะไปจับ ตรง Noise แทนที่จะไปจับสัญญาณ ที่เป็น Main หลักทำให้ระบบมักจะใช้งานไม่ได้ผล
มีผลการวิจัย เกี่ยวกับการ Forecast ในอนาคต ว่าเราควรจะทำให้ Model ให้มันซับซ้อนขึ้น หรือ ซับซ้อนน้อยลงแล้วไปเพิ่ม Data แทน  และจากผลการวิจัยพบว่า ระบบที่มันซับซ้อนน้อยลง ให้ผลตอบแทนในระยะยาวดีกว่า ระบบที่ซับซ้อนมากขึ้น

ทั้งหมดที่กล่าวมานี้จึงเป็นเหตุผลที่ทำให้ควรมาศึกษาเกี่ยวกับข้อมูล Fundamental ในการ Backtest ระบบ


ตัวอย่างหนังสือเกี่ยวกับการ Quantitative Value  การลงทุนอย่างเป็นระบบโดยอาศัยปัจจัยพื้นฐาน



การนำเอาข้อมูลมาทดสอบระบบ
เพื่อให้ไม่มีตัวแปรเรื่องเวลาเข้ามาเกี่ยวข้อง จึงใช้การ
Rotation หุ้นทุกไตรมาส
เรียงลำดับหุ้นในตลาดทุกๆ ไตรมาส
โดยซื้อหุ้น
20% ของตลาด คือ สมมุติว่ามีหุ้น 100 ตัวหลังจากเอาหุ้นมาจัดเรียงแล้วก็จะซื้อ  20 ตัวแรก
แล้วก็อีก
3 เดือนก็ขาย แล้วก็มาจัดเรียงใหม่แล้วซื้อหุ้นเข้า Port ใหม่

เงื่อนไขการซื้อคือ
RS60                    Relative Strength Index คัดหุ้นที่แข็งแกร่งที่สุดโดยดูจากค่า ROC ใน 60 วัน
SMCAP                Small Cap 20% ของหุ้นที่เล็กที่สุดในตลาด
LOW BETA          หุ้นที่มีความผันผวนน้อยที่สุด
LOW PE                             Low PE
HIGH DY             High Dividend
HIGH ROA          High ROA
SET INDEX          SET Index Buy & Hold

ผลลัพธ์ที่ออกมา คือ RS60 ให้ผลตอบแทนดีที่สุด โดยเรียงลำดับดังนี้

RS60, SMCAP, Low Beta, Low PE, High DY, High ROA
ทุกระบบให้ผลตอบแทนดีกว่า SET Index เฉลี่ย (8%/ ปี)
หลังจากทดสอบ Backtest แล้วสามารถดูผล Sharp Ratio  หรือ Drawdown ของแต่ละระบบได้



เราสามารถนำข้อมูลพื้นฐานมาใช้คู่กับระบบอื่นๆได้เช่น นำระบบ ATH มาใช้กับข้อมูลพื้นฐาน
ใส่ค่า
Slippage 3% ทั้งซื้อ และ ขาย รวมค่าคอมมิสชั่น
ใช้ค่า PE ต่ำเป็นตัว Filter
ไม่เล่น SET 50 (เทรดเฉพาะ Small Cap)   โดยไปกำหนดว่าหุ้นนี้อยู่ใน SET50 หรือ SET100 หรือไม่ ในแต่ละข้อมูล จะทำให้แต่ละปีข้อมูล SET50 จะเปลี่ยนแปลงย้อนหลังตามความเป็นจริง
เพียงแค่ใช้ 2 ปัจจัย ทำให้ผลตอบแทนดีขึ้น กำไร 21% ต่อปี เพิ่มขึ้นเป็น 27% ต่อปี และค่า Max DD ลดลง 20% และค่า Sharp Ratio ก็เพิ่มขึ้น


สุดท้ายพี่มดจะมี โครการ Siamquant Academy  สำหรับเป็น จุดเริ่มต้นของการเรียนรู้อย่างเป็นระบบ
Open Source Trading System     ตัวอย่างสุดยอดระบบการลงทุนอย่างเป็นระบบ
Hybrid Stock Database                 ฐานข้อมูลหุ้นย้อนหลังรายวันคุณภาพสูง
Open Quant Forum                      สังคมแห่งการลงทุนอย่างเป็นระบบ