Using Pandas for monitoring equity curve
ผมนับตัวเองเป็นนักลงทุนมือใหม่ และยังคงต้องฝึกฝนต่อไป ทั้งนี้ Equity curve เป็นหนึ่งในเครื่องมือที่ใช้ในการประเมินการผลการลงทุนที่ผ่านมา ในช่วงแรกๆผมก็ใช้ excel แล้วเขียนสูตรเอา แต่การที่ต้องเก็บข้อมูลราคารายวันของหุ้นที่อยู่ในพอร์ตทุกวันนี่เสียเวลาน่าดู เลยใช้ Python เขียนเครื่องมือแบบง่ายเพื่อลดเวลาในการประเมินผล ปรกติรายการซื้อขายย้อนหลังเราสามารถโหลดจากระบบของโบรกเกอร์ได้ซึ่งอาจจะแตกต่างกันไป โบรกที่ผมใช้มีข้อมูลเป็น CSV แบบนี้
Date: วันซื้อขาย / Confirm Time: เวลาซื้อขาย / Side: ซื้อ (B) ขาย (S)
Stock: หุ้นที่ซื้อขาย / Unit: จำนวนหุ้น / Price: ราคาหุ้น
Amount: จำนวนเงินทั้งหมด / Fee: ค่าคอมฯ / VAT: ภาษีมูลค่าเพิ่ม
Net Amount: จำนวนเงินทั้งหมดที่เรียกเก็บ (กรณีซื้อ) ซึ่งจะคำนวณด้วย Amount + Fee + VAT หรือ จำนวนเงินทั้งหมดที่จ่าย (กรณีขาย) คำนวณด้วย Amount-Fee-VAT
Pre-processing
เริ่มต้นด้วยการ load library ที่จำเป็นต้องใช้ โดยที่ pandas-datareader เป็น library ที่สามารถดึงข้อมูลที่หลากหลายเช่น Tiingo, IEX, Quandl, World Bank, รวมถึงข้อมูลราคาหุ้น
ต่อมาก็ทำการ load ข้อมูลการซื้อขายด้วย Pandas นอกจากนี้ยังต้องมีการ load ไฟล์ Par_split.csv ซื่งเป็นข้อมูลการแตกพาร์ของหุ้นในช่วงเวลาที่มีการซื้อขายในไฟล์ TradingRawLog.csv โดยข้อมูลของ Par_split.csv มีข้อมูลคือวันที่หุ้นแตกพาร์หรือรวมพาร์ดังรูปข้างล่าง
หลังจากเตรียมข้อมูลเรียบร้อยก็เพิ่ม column Ticker เพื่อให้เป็นไปตาม format ในการขอข้อมูลหุ้นของ Pandas-datareader
หลังจากนั้นก็ทำการใส่ค่าเริ่มต้นของ Equity (เงินตั้งต้น) และตั้งช่วงเวลาที่จะดึงข้อมูลราคาย้อนหลังมาคำนวณ
ดึงราคาย้อนหลังโดยกำหนด Ticker วันเริ่มต้นและวันสิ้นสุดของแต่ละหุ้นด้วย Pandas DataReader
จากนั้นทำการคำนวณต้นทุนและจำนวนหุ้นแต่ละหุ้นเรียงลำดับจากวันเริ่มต้นถึงวันสิ้นสุด โดยในที่นี้จะคำนวณด้วยเงินที่จ่าย และเงินที่รับเป็นหลักเพื่อให้ต้นทุนหุ้นสะท้อนต้นทุนที่แท้จริง
แล้วจึงคำนวณ Equity ในแต่ละวันตลอดระยะเวลาที่สนใจด้วย update_equity_data()
ท้ายที่สุดเขียนกราฟ Equity Curve และ กราฟ Equity-Cash เพื่อตรวจดูสถานการลงทุนในปัจจุบัน
ด้วยการเขียนเป็น Python นี้ทำให้เราสามารถตรวจสอบสถานะการลงทุนได้ทุกวันโดยไม่ต้องมาแก้ Excel นอกจากนี้ยังสามารถขยายระบบการคำนวณเพื่อการคำนวณ win-loss rate, average-gain, average-loss ได้อีกด้วยเพื่อตรวจสอบความเข้ากันได้ของระบบเทรดกับสภาพตลาดปัจจุบัน
นอกจากนี้ยังสามารถคำนวณต้นทุนของหุ้นที่แท้จริงหลังหักค่าคอมฯทั้งขาดซื้อขายขาย รวมถึงหักกำไรที่ขายบางส่วนออกไป ข้อควรระวังในการใช้ Equity Curve คือห้ามเพิ่มเงินเข้าไประหว่างทาง มิเช่นนั้นจะไม่รู้ว่า performance ที่แท้จริงเป็นอย่างไร
เนื้อหานี้จบเพียงเท่านี้ ท้ายที่สุดนี้ขอแจ้งว่า การลงทุนมีความเสี่ยง….