Backtesting Intraday Mean พลิกกลับ กลยุทธ์ คู่ ระหว่าง Spy และ Iwm


backtesting Intraday Mean พลิกกลับกลยุทธ์คู่ระหว่าง SPY และ IWM โดยไมเคิลฮอลล์มัวร์เมื่อวันที่ 20 กุมภาพันธ์ 2014 ในบทความนี้เราจะไปพิจารณาระหว่างวันแรกของเรากลยุทธ์การซื้อขาย มันจะเป็นความคิดที่ใช้ซื้อขายคลาสสิกของ "คู่ค้า" ในกรณีนี้เราจะไปจะทำให้การใช้งานของทั้งสองกองทุนซื้อขายแลกเปลี่ยน (ETFs) และ SPY IWM ซึ่งมีการซื้อขายในตลาดหลักทรัพย์นิวยอร์ก (NYSE) และพยายามที่จะเป็นตัวแทนของสหรัฐดัชนีตลาดหุ้น SP500 และรัสเซลปี 2000 ตามลำดับ กลยุทธ์ในวงกว้างสร้าง "กระจาย" ระหว่างคู่ของ ETFs โดยหนึ่งในความปรารถนาและ shorting ปริมาณของอื่น ๆ อัตราส่วนของความยาวสั้นสามารถกำหนดได้ในหลายวิธีเช่นการใช้เวลา cointegrating สถิติเทคนิคชุด ในสถานการณ์นี้เราจะไปคำนวณอัตราป้องกันความเสี่ยงระหว่าง SPY และ IWM ผ่านการถดถอยเชิงเส้นกลิ้ง นี้จะช่วยให้เราสามารถสร้าง "กระจาย" ระหว่าง SPY และ IWM ซึ่งเป็นปกติท​​ี่จะ Z-คะแนน สัญญาณการซื้อขายจะถูกสร้างขึ้นเมื่อ Z-คะแนนเกินกว่าเกณฑ์ที่กำหนดไว้ภายใต้ความเชื่อที่ว่าการแพร่กระจายจะกลับไปใช้ค่าเฉลี่ย เหตุผลสำหรับกลยุทธ์ที่ใช้คือ SPY และ IWM จะประมาณพัฒนาการสถานการณ์เดียวกันว่าเศรษฐกิจของกลุ่มขนาดใหญ่และขนาดเล็กหมวกหมวก บริษัท สหรัฐ หลักฐานก็คือว่าถ้าใครจะใช้เวลาการแพร่กระจายของราคาแล้วมันควรจะหมายถึงย้อนกลับตั้งแต่ขณะที่ "ท้องถิ่น" (ในเวลา) เหตุการณ์ที่เกิดขึ้นอาจมีผลกระทบต่อทั้ง S & P500 หรือรัสเซล 2000 ดัชนีแยกต่างหาก (เช่นหมวกขนาดเล็ก / ขนาดใหญ่ ความแตกต่างหมวกวันที่ปรับสมดุลการซื้อขายหรือบล็อก) ชุดราคาในระยะยาวของทั้งสองจะมีโอกาสได้ cointegrated กลยุทธ์ กลยุทธ์ที่จะดำเนินการในขั้นตอนต่อไปนี้: ข้อมูล - บาร์ 1 นาที SPY และ IWM จะได้รับตั้งแต่เดือนเมษายน 2007 ผ่านไปกุมภาพันธ์ 2014 การประมวลผล - ข้อมูลที่ถูกต้องมีความสอดคล้องและบาร์ที่ขาดหายไปจะถูกยกเลิกร่วมกัน การแพร่กระจาย - อั​​ตราส่วนการป้องกันความเสี่ยงระหว่างสอง ETFs มีการคำนวณโดยการถดถอยเชิงเส้นกลิ้ง นี้ถูกกำหนดให้เป็น $ \ $ เบต้าค่าสัมประสิทธิ์การถดถอยโดยใช้หน้าต่าง lookback ซึ่งเลื่อนไปข้างหน้าโดย 1 บาร์และคำนวณค่าสัมประสิทธิ์การถดถอย ดังนั้นอัตราการป้องกันความเสี่ยง $ \ beta_i $ สำหรับบาร์ $ $ b_i คำนวณจุดทั่ว B_ $ $ ถึง $ B_ $ สำหรับ lookback ของ $ k $ บาร์ Z-คะแนน - คะแนนมาตรฐานของการแพร่กระจายการคำนวณในลักษณะปกติ ซึ่งหมายความว่าการลบ (ตัวอย่าง) เฉลี่ยของการแพร่กระจายและแบ่งโดย (ตัวอย่าง) ส่วนเบี่ยงเบนมาตรฐานของการแพร่กระจาย เหตุผลสำหรับการนี​​้คือการทำให้พารามิเตอร์เกณฑ์ตรงไปตรงมามากขึ้นในการตีความตั้งแต่ Z-คะแนนเป็นปริมาณมิติ ผมได้แนะนำจงใจอคติ lookahead ในการคำนวณเพื่อที่จะแสดงให้เห็นว่าที่ลึกซึ้งที่จะสามารถ และพยายามมองออกไปสำหรับมัน! การค้า - สัญญาณยาวถูกสร้างขึ้นเมื่อลบลดลง Z-คะแนนต่ำกว่าที่กำหนดไว้ล่วงหน้า (หรือโพสต์ที่ดีที่สุด) เกณฑ์ในขณะที่สัญญาณสั้นสนทนานี้ สัญญาณออกจากถูกสร้างขึ้นเมื่อหยด Z-คะแนนแน่นอนด้านล่างเกณฑ์เพิ่มเติม กลยุทธ์นี้ผมได้ (ค่อนข้างพล) เลือกเกณฑ์รายการที่แน่นอนของ $ | ซี | = 2 $ และเกณฑ์ทางออกของ $ | ซี | = 1 $ สมมติว่าพฤติกรรมเฉลี่ยคืนในการแพร่กระจายนี้หวังว่าจะจับภาพความสัมพันธ์และให้ผลการดำเนินงานในเชิงบวก บางทีอาจจะเป็นวิธีที่ดีที่สุดที่จะเข้าใจกลยุทธ์ที่ใช้ในเชิงลึกให้มันดำเนินการจริง ส่วนต่อไปนี้อธิบายรหัสงูใหญ่เต็มรูปแบบ (ไฟล์เดียว) สำหรับการดำเนินการกลยุทธ์หมายถึงคืนนี้ ผมได้แสดงความคิดเห็นอย่างกว้างขวางรหัสในการสั่งซื้อที่จะช่วยให้ความเข้าใจ การดำเนินการหลาม เช่นเดียวกับทุกหลาม / หมีแพนด้า tutorials มีความจำเป็นต้องมีการติดตั้งสภาพแวดล้อมการวิจัยหลามที่อธิบายไว้ในการกวดวิชานี้ เมื่อติดตั้งงานแรกคือการนำเข้าห้องสมุดหลามที่จำเป็น สำหรับ matplotlib backtest นี้และหมีแพนด้าจะต้อง รุ่นห้องสมุดเฉพาะที่ผมใช้มีดังนี้ งูหลาม - 2.7.3 NumPy - 1.8.0 นุ่น - 0.12.0 matplotlib - 1.1.0 ลองไปข้างหน้าและนำเข้า librararies ไปนี้: ต่อไปนี้ฟังก์ชั่นการนำเข้า create_pairs_dataframe สองไฟล์ CSV ที่มีบาร์ระหว่างวันของสองสัญลักษณ์ ในกรณีของเรานี้จะเป็น SPY และ IWM จากนั้นก็สร้างคู่ dataframe แยกต่างหาก ซึ่งใช้ดัชนีของไฟล์ต้นฉบับทั้ง ตั้งแต่ timestamps ของพวกเขามีแนวโน้มที่จะแตกต่างกันเนื่องจากการซื้อขายพลาดและข้อผิดพลาดนี้รับประกันว่าเราจะมีข้อมูลที่ตรงกัน นี่คือหนึ่งในผลประโยชน์หลักของการใช้ห้องสมุด analyis ข้อมูลเช่นหมีแพนด้า ว่า "สำเร็จรูป" รหัสมีการจัดการสำหรับเราในลักษณะที่มีประสิทธิภาพมาก ขั้นตอนต่อไปคือการดำเนินการถดถอยเชิงเส้นกลิ้งระหว่าง SPY และ IWM ในกรณีนี้คือ IWM ทำนายนี้ ('x) และ SPY คือการตอบสนอง (' Y​​ ') ฉันได้ตั้งหน้าต่าง lookback เริ่มต้น 100 บาร์ ตามที่กล่าวไว้ข้างต้นนี้เป็นพารามิเตอร์ของกลยุทธ์ที่ ในการสั่งซื้อสำหรับกลยุทธ์ที่จะได้รับการพิจารณาที่แข็งแกร่งอย่างยิ่งที่เราต้องการที่จะเห็นรายละเอียดผลตอบแทน (หรือมาตรการอื่น ๆ ของประสิทธิภาพ) เป็นฟังก์ชั่นนูนของรอบระยะเวลา lookback ดังนั้นในระยะต่อมาในรหัสที่เราจะดำเนินการวิเคราะห์ความไวโดยการเปลี่ยนแปลงระยะเวลา lookback มากกว่าช่วง เมื่อค่าสัมประสิทธิ์เบต้ากลิ้งคำนวณในรูปแบบการถดถอยเชิงเส้นสำหรับ SPY-IWM เราเพิ่มไปยังคู่ DataFrame และวางแถวที่ว่างเปล่า นี้ถือเป็นชุดแรกของบาร์เท่ากับขนาดของ lookback เป็นมาตรการการตัดแต่ง จากนั้นเราจะสร้างการแพร่กระจายของทั้งสอง ETFs เป็นหน่วยของ SPY และ $ - \ beta_i $ หน่วย IWM เห็นได้ชัดว่านี้ไม่ได้เป็นสถานการณ์ที่เป็นจริงในขณะที่เรามีการใช้ในปริมาณที่เศษส่วนของ IWM ซึ่งเป็นไปไม่ได้ในการดำเนินงานที่แท้จริง สุดท้ายเราสร้าง Z-คะแนนของการแพร่กระจายซึ่งคำนวณโดยการหักค่าเฉลี่ยของการแพร่กระจายและ normalizing โดยส่วนเบี่ยงเบนมาตรฐานของการแพร่กระจาย ทราบว่ามีอคติ lookahead ค่อนข้างลึกซึ้งที่เกิดขึ้นที่นี่ ฉันจงใจทิ้งมันไว้ในรหัสที่ผมอยากจะเน้นวิธีการที่ง่ายก็คือการทำให้ความผิดพลาดดังกล่าวในการวิจัย ค่าเฉลี่ยส่วนเบี่ยงเบนมาตรฐานมีการคำนวณสำหรับการแพร่กระจายอนุกรมเวลาทั้งหมด ถ้านี้คือการสะท้อนให้เห็นถึงความถูกต้องทางประวัติศาสตร์จริงแล้วข้อมูลนี้จะไม่ได้รับการบริการโดยปริยายขณะที่มันทำให้การใช้ข้อมูลในอนาคต ดังนั้นเราจึงควรใช้ค่าเฉลี่ยกลิ้งและ STDEV การคำนวณ Z-คะแนน ใน create_long_short_market_​​signals สัญญาณการซื้อขายจะถูกสร้างขึ้น เหล่านี้จะถูกคำนวณโดยไปนานแพร่กระจายเมื่อ Z-คะแนนลบเกินลบ Z-คะแนนและจะแพร่กระจายในระยะสั้นเมื่อ Z-คะแนนบวกเกินบวก Z-คะแนน สัญญาณทางออกจะได้รับเมื่อค่าสัมบูรณ์ของ Z-คะแนนน้อยกว่าหรือเท่ากับอื่น (ที่มีขนาดเล็กในขนาด) เกณฑ์ เพื่อให้บรรลุสถานการณ์นี้มันเป็นสิ่งจำเป็นที่จะรู้ว่าสำหรับแต่ละแถบไม่ว่าจะเป็นกลยุทธ์ที่เป็น "ในการ" หรือ "ออก" ของตลาด long_market และ short_market สองตัวแปรที่กำหนดไว้ในการติดตามของตำแหน่งทางการตลาดที่ยาวและระยะสั้น แต่น่าเสียดายที่นี้อยู่ไกลง่ายรหัสในลักษณะซ้ำเมื่อเทียบกับวิธีการ vectorised และทำให้มันช้าในการคำนวณ แม้จะมีบาร์ 1 นาทีต้อง 700,000 จุดข้อมูลต่อไฟล์ CSV ก็ยังคงเป็นที่ค่อนข้างรวดเร็วในการคำนวณบนเครื่องเดสก์ทอปเก่าของฉัน! ย้ำกว่า DataFrame หมีแพนด้า (ซึ่งเป็นที่ยอมรับไม่ได้การดำเนินการร่วมกัน) มีความจำเป็นต้องใช้วิธีการ iterrows ซึ่งให้กำเนิดมากกว่าที่จะย้ำคือ: ในขั้นตอนนี้เรามีการปรับปรุงเพื่อให้มีคู่ที่เกิดขึ้นจริงยาว / สัญญาณระยะสั้นซึ่งช่วยให้เราเพื่อตรวจสอบว่าเราจะต้องมีในตลาด ตอนนี้เราต้องสร้างผลงานในการติดตามของมูลค่าตลาดของตำแหน่ง งานแรกคือการสร้างคอลัมน์ตำแหน่งที่รวมสัญญาณยาวและระยะสั้น นี้จะมีรายชื่อขององค์ประกอบจาก $ (1,0, -1) ก $ กับ $ 1 $ แทนตำแหน่งยาว / ตลาด, 0 $ $ แทนตำแหน่งที่ไม่มี (ควรจะออก) และ $ -1 $ คิดเป็นสั้น / ตำแหน่งทางการตลาด . คอลัมน์ sym1 sym2 และเป็นตัวแทนของค่าการตลาดของตำแหน่ง SPY และ IWM ที่ใกล้ชิดของบาร์แต่ละ เมื่อค่าการตลาดอีทีเอฟได้รับการสร้างเรารวมพวกเขาในการผลิตมูลค่าตลาดรวมในตอนท้ายของแถบทุก นี้จะเปิดเข้าไปในกระแสผลตอบแทนโดยวิธีการ pct_change สำหรับวัตถุที่ซีรีส์ สายที่ตามมาของรหัสที่ชัดเจนขึ้นรายการที่ไม่ดี (น่านและองค์ประกอบ INF) และในที่สุดก็คำนวณโค้งส่วนได้เสียอย่างเต็มรูปแบบ ฟังก์ชั่น __main__ นำมันทั้งหมดเข้าด้วยกัน ระหว่างวัน CSV ไฟล์จะอยู่ที่เส้นทาง datadir ให้แน่ใจว่าจะปรับเปลี่ยนรหัสด้านล่างเพื่อชี้ไปที่ไดเรกทอรีของคุณโดยเฉพาะ เพื่อตรวจสอบว่ามีความสำคัญเป็นกลยุทธ์ที่ใช้กับช่วงเวลา lookback มันเป็นสิ่งจำเป็นในการคำนวณตัวชี้วัดประสิทธิภาพการทำงานสำหรับช่วงของ lookbacks เราได้เลือกผลตอบแทนร้อยละรวมสุดท้ายของผลงานเป็นตัวชี้วัดประสิทธิภาพการทำงานและช่วง lookback ใน $ [50200] $ กับการเพิ่มขึ้นของ 10 คุณสามารถเห็นในรหัสต่อไปนี้ว่าฟังก์ชั่นที่ก่อนหน้านี้ถูกห่อในห่วงในช่วงนี้ มีเกณฑ์อื่น ๆ ที่จัดขึ้นได้รับการแก้ไข งานสุดท้ายคือการใช้ matplotlib เพื่อสร้างแผนภูมิสายของ lookbacks เทียบกับผลตอบแทนที่: แผนภูมิของรอบระยะเวลา lookback เทียบกับผลตอบแทนในขณะนี้สามารถมองเห็นได้ โปรดทราบว่ามี "ทั่วโลก" รอบสูงสุดเท่ากับ lookback ถึง 110 บาร์ ถ้าเราได้เห็นสถานการณ์ที่ lookback เป็นอิสระจากผลตอบแทนนี้จะได้รับสาเหตุสำหรับกังวล: SPY-IWM ป้องกันความเสี่ยงอัตราการถดถอยเชิงเส้นระยะเวลา lookback การวิเคราะห์ความไว ไม่มีบทความ backtesting จะไม่สมบูรณ์โดยไม่ต้องโค้งส่วนลาดเหนือ! ดังนั้นหากคุณต้องการที่จะเขียนกราฟของผลตอบแทนสะสมเทียบกับเวลาที่คุณสามารถใช้รหัสดังต่อไปนี้ มันจะพล็อตสุดท้ายผลงานที่สร้างขึ้นจากการศึกษาพารามิเตอร์ lookback ดังนั้นจึงจะมีความจำเป็นที่จะเลือก lookback ขึ้นอยู่กับแผนภูมิที่คุณต้องการที่จะเห็นภาพ แผนภูมิยังแปลงผลตอบแทนของ SPY ในช่วงเวลาเดียวกันที่จะช่วยให้การเปรียบเทียบ: กราฟเส้นโค้งส่วนต่อไปนี้สำหรับระยะเวลา lookback 100 วัน SPY-IWM ป้องกันความเสี่ยงอัตราการถดถอยเชิงเส้นระยะเวลา lookback การวิเคราะห์ความไว โปรดทราบว่าเบิกของ SPY อย่างมีนัยสำคัญในปี 2009 ในช่วงเวลาของวิกฤตการเงิน กลยุทธ์ที่ยังมีความผันผวนระยะเวลาในขั้นตอนนี้ นอกจากนี้ยังทราบว่าประสิทธิภาพการทำงานได้เสื่อมโทรมบ้างในปีที่ผ่านมาเนื่องจากลักษณะที่มีแนวโน้มอย่างมากของ SPY ในช่วงนี้ซึ่งสะท้อนให้เห็นดัชนี SP500 โปรดทราบว่าเรายังคงต้องคำนึงถึงอคติ lookahead เมื่อคำนวณ Z-คะแนนของการแพร่กระจาย นอกจากนี้ทั้งหมดของการคำนวณเหล่านี้ได้รับการดำเนินการโดยไม่ต้องต้นทุนการทำธุรกรรม กลยุทธ์นี้อย่างแน่นอนจะดำเนินการได้ไม่ดีมากครั้งหนึ่งปัจจัยเหล่านี้จะถูกนำเข้าสู่การพิจารณา ค่าธรรมเนียมการเสนอราคา / ขอให้แพร่กระจายและการเลื่อนหลุดของทุกคนในขณะนี้ขาดหายไป นอกจากนี้กลยุทธ์ที่มีการซื้อขายในหน่วยเศษส่วนของ ETFs ซึ่งยังไม่สมจริงมาก ในบทความต่อมาเราจะสร้างเหตุการณ์ที่ขับเคลื่อนด้วยความซับซ้อนมากขึ้น backtester ที่จะนำปัจจัยเหล่านี้มาพิจารณาและให้ความเชื่อมั่นอย่างมีนัยสำคัญกับเรามากขึ้นในการโค้งส่วนและตัวชี้วัดประสิทธิภาพการทำงานของเรา ไมเคิลฮอลล์มัวร์ ไมค์เป็นผู้ก่อตั้ง QuantStart และได้รับการมีส่วนร่วมในอุตสาหกรรมการเงินเชิงปริมาณสำหรับในช่วงห้าปีที่ผ่านมาส่วนใหญ่เป็นนักพัฒนา quant และต่อมาเป็นที่ปรึกษาผู้ประกอบการ quant สำหรับกองทุนป้องกันความเสี่ยง

Comments

Popular posts from this blog

Heiken Ashi อธิบาย ตัวบ่งชี้ อะไรคือ Heiken Ashi

จุดหมุน อัตราแลกเปลี่ยน ที่มีประสิทธิภาพ ระบบการซื้อขาย

ฟรี โฟ Mt4 ตัวบ่งชี้ เชิงเทียน ประจำตัวประชาชน แบบ