Basic Pair Trading with cointegration

สืบเนื่องจากที่แอดได้ไปเข้าร่วมประชุมกับทีมงาน Quantopian ที่ลอนดอน เมื่อปีที่แล้ว หัวข้อที่ทำ workshop กันในงานประชุมก็คือ การพัฒนาเทคนิคการ Hedging ด้วยการทำ Pair Trading ด้วย การใช้ค่าทางสถิติ Cointegration เข้ามาช่วย ซึ่งเป็นหัวข้อที่น่าสนใจมากอีกหัวข้อนึง  หลังกลับมาจากงานประชุม แอดจึงได้เขียนบทความขึ้นมา 2 บทความ เพื่ออธิบายทฤษฏี และ แนวทางการประยุกต์ใช้ Cointegration ในการทำ Pair Trading ซึ่งสามารถหาอ่านได้ใน blog (เดี๋ยวจะลงลิงก์ด้านล่างให้นะคะ) หลังจากลงบทความไปแล้ว ได้รับความสนใจอย่างมากหลังไมค์ มีแฟนเพจหลายท่านต้องการนำไอเดียไปพัฒนาต่อ ทางเราจึงนำทฤษฏีนี้เข้ามาในคอร์สใหม่ เพื่อ ทำการพัฒนา และ Backtest อย่างละเอียด ซึ่งตอนนี้กำลังอยู่ระหว่างการจัดทำ ระหว่างนี้ เลยนำไฟล์ Source code มาฝากหลายๆ ท่านที่สนใจกันก่อนค่ะ เผื่อใครอยากนำไปพัฒนาต่อ และ Backtest ด้วยตัวเอง ไม่ต้องรอเรียนก็จะได้สามารถทำได้  (สำหรับการสอนอย่างละเอียดรวมถึงการ Backtest เพื่อใช้งานจริง…

Modern Portfolio Theory หนึ่งในนวตกรรมเปลี่ยนโลกการลงทุน

อาจารย์ Harry Markowitz ผู้คิดค้นทฤษฏี Modern Portfolio Theory ในปี 1956 อาจารย์ Harry Markowitz(รูปบน) ได้นำเสนอเปเปอร์สำคัญทางด้านการลงทุน ว่าด้วยการจัดสรรพอร์ตการลงทุนด้วยสมการ Modern Portfolio Theory หรือเรียกอีกชื่อว่าMarkowitz Portfolio Theory(MPT) ซึ่งมี Impact อย่างสูงและได้เปลี่ยนโลกการเงินไปตลอดกาล จากการวิเคราะห์การลงทุนแบบรายตัวมาเป็นวิเคราะห์การลงทุนแบบ Portfolio สมัยใหม่ เดี๋ยวเรามาดูกันอย่างกันครับว่า MPT มีไว้ทำอะไร และ สำคัญอย่างไร เพื่อความเข้าใจง่ายผมจะทำให้มีสมการน้อยเท่าที่จำเป็นนะครับ การเข้ามาของ MPT ถือว่าเป็นการเปลี่ยนแปลงมุมมองต่อ Portfolio ให้เป็นวิชาการขึ้น จำคำที่ว่า “Don’t put all your eggs in one basket” มันได้มีการกล่าวถึงกันมานานแล้วก็จริงแต่งานนี้จะก้าวไปอีกสเตป เป็นการพิสูจน์มันทางคณิตศาสตร์ และ พรูพให้เราเห็นไปเลยว่าทำไม ทำไมต้องมี MPT? จากรูปเรามี Asset 2…

Basic Pair Trading (2) : การประยุกต์ใช้ Cointegration

บทความนี้เขียนมาจากการเข้าร่วมสัมมนากับกลุ่ม Quantopain ที่กรุงลอนดอน ประเทศอังกฤษ ในช่วงต้นปีที่ผ่านมา ส่วนหนึ่งของสัมมนาได้กล่าวถึง Basic pair trading strategy ที่มีการประยุกต์ใช้ค่า Cointegration เราจะตัดส่วนนี้มาพูดถึงกันในบทความชุดนี้ค่ะ บทความแรก Basic Pair Trading (1) สามารถหาอ่านได้จากลิงก์นี้ https://algoaddict.com/blog/89211/pairtrading-1 Cointegration idea แนวคิดหลักๆ ของ Cointegration ที่เราจะนำมาใช้กันใน basic pair trading ก็คือ การใช้ค่า Cointegration เพื่อหาหุ้นที่มี “Economic link” ต่อกัน โดยที่ หุ้น 2 ตัวจะ Cointegrated กันก็ต่อเมื่อความแตกต่างของข้อมูล 2 ชุด มีลักษณะเป็น “Mean Reverting” หรือ พูดง่ายๆ ก็คือ ค่าวิ่งไปมาอยู่รอบๆ ค่า Mean ของตัวเองนั้นเอง ตัวอย่างเช่น…

Basic Pairs Trading (1) : Idea of Cointegration

Pair trading เป็นอีกหนึ่ง strategy ที่ได้รับความสนใจอย่างกว้างขวางในกลุ่มของ Hedge funds ในบทความนี้ก็จะขอถือโอการมาแบ่งบันความรู้ในเรื่องการใช้เทคนิค Cointegration ในการทำ pair trading กันค่ะ Pair trading? เป็นเทคนิคการเทรดอย่างนึงที่มีการประกันความเสี่ยงโดยทำการเทรดเป็น “คู่” เวลาเปิด order ก็จะมีการเปิดสถานะ long และ short พร้อมๆ กัน บนคู่หุ้นที่ต้องการ” Pair trading ถือ เป็นเทคนิคการ hedging อย่างหนึ่งที่ได้รับความนิยมกันอย่างแพร่หลายในกลุ่ม hedge funds จนบางครั้งมีการเข้าใจผิดกันไปว่า pair trading กับ hedging นั้นเป็นเทคนิคเดียวกัน ในความเป็นจริงแล้วทั้งสองเทคนิคนี้มีความต่าง คือ การ hedging เป็นเทคนิคการเทรดที่มีการพยายามประกันความเสี่ยงด้วยวิธีการที่หลากหลาย (ซึ่งอาจจะเป็นวิธีอื่นที่ไม่ใช่ pair trading ก็ได้) ส่วน pair trading เป็นหนึ่งในวิธีการทำ hedging ที่ใช้เฉพาะเทคนิคการเทรดเป็นคู่ เท่านั้น…

รู้จักกับการแจกแจงปกติกับพื้นฐาน Mean Reversal

Normal Distribution สามารถเอามาพิจรณาควบคู่การเทรด Mean Reversal ได้อย่างไร Normal Distribution คืออะไร แล้วข้อจำกัดของมันคืออะไร แบบเบื้องต้น การแจกแจงปกติ (Normal Distribution) เป็นรูปแบบการแจกแจงดาต้าตามความน่าจะเป็นของตัวแปรที่เราสนใจ ซึ่งนับเป็นสิ่งที่เป็นพื้นฐานที่สำคัญมากในวิชาสถิติ กล่าวคือเป็นการนำเอาตัวแปรนั้นๆมาพล๊อตในรูปแบบกราฟระฆังคว่ำเพื่อดูความถี่ของตัวแปรที่เราสนใจ ยกตัวอย่างว่าเป็นหุ้นนะครับ ก็จะเป็นการนำหุ้นตัวนั้นๆมาพล๊อตดูการแจกแจงความถี่ดูว่า หุ้นตัวนั้นๆในช่วงเวลาที่เรากำหนด มีความถี่ในการเคลื่อนไหวขึ้นลงอยู่ที่เท่าไหร่ ซึ่งจะทำให้เราสามารถตอบคำถามประเภท จากข้อมูลที่ผ่านมานี้ มีโอกาสแค่ไหนที่ หุ้นตัวนั้นจะลงมากกว่า 5% ในหนึ่งวัน เป็นต้น จากรูป นี่คือกราฟการแจกแจงปกติ มีคุณสมบัติคือมีจุคพีคเพียงจุดเดียวในกราฟรูปร่างของมันจะคล้ายระฆังคว่ำ โดยสัญลักษณ์ Mu ที่ปรากฎให้เห็นั้นคือค่ากลาง(Mean) โดยการแจกแจงแบบปกติเนี่ยมันมีคุณสมบัติอย่างหนึงคือ ถ้าเราเอาค่ากลางของมันมาบวกไปด้วยค่าส่วนเบี่ยงเบนมาตราฐาน และ อีกด้านก็นำมันไปลบกับค่าส่วนเบี่ยงเบนมาตราฐาน มันจะครอบคลุมไป 68% ของการแจกแจงข้อมูลทั้งหมด ถ้าเอาค่ากลางไปบวก/ลบกับ 2คูณด้วยส่วนเบี่ยงเบนมาตราฐานนั้นก็จะได้ความน่าจะเป็นถึง 95%ของข้อมูลทั้งหมด ถ้าเราเพิ่มเป็นตัวเลขที่นำไปคูณเป็น 3 มันะจะคลอบคลุมไปถึง 99.7% ของข้อมูลทั้งหมดทีเดียว จากข้อมูลตรงนี้เราจะสกัดเอาอะไรจากความรู้พื้นฐานนี้ไปใช้ได้บ้างละ จริงๆมันก็เป็นพื้นฐานหนึงของสิ่งที่เรียกกันว่า Mean Reversal หรือ Counter…

ตลาดหุ้นขึ้น 28 จุดในวันเดียว! กับวันที่ตลาดตก 60 จุดในวันเดียว! กับจุดอ่อนของการประเมินความเสี่ยง Normal Distribution (Value at Risk) – Say Hello to Fat-tailed Distribution!

เชื่อว่าท่านที่ลงทุนอยู่ในตลาดหลักทรัพย์บ้านเราคงไม่มีใครไม่ได้ยินข่าวที่ตลาดหลักทรัพย์ปิดตลาดด้วยการปิดบวกถึง 28 จุด! ในวันเดียว ขึ้นมายืนเหนือ 1600 จุด (บวก 1.79%) ซึ่งเป็นจุด Check Point สำคัญจุดหนึงทางเทคนิคคอลนะครับ ทางเทคนิคคอลผมไม่ขอพูดมากดีกว่าครับเนื่องจากไม่มี่ความเชี่ยวชาญและโดยส่วนไม่ค่อยเชื่อถือเท่าไหร่นัก เอาละช่างเถอะมาเข้าเรื่องเรากันดีกว่าครับ ผมว่าเป็นการสำคัญมากสำหรับนักพัฒนาระบบการลงทุนที่เข้าใจว่าเรากำลังเจอกับตลาดแบบไหนอยู่ฉะนั้นเรื่องการแจกแจงจำเป็นต้องรู้ไว้นะครับ แล้วการปิดบวก ขนาดนี้มันแปลกหรือเปล่า? จริงๆ มันก็เคยมีเหตุการณ์ประมาณนี้มาก่อนแล้วใช่ไหมครับ แต่มันอาจจะเกิดไม่บ่อยนักที่จะบวกหรือลดลงมากๆในเวลาวันเดียว โดยเราจะใช้วิธีการประเมินความเสี่ยงแบบ Value at Risk (VaR) การประเมินความเสี่ยงแบบนี้ โดยย่อๆ ก็จะง่ายมาก กล่าวคือ เราก็แค่ หา Return ในแต่ละวัน นำมาเรียงลำดับกัน นำเสนอออกมาในรูปแบบของการกระจาย Distribution แล้วก็นำมาประเมินความเสี่ยง เช่น มีโอกาสที่หุ้นจะลดลงมากกว่า XX% ใน 1 วันกี่เปอร์เซ็นจากข้อมูลนั้น ความจริงการประเมินความเสี่ยงแบบเรียบง่ายนี้ก็ไม่ได้เป็นอะไรไปมากกว่า การมองย้อนกลับไปเรียงข้อมูล วัดเปอร์เซ็นการเกิดบวกและลดลงในอดีต ถ้าเรียงกันแล้วจากจำนวน 1000 วัน ข้อมูลบอกว่าเคยลดลงต่ำกว่า XX% 10 วัน ก็จะสรุปว่ามีโอกาสแค่…

Sharpe Ratio เครื่องมือวัดความเสี่ยงยอดนิยมทำงานอย่างไร

จากที่ได้เคยเขียนไปแล้วเรื่อง Math 101 : Variancec และ Standard Deviation ว่าคืออะไร และมันเป็นคณิตศาสตร์ง่ายๆที่เอาไว้วัดความแปรปรวนออกจากข้อมูล หรือ ถ้าพูดกันทางลงทุนการแปรปรวนนั่นก็คือความเสี่ยงนั่นเอง ซึ่งในทางการลงทุนเรามักจะใช้ Variance, Standard Deviation หรือ Volatility เป็นตัววัดว่าในระยะเวลาการลงทุนนั้นการลงทุนใน Port ของเราได้มีการเหวี่ยงไปมากแค่ไหนแต่ก็นั่นแหละ มันบอกได้แต่ความเสี่ยงครับ มันไม่ได้นำ Factor ที่สำคัญอย่างกำไรมาคิดด้วยเลย จริงอยู่ที่ทาง Quantitative Trading เน้นเรื่องการลดความเสี่ยงเป็นอย่างมากถ้าเราใช้แค่เพียงค่าวัดความเสี่ยงมาในการปรับกลยุทธพอร์ตของเราอย่างเดียว มันจะลงเอยด้วยการเราไปลดความเสี่ยง จนอาจจะไม่มีกำไรเลยก็ได้ ทำไมต้องมี Sharpe Ratio ดังรูปข้างบน เป็นราคาหุ้น STA CPF และ SCB โดยราคาที่พล๊ตผมได้ Normalization มาแล้วพล๊อตในช่วงเวลาตั้งเดือน มกราคม 2009 จนถึง เดือน กุมภาพันธ์2012 (เลือกช่วงเวลานี้เพราะจะยกตัวอย่างได้ชัด) การลงทุนกับหุ้นตัวไหนดีสุดสุดครับ กำไร(รายปี) เคสที่ดูกำไร ถ้าเรามองแต่กำไรเราก็คงจะจิ้มที่ STA เพราะให้กำไรกับเรามากที่สุดใช่ไหมครับ แต่ดูจากรูปมันเป็นอย่างกับรถถไฟเหาะแหนะมันจะดีเหรอ? Standard…

หุ้นตัวไหนเป็นหุ้น Attack ตัวไหนเป็นหุ้น Defense (มารู้จักกับ Beta และ Systematic/Unsystematic riskกันครับ)

Beta ก็คือตัววัด Volatility ของหุ้นตัวหนึงแหละครับแต่คราวนี้เราจะไม่วัดแค่กับตัวหุ้นเองอีกแล้ว จะเห็นว่าที่ผ่านมาเราจะวัดความเสี่ยงด้วย Standard Deviation หรือ Volatility กับตัวหุ้นนั้นๆเองใช่ไหมครับถ้าค่ามันสูงก็แปลว่ามันเหวี่ยงมาก ถ้าค่ามันต่ำก็จะแปลว่ามันเหวี่ยงน้อย แต่นั้นเรายังไม่ได้กล่าวถึง Systematic/Unsystematic Risk เลยครับ มาวันนี้เราจะมาดูกันว่า Systematic/Unsystematic Risk คืออะไร ทำไมเราต้องหุ้นไปวัดกับตลาดด้วย ความเสี่ยงที่เป็นระบบ(Systematic Risk) ก็คือ ความเสี่ยงที่เป็นระบบ ความเสี่ยงอันเกิดจากการเปลี่ยนแปลงของราคาหุ้นที่เกิดจาก “ระบบ” หรือเกิดจาก Factor ที่มีผลกระทบธุรกิจทั้งธุรกิจหรือตลาดทั้งตลาด เช่น การขึ้น/ลด ภาษีนโยบายของชาติ การเกิดสงคราม เกิดสภาวะเศรษฐกิจตกต่ำ เป็นต้น ซึ่งความเสี่ยงเหล่านี้เกิดจากปัจจัยของที่สร้างความผันผวนที่มีระบบทั้งระบบ(เรียกว่าตลาดก็ได้) เป็นความเสี่ยงที่มาจากแวดล้อมภายนอกที่เราไม่อาจทำอะไรได้ ความเสี่ยงเหล่านี้เราไม่อาจแก้ได้ด้วยการกระจายความเสี่ยง นั้นทำให้ Systematic Risk ได้ถูกรู้จักกันในอีกชื่อนหนึงคือ Undiversified risk เพราะมันเกิดกันทั้งระบบนั้นเอง ความเสี่ยงที่ไม่เป็นระบบ (Unsystematic Risk) ก็คือความเสี่ยงที่เกิดกับบริษัทที่เราไปลงทุนโดยเฉพาะเจาะจงครับไม่ได้แอฟเฟคไปทั้งระบบครับ เป็นปัจจัยภายในของตัวบริษัท หรือ ธุรกิจนั้นๆเอง เช่น CEO ของบริษัทลาออก…

ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code (2)

ทความนี้เราจะมาว่ากันต่อในเรื่องของการทำนายข้อมูล Time Series ด้วย ARIMA กันค่ะ โดยบทความนี้เป็นบทความที่ 3 ของบทความชุด “ARIMA เท่าที่เข้าใจ” ซึ่งได้เขียนไปแล้ว 2 ตอนด้วยกัน สามารถอ่านได้ตามลิงก์ด้านล่าง เมื่ออ่านครบทั้ง 3 บทความนี้ ก็น่าจะสามารถนำ ARIMA ไปประยุกต์ใช้ในการทำนายข้อมูลประเภทต่างๆ ได้อย่างไม่ยากแล้วค่ะ บทความชุด “ARIMA เท่าที่เข้าใจ” 1) ARIMA เท่าที่เข้าใจ อธิบายการทำงานของ ARIMA model จากประสบการณ์ใช้งานของเรา link 2) ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code ตอนที่ 1 link ต่อกันเลยนะคะ หลังจากบทความที่แล้ว เราได้เตรียมข้อมูลที่เป็น “Stationary” ไว้เรียบร้อย พร้อมสำหรับ “การทำนาย” แล้ว ในบทความนี้ เราจะนำเอาข้อมูลนั้นมาเริ่มทำการทำนาย…

ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code (1)

จากบทความที่แล้ว ตามลิงก์ด้านล่าง link เราได้พูดถึง Basic of ARIMA เอาไว้ ซึ่งถึงแม้ว่าตัวโมเดลจะไม่ได้ถูกออกแบบมาโดยเฉพาะสำหรับการทำนายมากนัก แต่ก็เป็นโมเดล Time-series ที่สามารถนำมาประยุกต์ใช้ในการทำนายข้อมูลได้ ดังนั้น วันนี้เราจึงได้นำตัวอย่างการประยุกต์ใช้ ARIMA พื้นฐานในการทำนายอย่างง่ายมาให้ดูกัน โดยตัวอย่างนี้ใช้ จะเป็นข้อมูล GDP ของประเทศไทย ดังนี้ Data: GDP of Thailand during (1960 – 2017) File name: GDP_Thailand.csv 1) มาดูข้อมูลดิบกันก่อน ก่อนอื่นมาโหลดข้อมูล และ เนื่องจากข้อมูลของเราเรียงจากปีปัจจุบันไปยังอดีต แต่เพื่อให้ง่ายต่อความเข้าใจ จากนั้น เราจะได้พล็อตดูแนวโน้มข้อมูลกันต่อไป 1.1) Import libraries ที่จำเป็น import pandas as pdimport matplotlib.pyplot as pltimport numpy as np 1.2) อ่านข้อมูล และ ตั้งชื่อ คอลัมน์ว่า…

หลักการทำงานของ ARIMA ในการทำนายค่าของ Time Series

ARIMA model หรือ ชื่อเต็มๆ ก็คือ “(AutoRegressive Integrated Moving Average)” คิดว่าหลายท่านที่ทำงานคุ้นเคยกับข้อมูลที่มีลักษณะเป็นอนุกรมเวลา (Time Series) คงจะเคยได้ยินกันนะครับ โมเดลนี้ สำหรับตัวผมเอง ก็เป็นโมเดลที่ศึกษาเป็นโมเดลแรกๆ เลยก็ว่าได้ ตั้งแต่ก้าวเข้ามาทำงานกันข้อมูลหุ้น วันนี้ ผมจะมาเล่าให้ฟังเท่าที่เข้าใจนะครับ ว่าเจ้า ARIMA นี่มันมีหลักการทำงานอย่างไร ARIMA(AutoRegressive Integrated Moving Average) ประกอบไปด้วย Combination ของ Time Series 3 เทคนิค คือ AR (Autoregressive), I (Integrated), MA (Moving average) โดยผมจะค่อยๆ อธิบายให้ฟังทีละตัวนะครับ แต่โดยหลักๆ แล้วทุกเทคนิค คือการร่วมกันกำจัด “Noise” ออกจากข้อมูลเพื่อพยายามลด Error term ให้ได้มากสุดจนสามารถมั่นใจได้ว่า ข้อมูลนั้น Reliable หรือ เชื่อถือได้ ซึ่งจะทำให้การทำนาย (Forecast) ในขั้นตอนต่อไปมีประสิทธิภาพมากขึ้นนั่นเองครับ…

ทำไมต้อง Uncorrelated

ก่อนอื่นต้องมาพูดเรื่อง Correlation คร่าวๆก่อนไอเดียของมันถ้าจะให้พูดอย่างง่ายๆก็คือการที่สิ่งของสองสิ่งขึ้น ลง พร้อมๆกันนั่นแหละครับ เหมือนหุ้นในกลุ่ม Tech ด้วยกันอาจจะขึ้นและลง โดยภาพรวมจะคล้ายกันมากกว่า หุ้นในกลุ่ม Tech และกลุ่ม Food ทำนองนั้น ส่วนไอเดียของ Modern Portfolio Theory คือ พยายามสร้าง Portfolio ที่ถือ Asset ที่ Uncorrelated ต่อกันใน หมายความว่าถ้า Asset A ลง เราก็จะคาดหวังให้ Asset B ขึ้นมา Average กัน แต่ในระยะยาวมันจะช่วยให้ Portfolio ของเราลดความผันผวน(Volatility aka Risk)ไปลงได้ จากรูป ถ้าเราถือ แค่ Asset A อาจจะทำกำไรให้เราได้มากที่สุดในระยะเวลาที่ถือมันแต่ในการลงทุนเชิง Quantitative เราไม่ได้มองแค่ Profit แต่เราต้องมองความเสี่ยงไปด้วยครับ เนื่องด้วยการคอนโทรล Profit ว่าจะไป xx%…