Backtesting Trading กลยุทธ์ Matlab
ในขณะที่ฉันชอบที่คำถามนี้จะไปฉันจะแนะนำให้ทำคอนกรีตเล็ก ๆ น้อย ๆ คุณต้องการเรียนรู้อะไรบ้างในส่วนของกระบวนการทำ backtesting ช่วงนี้สามารถประเมินได้จากที่ใดโดยประมาณเพียงผลตอบแทนจากการลงทุนโดยปกติแล้วผลตอบแทนจากกลยุทธ์ของคุณจะได้รับการปรับใช้กฎการก่อให้เกิดพอร์ตการลงทุนแบบเต็มรูปแบบ ndash Constantin Dec 30 14 at 21:06 จะซื่อสัตย์ฉัน don t ทราบมากเกี่ยวกับ backtesting. ฉันได้รับแจ้งว่าฉันจะต้องทำ backtest กลยุทธ์ใหม่หรือปรับปรุงหลักสูตรปัจจุบันในระหว่างการฝึกงานของฉัน ดังนั้นฉันต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องก่อนที่จะเริ่มต้น อะไรคือส่วนต่างๆของมัน backdest ง่ายๆโดยทั่วไปจะประกอบด้วยสองขั้นตอน: การคำนวณผลตอบแทนของพอร์ตการลงทุนที่เกิดจากกฎการสร้างพอร์ตการลงทุนของคุณ (หรือกลยุทธ์การซื้อขาย) ความเสี่ยงในการปรับพอร์ตการลงทุนโดยใช้ รูปแบบการกำหนดราคาทรัพย์สินขั้นตอนที่ 2 เป็นเพียงการถดถอยและการคำนวณง่ายมากใน Matlab สิ่งที่ยากกว่าคือการใช้ขั้นตอนที่ 1 ซึ่งจะทำให้คุณรู้สึกสะดวกสบายใน Matlab และมีวิธีต่างๆในการทำเช่นนี้ ถ้าคุณรู้วิธีการถดถอย OLS ใน Matlab สิ่งที่คุณควรเน้นคือ manipulations เมทริกซ์ทุกชนิด การสร้าง Matlab Portfolio และการคำนวณผลตอบแทนเพื่อให้ตัวอย่างของวิธีการใช้กลยุทธ์การซื้อขายแบบดั้งเดิมใน Matlab ให้สมมติว่าข้อมูลการคืนเงินรายเดือนและระยะเวลาการถือครองสม่ำเสมอของหนึ่งเดือนกับสินทรัพย์ n ในช่วง k ที่ i in และ k เข้า สมมติว่าไม่มีการเปลี่ยนแปลงในองค์ประกอบของจักรวาลสต็อกของคุณเมทริกซ์ผลตอบแทนของคุณ X มีขนาด k เท่า n X เริ่มต้น amp x amp จุดแอมป์ amp amp x amp จุดแอมป์ x vdots amp ddots amp vdots amp ddots amp vdots x จุดแอมป์ amp amp x amp จุดแอมป์ x vdots amp ddots amp vdots amp ddots amp vdots x จุดแอมป์ amp amp x จุดแอมป์ x end ที่ส่งกลับ จะคำนวณเป็น x frac -1 สมมติว่าเกณฑ์การคัดเลือกของคุณเป็นลักษณะของหุ้นที่มีอยู่ในความถี่รายเดือนคุณจะมีลักษณะเป็นเมทริกซ์ C. จากนั้นคุณสามารถเขียนอัลกอริทึมที่ระบุรายการเหล่านั้นใน C ซึ่งตรงกับเกณฑ์การเลือกของคุณ (เช่นเกินเกณฑ์ที่กำหนด ) และแทนที่รายการที่ตรงกัน (โดยที่ i และ t เหมือนกัน) ของเมตริกซ์ตัวบ่งชี้ I (ซึ่งได้รับการเตรียมใช้งานเป็นเมทริกซ์เป็นศูนย์โดยใช้ฟังก์ชันศูนย์) กับข้อมูล จากนั้นคุณสามารถคูณรายการของ I โดยผลตอบแทนของเมทริกซ์ X เพื่อให้ได้เมทริกซ์ R ซึ่งแสดงถึงผลตอบแทนที่เกิดจากการถือครองของคุณ จากนั้นคุณสามารถคำนวณค่าเฉลี่ยของรายการที่ไม่ใช่ศูนย์สำหรับแต่ละแถวของ R เพื่อดูเวกเตอร์ของผลตอบแทนของพอร์ตโฟลิโอ การปรับความเสี่ยงและการระบุผลตอบแทนที่ผิดปกติในขั้นตอนที่ 2 คุณเปรียบเทียบเวกเตอร์นี้กับผลตอบแทนตามปกติที่ได้จากการประมาณความถดถอยของแบบจำลองการกำหนดราคาทรัพย์สินเช่นแบบจำลอง Fama - ฝรั่งเศส โดยการลบเวคเตอร์ผลตอบแทนปกติออกจากเวคเตอร์ผลตอบแทนของพอร์ตลงทุนคุณจะทราบได้อย่างไรว่ากลยุทธ์การซื้อขายของคุณส่งผลให้ผลตอบแทนที่เป็นบวกผิดปกติซึ่งเป็นสิ่งที่ youre เล็งไว้ ข้อเสนอแนะหากคุณเป็นคนใหม่ของ Matlab ผมขอแนะนำให้คุณทำความคุ้นเคยกับมันให้เพียงพอเพื่อใช้กลยุทธ์แบบง่ายนี้ก่อนที่จะผ่อนคลายสมมติฐานที่เรียบง่าย (เช่นระยะเวลาการเก็บข้อมูลแบบสม่ำเสมอและระยะเวลา) และดำเนินการไปสู่การใช้งานที่มีความซับซ้อนมากขึ้น อีกครั้งสิ่งที่ฉันต้องการเน้นคือการนี้คุณจะต้องสะดวกสบายมากกับ Matlab และโดยเฉพาะอย่างยิ่งวิธีต่างๆในการจัดการการฝึกอบรมซึ่งอาจใช้เวลาสักครู่ ถ้าคุณไม่จำเป็นต้องใช้ Matlab สำหรับการฝึกงานของคุณและต้องการให้ได้ผลเร็วคุณสามารถทำขั้นตอนที่ 1 ใน Excel แทนซึ่งน่าเบื่อ แต่ไม่จำเป็นต้องมีการลงทุนครั้งแรก (คุ้มค่า) ที่คุณต้องทำเพื่อ Matlab เพื่อทำความคุ้นเคยกับ Matlab ผมแน่ใจว่าคุณได้ค้นพบเอกสารที่ดีเยี่ยมที่ได้รับมาแล้ว ที่ฉันเป็นทรัพยากรที่มีค่าที่สุดเพียงอย่างเดียวและน่าจะเป็นประโยชน์มากกว่าทรัพยากรที่เฉพาะเจาะจงมากขึ้นเฉพาะด้านการเงิน (ซึ่งฉันจะรอจนกว่าคุณจะคุ้นเคยกับ Matlab) ทั้งหมดที่จำเป็นในการกำหนดผลตอบแทนตามปกติคือการถดถอย OLS และความเข้าใจพื้นฐานของรูปแบบการกำหนดราคาทรัพย์สิน ตอบโพสต์นี้เป็นเรื่องเกี่ยวกับวิธีการที่สำคัญคือการใช้วิธีการเพิ่มประสิทธิภาพชนิดต่างๆเช่นอัลกอริทึมทางพันธุกรรมและ parallelisation เพื่อให้ได้ผลลัพธ์ได้เร็วขึ้น แม้ว่าขั้นตอนวิธีทางพันธุกรรม (วิวัฒนาการ) จะอธิบายได้เป็นอย่างดีในการสัมมนาทางเว็บของ MathWorks ในตัวอย่าง แต่จะใช้สำหรับการเพิ่มประสิทธิภาพของกลุ่มกลยุทธ์จากชุดเท่านั้น นี่เป็นตัวอย่างที่ดีของการใช้อัลกอริทึมเหล่านี้อย่างไรก็ตามมันเกิดขึ้นว่ามีความจำเป็นที่จะต้องกำหนดตัวแปรหลายตัวแปรด้วยช่วงเวลาที่สำคัญสำหรับกลยุทธ์หนึ่ง ๆ คุณจะไม่ได้รับผลกระทบใด ๆ กับการวนซ้ำหนึ่งครั้งและการคำนวณแบบ parallelisation ของกระบวนการ 8211 อาจใช้เวลาหลายวัน . แน่นอนว่ามีกลยุทธ์ในขั้นตอนสุดท้ายของการเพิ่มประสิทธิภาพ เมื่อเราแทบจะรู้ว่ากลยุทธ์การซื้อขายประสบความสำเร็จเราสามารถรออีกหลายวันได้หรือเช่ากลุ่มทั้งหมด - ผลอาจจะคุ้มค่า อย่างไรก็ตามถ้าเราต้องการประมาณผลของกลยุทธ์ขนาดใหญ่และตัดสินใจว่าคุ้มค่ากับการใช้เวลาหรือไม่แล้วขั้นตอนวิธีเชิงพันธุกรรมอาจเหมาะอย่างยิ่ง เรามีความเป็นไปได้ที่จะใช้สามวิธีในการเพิ่มประสิทธิภาพของกลยุทธ์ใน WFAToolbox: วิธี Linear 8211 เป็นโหมดปกติในการจัดเรียงซึ่งคุณจะเห็นผลการค้นหาระดับกลาง (suboptimal) ทั้งหมด ให้ความแม่นยำสูงสุด ใช้วิธีการแบบขนาน 8211 เมล็ดทั้งหมดของ CPU ของคุณ ไม่อนุญาตให้เห็นผลลัพธ์ระดับกลาง แต่เพิ่มความเร็วในการดำเนินการอย่างมาก ให้ความแม่นยำสูงสุดระหว่างการเพิ่มความเร็วในการคำนวณ วิธีทางพันธุกรรม 8211 ใช้ขั้นตอนวิธีการเพิ่มประสิทธิภาพเชิงวิวัฒนาการ ช่วยให้สามารถมองเห็นค่าต่ำสุดได้ แต่ให้ผลลัพธ์ใกล้เคียงกับสิ่งที่ดีที่สุด ไม่ใช่วิธีที่ถูกต้อง แต่แม่นยำมากพอสำหรับการเริ่มใช้กลยุทธ์ เร็วมาก. เรามักถูกถามว่า WFAToolbox - Walk-Forward Analysis Toolbox สำหรับ MATLAB มีความสามารถในการใช้ GPU ในการคำนวณได้หรือไม่ แต่น่าเสียดายที่ GPU ไม่เหมาะกับงานทั้งหมดและการใช้งานมีความเฉพาะเจาะจงมาก เพื่อที่จะใช้คุณต้องปรับตรรกะและรหัสของแต่ละกลยุทธ์สำหรับการทดสอบแกนกราฟิก แต่น่าเสียดายที่เนื่องจากความไม่แพร่หลายของวิธีการดังกล่าวไม่สามารถใช้ GPU ใน WFAToolbox ได้ ส่วนที่ 2 ของการอภิปรายเกี่ยวกับปัญหาและแนวทางแก้ไขในการทดสอบและวิเคราะห์กลยุทธ์การซื้อขายอัลกอริทึมใน MATLAB ผมขอเชิญคุณอ่านโพสต์นี้เกี่ยวกับปัญหาที่เกิดขึ้นจากการไม่สามารถมองเห็นกระบวนการของซอฟต์แวร์ได้ในการทดสอบระบบการซื้อขาย ในประสบการณ์การทำงานของฉันฉันมักจะวิเคราะห์แพลตฟอร์มยอดนิยมอื่น ๆ สำหรับการทดสอบกลยุทธ์การซื้อขาย เช่น TradeStation MetaStock Multicharts ฯลฯ และฉันรู้สึกประหลาดใจเสมอที่ความสนใจเพียงเล็กน้อยในการสร้างภาพของขั้นตอนการทดสอบ เป็นสิ่งที่เมื่อเราไม่เห็นผลของค่ากลางขั้นต่ำที่ต่ำสุดของพารามิเตอร์ที่ดีที่สุดเรามักจะโยนทองและสิ่งสกปรก เรื่องนี้เกิดขึ้นเนื่องจากการสุ่มตัวอย่างแบบกว้างเกินไปกลยุทธ์นี้จะปรับพารามิเตอร์ตามวิธีที่เราเห็นว่าเป็นกลยุทธ์ที่สมบูรณ์แบบซึ่งล้มเหลวในชีวิตจริงหรือเห็นข้อเสนอหนึ่งหรือสองข้อซึ่งควรจะเป็นที่ดีที่สุดเพราะได้รับเลือกข้อมูลช่วงเวลาดังกล่าวที่ กลยุทธ์การซื้อขายที่ดีที่สุดคือการซื้อและระงับ แต่เหตุใดจึงต้องมีกลยุทธ์อื่น ๆ ที่จำเป็นสำหรับการแสดงกระบวนการทดสอบกลยุทธ์การซื้อขายใน MATLAB (ที่เสนอในการสัมมนาทางเว็บ) ดังนั้นไม่พบผลลัพธ์ขั้นกลางเราต้องปรับเปลี่ยนพารามิเตอร์เพื่อลอง เพื่อให้ได้ข้อมูลที่ดีขึ้นหรือดูใน 3D หรือ 4D บางส่วน (สีคือมิติที่ 4) ตามที่เสนอในการสัมมนาผ่านเว็บ การวิเคราะห์ค่าในช่องว่างมิติ N สามารถเป็นทางเลือกได้ แต่มีข้อ จำกัด หลายประการ: ถ้ามีมากกว่า 4 มิติเมื่อคุณเห็นสัญญาณและความถี่ที่ปรากฏในช่วงราคาคุณมีเกือบทั้งหมด การแสดงผลที่จำเป็นของกลยุทธ์ของคุณ: ความถี่ของการทำธุรกรรมความสามารถในการทำกำไรของพวกเขา (เส้นโค้งรายได้) ความถูกต้องของการเปิดความคล้ายคลึงกับค่าต่ำสุดอื่น ๆ ฯลฯ ที่ไม่สามารถพูดเกี่ยวกับประสิทธิภาพในพื้นที่ N มิติที่มีข้อมูลที่เป็นประโยชน์ทั้งหมด คือในความเป็นจริงว่าค่าที่เหมาะสมไม่ได้เป็นเพียงหนึ่งเดียว แต่มีทั้งช่วงของค่าต่ำสุดในพื้นที่หนึ่งหรือมากกว่า ในขณะที่การเพิ่มประสิทธิภาพกลยุทธ์ใน WFAToolbox 8211 Walk-Forward Analysis Toolbox for MATLAB174 เป็นค่าที่เหมาะสมใหม่จะพบสัญญาณกลยุทธ์การค้าในระยะเวลาในตัวอย่างและออกจากตัวอย่างทันทีปรากฏในแผนภูมิเพื่อให้คุณสามารถควบคุมสิ่งที่ช่วงของตัวเลือกที่คุณควรกำหนดและคุณยังสามารถหยุดการเพิ่มประสิทธิภาพ โดยไม่ต้องรอให้จบการทดสอบเนื่องจากเป็นที่ชัดเจนว่ามีบางอย่างผิดพลาดหรือทุกอย่างเรียบร้อยดีสวัสดีฉันชื่อ Igor Volkov ฉันได้รับการพัฒนากลยุทธ์การซื้อขายอัลกอริธึมตั้งแต่ปีพ. ศ. 2549 และเคยทำงานในกองทุนเฮดจ์ฟันด์หลายแห่ง ในบทความนี้ฉันต้องการจะพูดคุยเกี่ยวกับปัญหาที่เกิดขึ้นระหว่างทางนักพัฒนากลยุทธ์การซื้อขายของ MATLAB ในระหว่างการทดสอบและวิเคราะห์ตลอดจนนำเสนอแนวทางที่เป็นไปได้ ฉันได้ใช้ MATLAB สำหรับการทดสอบกลยุทธ์ขั้นตอนวิธีมาตั้งแต่ปี 2007 และฉันได้ข้อสรุปว่านี่ไม่ใช่เครื่องมือการวิจัยที่สะดวกที่สุด แต่ยังมีประสิทธิภาพมากที่สุดเนื่องจากทำให้สามารถใช้โมเดลทางสถิติและ econometric แบบซับซ้อนเครือข่ายประสาท, การเรียนรู้ด้วยเครื่อง, ตัวกรองแบบดิจิตอล, ตรรกะคลุมเครือ, ฯลฯ โดยการเพิ่มกล่องเครื่องมือ ภาษา MATLAB ค่อนข้างง่ายและได้รับการจัดทำเป็นเอกสารไว้อย่างดีดังนั้นแม้แต่โปรแกรมที่ไม่ใช่โปรแกรม (เช่นฉัน) สามารถควบคุมได้ ทุกอย่างเริ่มต้นแล้ว มันเป็นปี 2008 (ถ้าฉันไม่เข้าใจผิด) เมื่อการสัมมนาทางเว็บเรื่องแรกเกี่ยวกับการค้าอัลกอริธึมใน MATLAB กับ Ali Kazaam ได้รับการเผยแพร่แล้วซึ่งครอบคลุมหัวข้อการเพิ่มประสิทธิภาพของกลยุทธ์ง่ายๆตามตัวชี้วัดทางเทคนิค ฯลฯ แม้ว่าจะมีโค้ด 8220chaotic8221 พอที่จะใช้ พวกเขาทำหน้าที่เป็นจุดเริ่มต้นของการวิจัยและการปรับปรุงรูปแบบการทดสอบและการวิเคราะห์ซึ่งจะช่วยให้สามารถใช้กล่องเครื่องมือและอิสรภาพของการดำเนินการของ MATLAB ในระหว่างการสร้างกลยุทธ์ทางการค้าของตนเองได้ในขณะเดียวกันก็จะช่วยให้สามารถควบคุมกระบวนการนี้ได้ ของการทดสอบและข้อมูลที่ได้รับและการวิเคราะห์ในภายหลังของพวกเขาจะเลือกพอร์ตการลงทุนที่มีประสิทธิภาพของระบบการซื้อขายที่มีประสิทธิภาพ ต่อมาการสัมมนาผ่านเว็บของ Mathworks ได้รับการอัปเดตทุกปีและได้มีการนำเสนอองค์ประกอบที่น่าสนใจมากขึ้นเรื่อย ๆ ดังนั้นการสัมมนาทางเว็บครั้งแรกเกี่ยวกับการซื้อขายคู่ (การเก็งกำไรทางสถิติ) โดยใช้กล่องเครื่องมือ Econometric Toolbox จัดขึ้นในปี 2010 แม้ว่ากล่องเครื่องมือทดสอบและการวิเคราะห์จะยังคงเหมือนเดิม ในปี 2013 กล่องเครื่องมือการซื้อขายจาก Mathworks ปรากฏขึ้นซึ่งอนุญาตให้เชื่อมต่อ MATLAB กับโบรกเกอร์ที่แตกต่างกันเพื่อใช้งานแอพพลิเคชันของตน แม้ว่าจะมีโซลูชั่นอัตโนมัติสำหรับการทำธุรกรรม แต่จากจุดนี้ MATLAB อาจเป็นระบบการพัฒนากลยุทธ์การซื้อขายแบบเต็มรูปแบบตั้งแต่การโหลดข้อมูลจนถึงการดำเนินกลยุทธ์การซื้อขายอัตโนมัติ ทำไมควรทุก Algotrader Reinvent ล้ออย่างไรก็ตาม Mathworks ไม่ได้นำเสนอโซลูชั่นที่สมบูรณ์สำหรับการทดสอบและการวิเคราะห์ของกลยุทธ์ 8211 รหัสเหล่านั้นที่คุณได้รับจาก webinars เป็นองค์ประกอบเฉพาะของการทดสอบระบบเต็มรูปแบบและมันก็จำเป็นต้องปรับเปลี่ยนพวกเขา , ปรับแต่งและเพิ่มลงใน GUI เพื่อความสะดวกในการใช้งาน มันต้องใช้เวลามากดังนั้นจึงตั้งคำถามว่าอะไรคือยุทธศาสตร์ที่ต้องทำผ่านกระบวนการเดียวกันในการทดสอบและการวิเคราะห์ซึ่งจะช่วยให้สามารถจำแนกได้ว่ามีเสถียรภาพและใช้งานได้ดี 8211 ดังนั้นทำไมทุกคนควรปรับแต่งล้อเลื่อนและเขียนใหม่ hisher รหัสของตัวเองสำหรับกลยุทธ์การทดสอบที่เหมาะสมใน MATLAB ดังนั้นจึงตัดสินใจที่จะสร้างผลิตภัณฑ์ที่จะช่วยให้สามารถทำกระบวนการทั้งหมดที่เกี่ยวข้องกับการทดสอบและวิเคราะห์กลยุทธ์การซื้อขายแบบอัลกอลิกึมโดยใช้อินเทอร์เฟซที่ใช้งานง่ายและใช้งานง่าย ประการแรกฉันต้องการจะตอบคำถามต่อไปนี้: เกิดอะไรขึ้นกับบล็อก 1. Jev Kuznetsov ไม่ใช่เจ้าของอีกต่อไปบล็อกถูกซื้อจากเพื่อนของเรา Jev Kuznetsov ผู้ซึ่งย้ายไปที่ blog tradingwithpython. blogspot คนอื่น ๆ ของเขา เขาสรุปว่า Python ดีกว่า MATLAB เพื่อการค้าซึ่งถือว่าผิด MATLAB ยังคงเป็นหนึ่งในซอฟต์แวร์ที่ดีที่สุดในโลกสำหรับการค้าอัลกอริทึม IMHO (ฉันมีข้อเท็จจริงบางอย่างเกี่ยวกับเรื่องนี้แม้ว่าสำหรับการอภิปรายในอนาคต) 2. เราเปลี่ยนแบรนด์จากช่วงเวลานี้บล็อกจะเรียกว่า MatlabTrading ซึ่งเป็นเรื่องที่เข้าใจง่ายมากขึ้นเกี่ยวกับหัวข้อที่จะมี นอกจากนี้ชื่อโดเมนได้ถูกเปลี่ยนเป็น matlabtrading แทนการเริ่มต้นการซื้อขาย matlab-blogspot แม้ว่าโดเมนเดิมจะยังคงเปลี่ยนเส้นทางจากชื่อโดเมนหลักก็ตาม สิ่งที่จะเกิดขึ้นกับบล็อก 1. บทความและบทความอื่น ๆ เราหวังว่าจะนำชีวิตไปสู่บล็อกนี้โดยการโพสต์เนื้อหาที่เกี่ยวข้องสัปดาห์ละครั้งหรือสองครั้ง ในช่วง 2-3 เดือนแรกเราจะโพสต์บทความและวิดีโอเหล่านั้นส่วนใหญ่ที่เรามีอยู่แล้วเพื่อให้ผู้อ่านที่รักของเราสามารถค้นหาข้อมูลเกี่ยวกับทรัพยากรหนึ่ง ๆ และมีการเชื่อมโยงกับเนื้อหาเหล่านั้นได้ง่ายขึ้น จากนั้นเรามีแผนจะเขียนบทความเกี่ยวกับแง่มุมเชิงปฏิบัติของการซื้อขายอัลกอริทึมใน MATLAB วิธีการสร้างกลยุทธ์การซื้อขายอัตโนมัติแบบใหม่ ๆ เช่นการซื้อขายคู่ค้าทางสถิติหมายถึงการผันกลับของตลาดกลยุทธ์การซื้อขายที่เป็นกลางตามวงการ bollinger cointegration band kalman เป็นต้นสำหรับสินค้าโภคภัณฑ์หุ้นและ Forex (Support Vector Machines) และวิธีการอื่น ๆ สร้างกลยุทธ์การซื้อขายที่มีประสิทธิภาพโดยใช้การจัดการเงินในการทดสอบการเดินไปข้างหน้าเพื่อการลงทุนเงินทุนใหม่ของคุณ (วิทยาศาสตร์เกี่ยวกับการรับเงิน 1 ล้านเหรียญจาก 10 K) ในปีที่มีคะแนนสูงสุด แต่ประเมินความเสี่ยงและรางวัลเหงื่อ) บางทีหลังจากอ่านเรื่องนี้ youve คิดว่านี้เป็นไปได้อีกบทความโง่สำหรับคนจนเหล่านั้นกำลังมองหาวิธีที่จะกลายเป็นคนรวยผ่านการซื้อขายในอัตราแลกเปลี่ยนและสิ่งที่ เราเป็นคนที่ทำงานใน MATLAB และส่วนใหญ่ของเราคือนักวิทยาศาสตร์และผู้เชี่ยวชาญด้านนี้ดังนั้นทุกสิ่งทุกอย่างก็จริงจัง 2 การโต้ตอบมากขึ้นฉันจะมีความสุขถ้าเราทุกคนสามารถเกี่ยวข้องผ่านความเห็นในการโพสต์ สมัครรับข่าวสารของเราเพื่อรับการแจ้งเตือนเกี่ยวกับโพสต์และกิจกรรมใหม่ ๆ หลังจากนี้เรามีแผนที่จะจัดสัมมนาทางเว็บของ Google แฮงเอาท์ อย่าพลาดคลิกปุ่ม "ติดตาม" ที่มุมขวาบนเพื่อเข้าร่วมชุมชนของเรา สิ่งที่คุณต้องการอ่านในโพสต์บล็อกของเราคุณสามารถแนะนำหัวข้อใดได้โปรดเขียนที่นี่ในความคิดเห็น ในการโพสต์ก่อนหน้านี้ฉันได้ข้อสรุปว่าการซื้อขายคู่ใกล้ชิดกับคู่ค้าไม่เป็นผลกำไรในวันนี้เหมือนกับที่เคยเป็นมาก่อนปี 2553 ผู้อ่านชี้ว่าอาจเป็นไปได้ว่าลักษณะการกระจายตัวของค่าเฉลี่ยของการแพร่กระจายจะเปลี่ยนไปตามช่วงเวลาที่สั้นกว่า . ฉันก็ตัดสินใจที่จะทดสอบสมมติฐานนี้ ขณะนี้มีเพียงหนึ่งคู่เท่านั้นที่ได้รับการทดสอบ: 100 SPY vs -80 IWM Backtest ดำเนินการกับข้อมูลแถบ 30 วินาทีตั้งแต่ 11.2011 ถึง 12/2012 กฎมีความเรียบง่ายและคล้ายคลึงกับกลยุทธ์ที่ฉันทดสอบในโพสต์ครั้งล่าสุด: ถ้าการส่งคืนบาร์ของคู่นั้นสูงกว่า 1 ใน z-score ให้ทำการซื้อขายแถบถัดไป ผลดูสวยมาก: ฉันคิดว่านี่เป็นหลักฐานเพียงพอที่ยังคงมีค่าเฉลี่ยการพลิกกลับในระดับ 30 วินาที หากคุณคิดว่าแผนภูมินี้ดีเกินกว่าที่จะเป็นจริง ไม่ได้มีการพิจารณาต้นทุนการทำธุรกรรมหรือการแพร่กระจายราคาเสนอถาม ในความเป็นจริงฉันจะสงสัยว่าจะมีผลกำไรใด ๆ เหลือหลังจากหักค่าใช้จ่ายในการซื้อขายทั้งหมดแล้ว ยังคงแผนภูมิชนิดนี้คือแครอท dangling หน้าจมูกของฉันทำให้ฉันไป ข่าวดีทุกคนตามการคำนวณของฉัน (ซึ่งฉันหวังเป็นอย่างยิ่งว่าไม่ถูกต้อง) การซื้อขายคู่แบบคลาสสิกตายแล้ว บางคนจะไม่เห็นด้วยอย่างยิ่ง แต่นี่คือสิ่งที่ฉันพบ: ให้ใช้กลยุทธ์สมมุติที่ทำงานบนตะกร้าของ etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA จาก etfs เหล่านี้ 90 ที่ไม่ซ้ำกัน คู่สามารถทำ คู่แต่ละคู่ถูกสร้างขึ้นเพื่อกระจายเป็นกลาง กฎของกลยุทธ์: ในแต่ละวันสำหรับแต่ละคู่คำนวณค่า z ตามค่าส่วนเบี่ยงเบนมาตรฐาน 25 วัน ถ้า z-score gt threshold ไปสั้น ๆ ใกล้วันถัดไปถ้า z-score lt-threshold ยาวไปแล้วให้ปิดในวันถัดไปเพื่อให้ง่ายขึ้นการคำนวณทำได้โดยไม่มีการจัดการเงินทุนใด ๆ (สามารถมีได้ถึง 90 คู่ใน portfolio ในแต่ละวัน) ค่าใช้จ่ายในการทำธุรกรรมจะไม่รวมอยู่ด้วย หากต้องการใช้กลยุทธ์นี้เพียงอย่างเดียวกลยุทธ์นี้จะติดตามการคืนค่าเฉลี่ยของตลาดกลางวันหนึ่ง นี่คือผลลัพธ์ที่จำลองขึ้นสำหรับเกณฑ์หลายข้อไม่ว่าเกณฑ์ใดที่ใช้กลยุทธ์นี้มีผลกำไรสูงในปีพ. ศ. 2551 ซึ่งนับว่าค่อนข้างไร้ค่าตั้งแต่ต้นปี 2010 นี่ไม่ใช่ครั้งแรกที่ฉันเจอการเปลี่ยนแปลงนี้ในการคืนค่าเฉลี่ย พฤติกรรมใน etfs ไม่ว่าฉันพยายามอะไรฉันก็ไม่มีโชคในการหากลยุทธ์การซื้อขายคู่ที่จะทำงานใน ETFs ที่ผ่านมา 2010 ข้อสรุปของฉันคือรูปแบบ stat-arb แบบนี้เพียงแค่ไม่ได้ตัดมันใด ๆ เพิ่มเติมการตรวจสอบย้อนกลับตรวจสอบรุ่นทางการเงินของคุณกับประวัติศาสตร์ ข้อมูล Backtesting เป็นกรอบที่ใช้ข้อมูลในอดีตเพื่อตรวจสอบรูปแบบทางการเงินรวมทั้งกลยุทธ์การซื้อขายและรูปแบบการบริหารความเสี่ยง ขึ้นอยู่กับเป้าหมายของการตรวจสอบการใช้มืออาชีพทางการเงินมากกว่าหนึ่งตัวบ่งชี้หรือวิธีการวัดประสิทธิภาพของรูปแบบทางการเงิน การทำ Backtesting เป็นไปอย่างต่อเนื่องในการซื้อขายและการบริหารความเสี่ยง เป็นผลให้มีจำนวนของเทคนิค backtesting โดยเฉพาะที่เฉพาะเจาะจงกับทั้งสองพื้นที่ ในการซื้อขายเทคนิคการทำ backtesting ทั่วไป ได้แก่ การทดสอบในตัวอย่างกับการทดสอบที่ไม่ได้เป็นตัวอย่างการวิเคราะห์เดินไปข้างหน้าหรือการเพิ่มประสิทธิภาพแบบเดินหน้าการวิเคราะห์ระดับตราสารเทียบกับการประเมินระดับพอร์ตต่างๆในการจัดการความเสี่ยงการทำ backtesting มักใช้กับมูลค่า - - เสี่ยง (VaR) และเป็นที่รู้จักกันว่า VaR backtesting มีวิธีการวัด VaR backtesting เช่น Basels traffic light test การทดสอบ Binomial Kupiecs สัดส่วนของการทดสอบความล้มเหลว Kupiecs เวลาจนถึงการทดสอบความล้มเหลวครั้งแรก Christoffersens การทดสอบแบบผสมผสานการทดสอบแบบผสม Christoffersens เงื่อนไขการทดสอบความเป็นอิสระแบบอิสระ Haas เวลาระหว่างความล้มเหลวหรือการทดสอบ Kupiec ผสมระหว่างเวลา Haas ระหว่างความล้มเหลว test Select Your BackTesting ประสบความสำเร็จในระดับประเทศของ Algorithmic Trading Strategies - Part I บทความนี้กล่าวถึงชุดการซื้อขายเชิงปริมาณซึ่งเริ่มต้นด้วยคู่มือเริ่มต้นและการระบุกลยุทธ์ บทความต่อไปนี้มีเนื้อหาเกี่ยวข้องมากขึ้นอีกทั้งยังเป็นที่นิยมอย่างมากดังนั้นฉันจึงดำเนินการต่อในหลอดเลือดดำนี้และให้รายละเอียดเกี่ยวกับหัวข้อการทำ backtesting ของกลยุทธ์ การทำ backtesting อัลกอริธึมต้องอาศัยความรู้ในหลายด้านรวมถึงจิตวิทยาคณิตศาสตร์สถิติการพัฒนาซอฟต์แวร์และโครงสร้างการตลาดแบบแลกเปลี่ยน ฉัน couldnt หวังว่าจะครอบคลุมทุกหัวข้อเหล่านั้นในบทความหนึ่งดังนั้น Im จะแยกพวกเขาออกเป็นสองหรือสามชิ้นเล็ก สิ่งที่เราจะพูดถึงในส่วนนี้คือเริ่มต้นด้วยการกำหนด backtesting แล้วฉันจะอธิบายพื้นฐานของวิธีการดำเนินการ จากนั้นผมจะอธิบายถึงอคติที่เราได้กล่าวถึงในคู่มือเริ่มต้นเพื่อการค้าเชิงปริมาณ ถัดไปฉันจะนำเสนอการเปรียบเทียบของตัวเลือกซอฟต์แวร์ backtesting ต่างๆ ในบทความต่อไปเราจะดูรายละเอียดเกี่ยวกับการใช้งานกลยุทธ์ที่แทบจะกล่าวถึงหรือละเลย นอกจากนี้เรายังจะพิจารณาวิธีการทำ backtesting ให้เป็นจริงมากขึ้นโดยการรวม idiosyncrasies ของการซื้อขายแลกเปลี่ยน จากนั้นเราจะหารือเกี่ยวกับค่าใช้จ่ายในการทำธุรกรรมและวิธีการสร้างโมเดลเหล่านี้อย่างถูกต้องในการตั้งค่า backtest เราจะจบลงด้วยการอภิปรายเกี่ยวกับประสิทธิภาพการทำงานของ backtests ของเราและในที่สุดก็เป็นตัวอย่างของกลยุทธ์เชิงปริมาณทั่วไปที่รู้จักกันในชื่อการค้าคู่ที่ถอยหลัง ให้เริ่มต้นด้วยการพูดถึงสิ่งที่ backtesting และทำไมเราควรนำมาออกในการซื้อขาย algorithmic ของเรา การทำ Backtesting Algorithmic การซื้อขายคืออะไรนอกเหนือจากประเภทการลงทุนประเภทอื่น ๆ เพราะเราสามารถคาดการณ์ความคาดหวังเกี่ยวกับประสิทธิภาพในอนาคตได้ดีขึ้นจากผลการดำเนินงานในอดีตอันเป็นผลมาจากการมีข้อมูลมากมาย ขั้นตอนการดำเนินการนี้เรียกว่า backtesting ในแง่ที่เรียบง่ายการทำย้อนหลังจะดำเนินการโดยการเปิดเผยอัลกอริธึมกลยุทธ์เฉพาะของคุณเป็นข้อมูลทางการเงินที่ผ่านมาซึ่งจะนำไปสู่ชุดของสัญญาณการซื้อขาย การค้าแต่ละครั้ง (ซึ่งเราจะหมายถึงการส่งสัญญาณรอบสองครั้ง) จะมีผลกำไรหรือขาดทุนที่เกี่ยวข้อง การสะสมกำไรนี้ในช่วงระยะเวลาของการทำ backtest ของกลยุทธ์จะนำไปสู่ผลกำไรและขาดทุนทั้งหมด (หรือที่เรียกว่า PL หรือ PnL) นั่นคือสาระสำคัญของความคิดแม้ว่าแน่นอนว่าปีศาจอยู่ในรายละเอียดเสมอสิ่งที่เป็นเหตุผลสำคัญสำหรับการทำ backtesting กลยุทธ์ algorithmic การกรอง - ถ้าคุณจำได้จากบทความเกี่ยวกับ Strategy Identification เป้าหมายของเราในขั้นตอนการวิจัยเบื้องต้นคือการสร้างท่อกลยุทธ์และกรองกลยุทธ์ที่ไม่เป็นไปตามเกณฑ์ที่กำหนด Backtesting ให้กลไกการกรองอื่น ๆ เนื่องจากเราสามารถกำจัดกลยุทธ์ที่ไม่ตรงกับความต้องการของเราได้ การสร้างแบบจำลอง - Backtesting ช่วยให้เราสามารถทดสอบโมเดลใหม่ ๆ ของปรากฏการณ์ตลาดบางอย่างได้อย่างปลอดภัยเช่นค่าใช้จ่ายในการทำธุรกรรมการกำหนดลำดับการสั่งซื้อความล่าช้าสภาพคล่องหรือปัญหาด้านจุลภาคในตลาดอื่น ๆ การเพิ่มประสิทธิภาพ - แม้ว่าการเพิ่มประสิทธิภาพกลยุทธ์จะเต็มไปด้วยอคติการทำ backtesting ช่วยให้เราสามารถเพิ่มประสิทธิภาพของกลยุทธ์ได้โดยการปรับเปลี่ยนปริมาณหรือค่าของพารามิเตอร์ที่เกี่ยวข้องกับกลยุทธ์นั้นและคำนวณสมรรถนะใหม่ การตรวจสอบ - กลยุทธ์ของเรามักมาจากภายนอกโดยใช้กลยุทธ์ทางกลยุทธ์ของเรา การทำย้อนกลับกลยุทธ์ช่วยให้แน่ใจว่าไม่ได้ใช้งานอย่างไม่ถูกต้อง แม้ว่าเราจะไม่ค่อยมีโอกาสเข้าถึงสัญญาณที่สร้างโดยกลยุทธ์ภายนอก แต่เรามักจะเข้าถึงเมตริกประสิทธิภาพเช่นอัตราส่วน Sharpe และ Drawdown ดังนั้นเราสามารถเปรียบเทียบกับการใช้งานของเราเองได้ Backtesting มีข้อดีสำหรับการซื้อขายแบบอัลกอลิกึม อย่างไรก็ตามไม่น่าจะเป็นไปได้ที่จะใช้กลยุทธ์อย่างตรงไปตรงมา โดยทั่วไปเมื่อความถี่ของกลยุทธ์เพิ่มขึ้นจะกลายเป็นเรื่องยากขึ้นอย่างถูกต้องเพื่อจำลองผลกระทบโครงสร้างจุลภาคของตลาดและการแลกเปลี่ยน สิ่งนี้นำไปสู่ backtests ที่ไม่น่าเชื่อถือและมีการประเมินผลกลยุทธ์ที่เลือกไว้อย่างเฉียบพลัน นี่คือปัญหาเฉพาะที่ระบบการดำเนินงานเป็นกุญแจสำคัญในการปฏิบัติงานด้านกลยุทธ์เช่นเดียวกับอัลกอริทึมความถี่สูงพิเศษ แต่น่าเสียดายที่ backtesting เต็มไปด้วยอคติทุกประเภท เราได้กล่าวถึงปัญหาบางอย่างในบทความก่อน ๆ แต่ตอนนี้เราจะพูดถึงประเด็นเหล่านี้ในเชิงลึก ความลำเอียงที่มีผลต่อกลยุทธ์ Backtests มีอคติหลายอย่างที่อาจส่งผลต่อประสิทธิภาพของกลยุทธ์ที่ได้รับการสนับสนุน แต่น่าเสียดายที่ความลำเอียงเหล่านี้มีแนวโน้มที่จะขยายผลการดำเนินงานมากกว่าที่จะหักจากนั้น ดังนั้นคุณควรพิจารณา backtest เพื่อเป็นข้อ จำกัด ด้านบนในอุดมคติของประสิทธิภาพจริงของกลยุทธ์ เกือบจะเป็นไปไม่ได้ที่จะกำจัดอคติจากการค้าอัลกอริธึมจึงเป็นหน้าที่ของเราในการลดผลกระทบเหล่านี้ให้ดีที่สุดเท่าที่จะเป็นไปได้เพื่อที่จะสามารถตัดสินใจเกี่ยวกับกลยุทธ์เชิงอัลกอริธึมของเราได้ มีอคติสำคัญสี่ประการที่ฉันต้องการจะพูดถึง มองไปข้างหน้าอคติ Survivorship อคติและความอดทนทางจิตวิทยาอคติ Optimisation Bias นี่อาจเป็นข้ออ้างที่สุดในทุกอคติในการทำ backtest การปรับหรือแนะนำพารามิเตอร์การซื้อขายเพิ่มเติมจนกว่าประสิทธิภาพของกลยุทธ์ในชุดข้อมูล backtest จะน่าสนใจมาก อย่างไรก็ตามเมื่ออยู่ประสิทธิภาพของกลยุทธ์สามารถแตกต่างกันอย่างเด่นชัด อีกชื่อหนึ่งสำหรับอคตินี้คือการปรับเส้นโค้งหรือการอายัดข้อมูล ความลำเอียงด้านการเพิ่มประสิทธิภาพเป็นเรื่องยากที่จะกำจัดได้เนื่องจากกลยุทธ์ของอัลกอริธึมมักเกี่ยวข้องกับพารามิเตอร์จำนวนมาก พารามิเตอร์ในกรณีนี้อาจเป็นเกณฑ์เกณฑ์การเข้าออกช่วงเวลามองย้อนกลับช่วงเวลาเฉลี่ย (เช่นพารามิเตอร์การปรับให้เรียบโดยเฉลี่ยเคลื่อนที่) หรือความถี่การวัดความผันผวน ความสามารถในการเพิ่มประสิทธิภาพสามารถลดลงได้โดยการรักษาจำนวนพารามิเตอร์ให้น้อยที่สุดและเพิ่มปริมาณจุดข้อมูลในชุดการฝึกอบรม ในความเป็นจริงอย่างใดอย่างหนึ่งต้องระวังเรื่องหลัง ๆ ด้วยเนื่องจากจุดฝึกอบรมที่เก่ากว่านั้นอาจต้องขึ้นอยู่กับระบอบการปกครองก่อน (เช่นสภาพแวดล้อมด้านกฎระเบียบ) และอาจไม่เกี่ยวข้องกับยุทธศาสตร์ปัจจุบันของคุณ วิธีหนึ่งในการช่วยบรรเทาความลำเอียงนี้คือการทำการวิเคราะห์ความไว ซึ่งหมายถึงการเปลี่ยนแปลงพารามิเตอร์ต่างๆและการวางแผนพื้นผิวของสมรรถนะ เสียงเหตุผลพื้นฐานสำหรับการเลือกพารามิเตอร์ควรคำนึงถึงปัจจัยอื่น ๆ ทั้งหมดนำไปสู่ผิวพารามิเตอร์ที่ราบรื่น หากคุณมีพื้นผิวการทำงานที่ไม่ดีนักมักจะหมายความว่าพารามิเตอร์ไม่ได้สะท้อนถึงปรากฏการณ์และเป็นสิ่งประดิษฐ์ของข้อมูลทดสอบ มีเอกสารมากมายเกี่ยวกับอัลกอริทึมการเพิ่มประสิทธิภาพแบบหลายมิติและเป็นงานวิจัยที่มีการใช้งานสูง ฉันจะไม่ได้อาศัยอยู่ที่นี่ แต่เก็บไว้ในด้านหลังของจิตใจของคุณเมื่อคุณพบกลยุทธ์ที่มี backtest Look-Ahead อคติ Bias มองไปข้างหน้าจะนำเข้าสู่ระบบ backtesting เมื่อข้อมูลในอนาคตจะถูกรวมไว้โดยบังเอิญที่จุดใน จำลองข้อมูลที่จะไม่ได้มีอยู่จริง ถ้าเรากำลังรัน backtest ตามลำดับและเราไปถึงจุดเวลา N แล้วมองไปข้างหน้าอคติเกิดขึ้นถ้าข้อมูลรวมอยู่ในจุด Nk ใดที่ k0 ข้อผิดพลาดเรื่องอคติแบบมองไปข้างหน้าสามารถเบ่งลึกได้อย่างไม่น่าเชื่อ ต่อไปนี้เป็นตัวอย่างสามวิธีที่สามารถนำเอาอคติแบบมองไปข้างหน้าได้: ข้อบกพร่องทางเทคนิค - อาร์เรย์เวิร์สในโค้ดมักมีตัวทำซ้ำหรือตัวแปรดัชนี การชดเชยที่ไม่ถูกต้องของดัชนีเหล่านี้สามารถนำไปสู่การมองไปข้างหน้าอคติโดยการรวมข้อมูลที่ Nk สำหรับ k ที่ไม่ใช่ศูนย์ การคำนวณพารามิเตอร์ - อีกตัวอย่างหนึ่งของอคติแบบมองไปข้างหน้าเกิดขึ้นเมื่อคำนวณพารามิเตอร์กลยุทธ์ที่เหมาะสมเช่นการถดถอยเชิงเส้นระหว่างชุดเวลาสองชุด ถ้าทั้งชุดข้อมูล (รวมถึงข้อมูลในอนาคต) ถูกนำมาใช้เพื่อคำนวณค่าสัมประสิทธิ์การถดถอยและนำไปใช้กับกลยุทธ์การซื้อขายเพื่อใช้ในการเพิ่มประสิทธิภาพย้อนหลังข้อมูลในอนาคตจะได้รับการรวบรวมและมีอคติต่อเนื่องอยู่ MaximaMinima - กลยุทธ์การซื้อขายบางอย่างใช้ประโยชน์จากค่าที่มากในช่วงเวลาใด ๆ เช่นการรวมราคาข้อมูล OHLC หรือราคาต่ำไว้ อย่างไรก็ตามเนื่องจากค่าสูงสุดสูงสุดเหล่านี้สามารถคำนวณได้เมื่อสิ้นสุดระยะเวลาแล้วจะมีการใช้อคติแบบมองไปข้างหน้าหากใช้ค่าเหล่านี้ในช่วงปัจจุบัน มันเป็นสิ่งที่จำเป็นเสมอไปล่าช้าค่า highlow อย่างน้อยหนึ่งช่วงเวลาในกลยุทธ์การค้าใด ๆ ทำให้การใช้งานของพวกเขา เช่นเดียวกับการเพิ่มประสิทธิภาพอคติหนึ่งต้องระมัดระวังอย่างมากเพื่อหลีกเลี่ยงการแนะนำของ มักเป็นเหตุผลหลักว่าทำไมกลยุทธ์การซื้อขายจึงมีประสิทธิภาพต่ำกว่าการทำธุรกรรมย้อนหลังอย่างมีนัยสำคัญในการซื้อขายหลักทรัพย์สด Survivorship Bias Survivorship อคติเป็นปรากฏการณ์ที่เป็นอันตรายโดยเฉพาะและสามารถนำไปสู่การเพิ่มประสิทธิภาพอย่างมากสำหรับประเภทกลยุทธ์บางอย่าง เกิดขึ้นเมื่อมีการทดสอบกลยุทธ์กับชุดข้อมูลที่ไม่รวมเอกภพเต็มรูปแบบของสินทรัพย์ก่อนหน้าซึ่งอาจได้รับเลือกในช่วงเวลาใดเวลาหนึ่ง แต่พิจารณาเฉพาะผู้ที่รอดชีวิตมาจนถึงปัจจุบันเท่านั้น ตัวอย่างเช่นพิจารณาการทดสอบกลยุทธ์ในการสุ่มเลือกหุ้นก่อนและหลังปีพ. ศ. 2544 หุ้นเทคโนโลยีบางแห่งล้มละลายในขณะที่บาง บริษัท ก็ยังคงมีการเติบโตและประสบความสำเร็จ หากเรา จำกัด กลยุทธ์นี้ไว้เฉพาะกับหุ้นที่ทำผ่านช่วงเบิกถอนเงินตลาดแล้วเราจะแนะนำให้มีอคติในการครองชีพเพราะพวกเขาได้แสดงให้เห็นถึงความสำเร็จของพวกเขาต่อเราแล้ว อันที่จริงแล้วนี่เป็นอีกกรณีหนึ่งที่เฉพาะเจาะจงสำหรับการมองไปข้างหน้าเนื่องจากข้อมูลในอนาคตจะถูกรวบรวมไว้ในการวิเคราะห์ในอดีต มีสองวิธีหลัก ๆ ในการลดความอคติในการรอดชีวิตใน backtests ของกลยุทธ์ของคุณ: Survivorship Bias Free Datasets - ในกรณีของข้อมูล equity คุณสามารถซื้อชุดข้อมูลที่มีหน่วยงานที่ได้รับการเพิกถอนแม้ว่าจะไม่ได้ราคาถูกและมีแนวโน้มที่จะถูกใช้โดย บริษัท สถาบันเท่านั้น . โดยเฉพาะอย่างยิ่งข้อมูลการเงินของ Yahoo ไม่ใช่เรื่องอื้อฉาวในการครองชีพและเป็นที่นิยมใช้กันโดยผู้ค้าปลีกหลายราย นอกจากนี้ยังสามารถค้าขายในชั้นสินทรัพย์ที่ไม่ได้มีแนวโน้มที่จะมีความลำเอียงรอดชีวิตเช่นสินค้าบางประเภท (และอนุพันธ์ในอนาคต) ใช้ข้อมูลล่าสุด - ในกรณีของหุ้นการใช้ชุดข้อมูลล่าสุดช่วยลดความเป็นไปได้ที่การเลือกหุ้นจะมีการถ่วงน้ำหนักให้กับผู้รอดชีวิตเนื่องจากความเป็นไปได้ในการเพิกถอนหุ้นโดยรวมในช่วงเวลาที่สั้นลง นอกจากนี้ยังสามารถเริ่มสร้างข้อมูลส่วนบุคคลที่ไม่เกี่ยวข้องกับการมีชีวิตอยู่รอดด้วยการรวบรวมข้อมูลจากจุดปัจจุบันเป็นต้นไป หลังจากผ่านไป 3-4 ปีคุณจะมีข้อมูลเกี่ยวกับการถือครองหุ้นที่มั่นคงและไม่เสียค่าใช้จ่ายซึ่งจะช่วยสนับสนุนกลยุทธ์ต่อไป ตอนนี้เราจะพิจารณาถึงอาการทางจิตวิทยาบางอย่างที่อาจส่งผลต่อประสิทธิภาพการซื้อขายของคุณ ความลำเอียงความอดทนทางจิตวิทยาปรากฏการณ์พิเศษนี้มักไม่ค่อยพูดถึงในบริบทของการซื้อขายเชิงปริมาณ อย่างไรก็ตามจะมีการพูดคุยกันอย่างกว้างขวางในเรื่องเกี่ยวกับวิธีการซื้อขายสินค้าที่มีการตัดสินใจมากขึ้น มีชื่อต่างๆ แต่ Ive ตัดสินใจที่จะเรียกว่าอคติความอดทนทางจิตวิทยาเพราะจับสาระสำคัญของปัญหา เมื่อสร้าง backtests เป็นระยะเวลา 5 ปีขึ้นไปคุณสามารถดูเส้นโค้งของส่วนแบ่งการตลาดที่มีแนวโน้มสูงขึ้นโดยคำนวณอัตราผลตอบแทนประจำปี Sharpe ratio และแม้แต่ drawdown และจะพอใจกับผลลัพธ์ ตัวอย่างเช่นกลยุทธ์อาจมีการเบิกถอนสัมพัทธ์สูงสุด 25 และระยะเวลาเบิกเงินกู้สูงสุด 4 เดือน นี้จะไม่ผิดปรกติสำหรับกลยุทธ์โมเมนตัม มันเป็นเรื่องง่ายที่จะโน้มน้าวใจตัวเองว่ามันเป็นเรื่องง่ายที่จะทนต่อช่วงเวลาของการสูญเสียดังกล่าวเพราะภาพโดยรวมเป็นสีดอกกุหลาบ อย่างไรก็ตามในทางปฏิบัติจะยากกว่ามากถ้าการเบิกจ่ายทางประวัติศาสตร์ของ 25 ครั้งขึ้นไปเกิดขึ้นในการทดสอบย้อนหลังแล้วในทุกโอกาสที่คุณจะเห็นช่วงเวลาที่มีการเบิกถอนเงินแบบเดียวกัน ช่วงเวลาแห่งการถอนเงินเหล่านี้ยากที่จะทนต่อสภาพจิตใจได้ ฉันได้สังเกตเห็นว่าการเบิกเงินกู้แบบยาวจะเป็นอย่างไรในการตั้งสถาบันและไม่เป็นที่น่าพอใจแม้ว่าจะมีการย้อนหลังไปแล้วก็ตาม เหตุผลที่ฉันเรียกมันว่าอคติคือกลยุทธ์ที่จะประสบความสำเร็จได้ก็คือการหยุดค้าขายในช่วงที่มีการเบิกใช้เป็นเวลานานและจะนำไปสู่ประสิทธิภาพที่ต่ำกว่าเมื่อเทียบกับผลการทดสอบหลังการขาย ดังนั้นแม้กลยุทธ์จะมีลักษณะตามธรรมชาติ แต่ปัจจัยทางจิตวิทยาก็ยังคงมีอิทธิพลอย่างมากต่อความสามารถในการทำกำไร การ takeaway คือเพื่อให้แน่ใจว่าถ้าคุณเห็นการเบิกบางเปอร์เซ็นต์และระยะเวลาใน backtests คุณควรคาดหวังให้พวกเขาเกิดขึ้นในสภาพแวดล้อมการซื้อขายสดและจะต้องอดทนเพื่อให้สามารถทำกำไรได้อีกครั้ง ชุดซอฟต์แวร์สำหรับการทำ backtesting ภูมิทัศน์ของซอฟต์แวร์สำหรับ backtesting กลยุทธ์มีมากมาย โซลูชันมีตั้งแต่ซอฟท์แวร์ที่มีความซับซ้อนระดับสถาบันไปจนถึงการเขียนโปรแกรมภาษาต่างๆเช่น C, Python และ R ซึ่งเกือบทุกอย่างต้องเขียนตั้งแต่เริ่มต้น (หรือปลั๊กอินที่เหมาะสม) As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution CapabilityBroker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. เพิ่งเริ่มต้นกับการซื้อขายเชิงปริมาณ
Comments
Post a Comment