4-7 In Sample and Out Of Sample

In Sample and Out of Sample มีนิยามที่แตกต่างกันไป เพื่อในการบอกถึงช่วงเวลาทดสอบของระบบที่เราได้ทำการสร้างขึ้นมา โดยระบบ เราจำเป็นต้องการปรับปรุงและพัฒนาในแต่ละช่วง เพื่อหาค่าที่ได้เหมาะสมในทุกช่วงเวลา

จุดประสงค์: In Sample and Out Of Sample

  1. เข้าใจความหมายของคำว่า In Sample
  2. เข้าใจความหมายของคำว่า Out Sample
  3. เข้าใจถึงระบบว่าแต่ละช่วงเวลาให้ผลตอบแทนไม่เหมือนกัน

เนื้อหา: In Sample and Out Of Sample

ในบทนี้จะกล่าวถึง ช่วงเวลาการทำ BackTest และ Optimize ของระบบ โดยเมื่อเราทำการทดสอบระบบออกมาแล้ว เราจำเป็นต้องพิสูจน์ว่า ระบบที่เราคิดค้นมานี้สามารถ ทำกำไรได้ทุกช่วงเวลาหรือไม่ โดยเราจะแบ่งการทดสอบเป็น 2 ส่วน

[1] In Sample คือ ช่วงระยะเวลาที่เราทำ Optimization และ BackTest ให้กับระบบ เพื่อที่จะได้ค่าที่เหมาะสมที่สุดออกมา
[2] Out Of Sample คือ ช่วงระยะเวลาที่ นอกเหนือจากที่เราทำการ Optimization และ BackTest

ในส่วนของ Out Of Sample จะเป็นการพิสูจน์ออกมาว่าระบบที่ได้นี้สามารถใช้ได้ในทุกช่วงเวลา ไม่ใช่แค่เฉพาะช่วงเวลาใด เวลาหนึ่ง

วีดีโอ: In Sample and Out Of Sample

คำบรรยายวีดีโอ

VDO ชุดนี้ก็จะมาพูดถึง In Sample กับ Out Of Sample น่ะครับ ซึ่งอันนี้เราจะพูดในขอบเขตของ Introduction ง่ายๆเลยคือเราเขียน strategy ขึ้นมาตัวนึงใช่ไหมครับ แล้วเราก็ test กับ data ในช่วงเวลานึง อย่างกรณีของเราคืออะไรครับ อ่ะผมเปิด Amibroker ขึ้นมา อ่ะเรา test ในช่วง 2011 ถึงสิ้นปี 2014 ใช่ไหมครับตอนที่เราเขียน strategyมาเนี่ยระหว่างที่เราเขียน strategy เนี่ยเรา test กับช่วงนี้ตลอดเวลาทำให้เรามีการปรับ มีการปรับค่า ปรับ parameter เนี่ยน่ะครับ มีการปรับ condition ซึ่งอาจจะทำให้สอดคล้องจากช่วงๆนี้ ก็คือ2011 ถึง2014 เห็นไหมครับ เราทำแม้กระทั่ง optimize parameter เนี่ย จากช่วงๆนี้น่ะครับในช่วงๆนี้ เราเรียก in sample หมายความว่า เรามีการเขียน code ทดสอบ strategy แก้ไข parameter เพิ่มหรือลด condition นี่น่ะครับ กับข้อมูลในช่วงๆนี้ เราเรียก in sample คราวเนี่ยเวลาเรา จะบอกstrategy ที่ดีนี่น่ะครับหรือช่วยเราตรวจสอบว่า strategy เราเนี่ยมันทำงานได้เฉพาะกับช่วงๆนี้เท่านั้นหรือป่าว หรือมันทำงานได้กับช่วงอื่นๆด้วย หรือแม้กระทั่งในอนาคตด้วยเนี่ยเห็นไหมครับเราจะรู้ได้ยังไงหล่ะเพราะเนี่ยเวลาเรามี data มาเนี่ยน่ะครับ เราต้องแบ่ง data เป็น 2 ส่วน อันแรกส่วนที่เราจะใช้เป็น in sample คือเขียน code test optimize มา อันนี้เรียกว่า in sample น่ะครับทำกับมันเลย เขียน code ในนั้นเลย test ในนั้นเลย อีกส่วนนึงเนี่ยเราเก็บไว้ทีหลังเป็นส่วนของ out of sample เห็นไหมครับ คืออยู่นอกเหนือจากส่วนที่เราทำ test ทำ optimize คราวนี้เนี่ยอย่างที่เห็นนะครับ ตัว code ตัวเนี่ยนี่น่ะครับrun ออกมาได้ตัว net profit อยู่ประมาณ 200 MDD system อยู่ที่ประมาณ 13% อ่าคราวเนี่ย อ่ะผมมีหลักฐานอยู่นี่เลยครับ นี่ผมบอกไม่เชื่อหรอก 200% จริงหรือป่าว เพราะเนี่ยเรา test กับอะไรครับ in sample นี่น่ะครับทั้ง test ทั้ง optimize เลยครับกับ 2011 ถึง2014คราวนี้เราก็ลองมา test กับข้อมูลนอกเหนือจากข้อมูล in sample เรา เรียกว่า out of sample น่ะครับ อ่ะก็ลองดูเราก็ไปเริ่มต้นที่ช่วงข้อมูลที่เราไม่มีการเขียนcode หรือ test บนนั้นหรือ optimize บนนั้น ก็คือ 2007นี่นะครับ 7 ,8,9,10 ถึง2010 ต้นปี 2007 ถึงปลายปี 2010 ถูกไหมครับ อ่ะนี่คือ out of sample ของเรานี่น่ะครับ in sample ของเราคืออะไรครับต้น 2011 ถึงสิ้น 2014 // 4 ปี อันนี้ก็ 4 ปีเหมือนกันน่ะครับ แต่เป็น out of sample คราวนี้เราก็ต้องมา run backtest แล้วก็หวังว่าอะไรครับ หวังว่า net profit เราเนี่ยยังอยู่ใน range ที่ใกล้เคียงกับ 200% MDD เนี่ยยังอยู่ใน range ที่ใกล้เคียงกับ -13%น่ะครับแล้วตัว CAR/MDD นี่นะครับอยู่ประมาณ 2.5 นี่คือของเก่าน่ะครับ ลอง run ดู backtest น่ะครับอ่ะเรียบร้อยแล้วเปิดขึ้นมาดู อ่ะนี่คือ out of sample น่ะครับอยู่ด้านนี้ 2007 สิ้นปี 2010แล้วเสร็จปุ๊บมาเป็นต้นปี 2011 ถึงสิ้นปี 2014 มาดูกันครับว่าจริงหรือไม่ เนี่ยน่ะครับ เนี่ยจะโชว์ให้ดูน่ะครับว่าจริงหรือป่าวดูซิครับ net profit เราเนี่ย 4 ปี ตัวนี้ 4 ปีน่ะครับดู setting ได้ นี่น่ะครับ 4 ปี เหมือนกัน setting 4 ปี เหมือนกันเห็นไหมครับ formula setting เหมือนกันหมด นี่ formula เขา นี่ formula ของเรา นี่คือตอน out of sample น่ะครับ ด้านนี้คือ in sample เหมือนกันเป๊ะๆน่ะครับไม่ต้องห่วงน่ะครับ อ่าผมไม่ทำให้ตัวเองดูไม่ดีอยู่แล้วน่ะครับ อ่ะเหมือนกันเป๊ะ จะเห็นว่า out of sample ได้ค่าที่แย่กว่า in sample เยอะ นี่นี่คือ in sample เห็นไหมครับ อันนี้ risk adjusted return กับ loss 1 ใน 4 เห็นไหมยิ่ง trade น้อยไปใหญ่เลย อย่างที่ผมบอกตอนแรกมัน trade น้อยเกินไปน่ากลัวแล้วเห็นไหมครับอ่าน่าจะเป็นกรณีฟลุ๊กหรือป่าว อ่าอันนี้กรณีนี้น่ะครับ แล้วเราก็ดูต่อไปเรื่อยๆ net profit ก็เหมือนกันน่ะครับ โอ้โหนี่ 10% ของตัวไอ้นี่แย่มากน่ะครับก็จะโชว์ให้ดูว่ามันไม่ได้สวยหรูอย่างที่เราคิดน่ะครับนี่ขนาดเรายังไม่ได้ทำการใส่ เรียกว่า Monti Carlo Simulation เข้าไปน่ะครับ อันนี้ก็เป็นส่วนของ basic ตอนปลายๆแล้วน่ะครับเนี่ยแค่นี้ก็เลิกคุยได้แล้วน่ะครับว่าการ optimize optimize มาใช้ไม่ได้ นี่เห็นไหมครับ 13 เนี่ยเขาฟลุ๊กอยู่คนเดียวน่ะครับ จำได้ไหมตอนที่เราทำ in sample เนี่ย เพื่อนๆเขาตอนที่ optimize ได้กันเท่าไหร่ครับ เขาได้กันประมาณ 20 ประมาณ 20 ,25 ก็ว่ากันไป นี่ก็เป็นกรณีอาจจะฟลุ๊ก หลุดออกมาน่ะครับ สรุปไม่มีอะไรเหมือนจริงเลยเป็นโลกที่หลอกลวง อ่าถ้ามันออกมาสวยหรูคงไม่สนุกน่ะครับต้องออกมาแบบเนี่ย เพราะฉะนั้นเราต้องไปทำการแก้ไขตรวจสอบหรือว่าไปหาความรู้เพิ่มเติมน่ะครับว่า market classification คืออะไร เอ่อ Port Folio hit คืออะไรเอ่อมี ร้อยแปดพันเก้าวิธีน่ะครับที่เราจะทำการ Develop Strategyให้ดีกว่านี้ได้ ให้เสถียรกว่านี้ได้ในทุกๆสภาพตลาดสถานะการ อ่ะคราวนี้ไม่เป็นไรลองปลอบใจดีไหมครับ เดี๋ยวตัวนี้ลบไปเลยน่ะครับเห็นแล้วก็เจ็บใจ ไหนลองเลื่อนไปหน่อยซิ ช่วงนิ้แบบ 2008 รู้สึกว่าตลาดล่มใช่ไหมครับไม่แฟร์หรือป่าว อ่ะนั้นเอาใหม่ ไปเอาสุดตอน 2008 เลยก็ได้ เดี๋ยวหาว่าผมรังแก เอา2007 ดูว่าเป็นยังไง 4 ปีใช่ไหมครับ 2004 ,5,6,7 อ่ะ 4 ปีนี่น่ะครับมา อันนี้ก็เป็น out of sample เหมือนกันเพราะอะไรเพราะตอนเรา backtest ตอนเราเขียน code ตอนเราแก้ไข parameter ปรับ condition เราไม่เคยทำการทดสอบกับช่วงๆนี้เลย ช่วงนี้ก็ถือว่าเป็น out of sample ได้อ่ะแล้วก็ backtest ดูเปิดขึ้นมาอ่าสะใจครับเห็นไหมครับเนี่ยดูซิครับเห็นไหมว่า strategy ตัวที่ออกมาเนี่ยจะเรียกว่า curve fitting ก็ได้หรือเรียกว่าฟลุ๊กก็ได้ครับมันทำงานช่วง 2011 ถึง 2014เท่านั้นช่วงปกติไม่รอดเนี่ยครับเนี่ยก็ trade น้อยเหมือนเดิมหนักกว่าเดิมอีกเห็นไหมครับ ตอนนี้ติดลบ 14%ดูซิครับ ลงไปที่ MDD นี่ที่บอกว่า -25 คราวนี้ -13 ไม่จริงหรอก นี่น่ะครับ อืม fix เกินไปอันนี้ก็คือสรุปแล้วน่ะครับว่าคัวนี้เนี่ยถ้าไม่โยนทิ้งเลยอาจจะต้องรื้อกันยกใหญ่อันนั้นอันแรก อันที่สองมาอ่ะคืออะไรเดี๋ยวหาว่าลบลู่ถ้าเราเริ่มปี 2004 ไปปิดตอนปี 2014 เป็นเท่าไหร่อันนี้ทำให้ดูเฉยๆน่ะครับไม่ได้จะสื่ออะไรแค่สงสัยเป็นการส่วนตัวน่ะครับต่อให้ค่าออกมาได้ดีมหาศาลเนี่ยก็ต้องพึงระวัง backtest น่ะครับ อ่ะเปิดออกมาเห็นไหมครับนี่ออกมาอุ๊ยย200กว่าpercent ดีใจมากเลยอ่ะ เอ่อ strategy เรามี come aliveเหมือนเดิมครับเห็นไหมครับประมาณ 10ปี 11ปี trade อยู่แค่ 200 ครั้งสรุปปีละ 20 ครั้งน้อยไปน่ะครับรับไม่ได้ มาดู charts ดีกว่าequity curve จะเป็นตัวฟ้องเลยเห็นไหมครับไม่เคยมีอะไรที่ดีกับเขาเลยเนี่ย ยกเว้น 20 ปี หรือ 40ปี เกิดที่ช่วง 2012 บังเอิ๊ญ บังเอิญ ดูซิครับเนี่ยแล้วท่านจะกล้า trade ไหมครับอ่าอันนี้ก็เป็นการเตือนเป็นการโชว์ให้ดูน่ะครับว่าไอ้ strategy เนี่ยมันใช้ได้เฉพาะช่วงนี้หรือป่าว อย่างกรณีเนี่ยเราเรียกได้เลยว่า curve fitting ถ้าไม่มีปี 2012 ,2013 ไอ้ตัวนี้ตายครับ อ่าอันนี้ก็เป็นการโชว์ให้ดูน่ะครับ concept ของ in sample กับ out of sample ว่ามันดียังไงมันจะได้ช่วยเตือนท่านน่ะครับถ้าท่านเจอกรณีอย่างเนี่ยอย่าเสียใจน่ะครับว่าเสีย เอ่อ formula ล้านเหรียญ น่ะครับไม่เกี่ยวน่ะครับ ไม่งั้นเขารวยกันหมดแล้วน่ะครับท่านควรจะดีใจ อ่อเพราะความรู้ที่มีอยู่เนี่ยทำให้ท่าน test แล้วมันเตือนกลับมาว่าอย่าไปเสี่ยงกับ strategy นี้ ok ไหมครับเดี๋ยวผมเปิดสูตรให้ดูหน่อยอย่าพูดลอยๆ ดูสูตรซิครับมีอยู่แค่เนี่ย กับแค่เนี่ย ท่านคิดว่าจะ 1 ล้าน จะ10 ล้าน จะ 100 ล้านเนี่ยจะมาจากแค่เนี่ยหรือครับ ถ้าท่านคิดว่าท่านoptimize เป็นเนี่ยท่านจะทำเงินเป็นปีละ 10 ,10 ล้านหรือครับไม่ใช่น่ะครับ อืมถ้ามันง่ายอย่างงี้เขาก็…อ่ะผมว่าพวกท่านน่าจะคิดกันเองออกน่ะครับ งั้นใน VDO ส่วนนี้เราก็พูดเรื่อง in sample , out of sample ไปแล้ว และเราก็โชว์กรณี curve fitting ก็คืออะไรไอ้ strategy นี่ไม่ได้ดีอะไรกับเขาหรอกมันแค่ฟลุ๊กช่วงปี 2012 อย่างเดียวเท่านั้นแหละผ่านมา 10ปีมีอย่างนี้ปีเดียวต่อให้มัน run ได้อย่างนั้นจริงๆน่ะครับ คนเราก็รอไม่ไหวครับ 10 ปี อ่ะขอบคุณครับ

เพิ่มเติม: In Sample and Out Of Sample