Friday, June 10, 2016

Arima garch กลยุทธ์ การเทรดใน s - p500 ดัชนี ตลาดหลักทรัพย์ ใช้ r






+

ARIMA + GARCH กลยุทธ์การเทรดใน SP500 ดัชนีตลาดหลักทรัพย์ใช้ R โดยไมเคิลฮอลล์มัวร์เมื่อวันที่ 7 ตุลาคม 2015 ในบทความนี้ผมต้องการที่จะแสดงวิธีการใช้ทั้งหมดของความรู้ที่ได้รับในเวลาที่โพสต์การวิเคราะห์ชุดก่อนหน้านี้กับกลยุทธ์การซื้อขายดัชนีตลาดหุ้นสหรัฐ SP500 ที่ เราจะเห็นว่าโดยรวมและรูปแบบ ARIMA GARCH เราสามารถมีประสิทธิภาพสูงกว่าอย่างมีนัยสำคัญ "ซื้อและถือ" วิธีการในระยะยาว ภาพรวมกลยุทธ์ ความคิดของกลยุทธ์ที่ค่อนข้างง่าย แต่ถ้าคุณต้องการที่จะทดสอบกับมันผมขอแนะนำให้อ่านบทความก่อนหน้านี้ในการวิเคราะห์อนุกรมเวลาเพื่อที่จะเข้าใจสิ่งที่คุณจะได้รับการปรับเปลี่ยน! กลยุทธ์ที่จะดำเนินการใน "กลิ้ง" พื้นฐาน: ในแต่ละวัน, $ $ n, วัน $ $ k ก่อนหน้าของผลตอบแทนลอการิทึม differenced ของดัชนีตลาดหุ้นจะถูกใช้เป็นหน้าต่างสำหรับการปรับ ARIMA ที่ดีที่สุดและรูปแบบ GARCH รูปแบบการทำงานร่วมกันจะใช้เพื่อให้คาดการณ์ผลตอบแทนในวันถัดไป ถ้าคำทำนายเป็นลบหุ้นจะ shorted ที่ใกล้ชิดก่อนหน้านี้ในขณะที่ถ้ามันเป็นบวกมันจะปรารถนา ถ้าคำทำนายเป็นทิศทางเดียวกับวันก่อนหน้าแล้วไม่มีอะไรที่มีการเปลี่ยนแปลง สำหรับกลยุทธ์นี้ฉันได้ใช้ข้อมูลที่มีอยู่สูงสุดจาก Yahoo Finance for SP500 ฉันได้นำ $ k = 500 $ แต่นี้เป็นพารามิเตอร์ที่สามารถเพิ่มประสิทธิภาพในการปรับปรุงประสิทธิภาพการทำงานหรือลดเบิก backtest จะดำเนินการในรูปแบบตรงไปตรงมาโดยใช้ vectorised อาร์มันยังไม่ได้รับการดำเนินการในกรณีที่ขับเคลื่อนด้วยงูหลาม backtester ยังเป็นของ ดังนั้นผลการดำเนินงานประสบความสำเร็จในระบบการซื้อขายจริงมีแนวโน้มที่จะน้อยกว่าที่คุณอาจจะประสบความสำเร็จที่นี่เนื่องจากคณะกรรมการและการลื่นไถล การดำเนินกลยุทธ์ ที่จะใช้กลยุทธ์ที่เราจะไปใช้บางส่วนของรหัสที่เราได้สร้างขึ้นก่อนหน้านี้ในการวิเคราะห์อนุกรมเวลาชุดบทความเช่นเดียวกับบางห้องสมุดใหม่ ๆ รวมถึง rugarch ซึ่งได้รับการแนะนำให้ฉันโดย Ilya Kipnis มากกว่าที่ QuantStrat ซื้อขาย ฉันจะไปถึงไวยากรณ์ในรูปแบบขั้นตอนโดยขั้นตอนแล้วนำเสนอการดำเนินการในตอนท้ายเช่นเดียวกับการเชื่อมโยงไปยังชุดของฉันสำหรับตัวบ่งชี้ ARIMA + GARCH เราได้รวมหลังเพราะมันได้เอาฉันสองสามวันในเครื่องคอมพิวเตอร์ dekstop ของฉันที่จะสร้างสัญญาณ! คุณควรจะสามารถที่จะทำซ้ำผลของฉันในสิ่งทั้งปวงเป็นรหัสตัวเองไม่ซับซ้อนเกินไปแม้ว่ามันจะใช้เวลาในการจำลองถ้าคุณดำเนินการออกเต็มบางส่วน งานแรกคือการติดตั้งและนำเข้าห้องสมุดที่จำเป็นในการวิจัย: หากคุณมีห้องสมุดที่ติดตั้งคุณสามารถนำพวกเขา: กับที่ทำจะใช้กลยุทธ์ที่จะ SP500 เราสามารถใช้ quantmod เพื่อให้ได้ข้อมูลที่จะกลับไป 1950 สำหรับดัชนี การเงิน yahoo ใช้สัญลักษณ์ "^ GPSC" จากนั้นเราจะสามารถสร้างผลตอบแทนที่ลอการิทึม differenced ของ "ราคาปิด" ของ SP500 และตัดค่า NA ครั้งแรก: เราจำเป็นต้องสร้างเวกเตอร์คาดการณ์การจัดเก็บค่าประมาณการของเราโดยเฉพาะอย่างยิ่งในวันที่ เราตั้ง foreLength ยาวจะเท่ากับความยาวของข้อมูลการค้าที่เรามีลบ $ k $ ยาวหน้าต่าง: ในขั้นตอนนี้เราจำเป็นต้องห่วงผ่านทุกวันในข้อมูลการซื้อขายและพอดีกับ ARIMA ที่เหมาะสมและรูปแบบ GARCH ไปที่หน้าต่างกลิ้งของความยาว $ k $ ระบุว่าเราพยายามที่ 24 พอดี ARIMA แยกต่างหากและเหมาะสมกับรูปแบบการ GARCH สำหรับแต่ละวันตัวบ่งชี้ที่สามารถใช้เวลานานในการสร้าง เราใช้ d ดัชนีเป็นตัวแปรวนลูปและห่วงจาก $ k $ ความยาวของข้อมูลการซื้อขายที่: จากนั้นเราจะสร้างหน้าต่างกลิ้งโดยการกลับ SP500 และเลือกค่าระหว่าง $ 1 + d $ และ $ k + d $ ที่ $ k = 500 $ สำหรับกลยุทธ์นี้: เราใช้ขั้นตอนเช่นเดียวกับในบทความ ARIMA การค้นหาผ่านทุกรุ่น ARMA ด้วย $ พี \ in \ $ และ $ คิว \ in \ $ ยกเว้น $ พี, Q = 0 $ เราตัดสาย arimaFit ในบล็อกจัดการ R tryCatch ข้อยกเว้นเพื่อให้แน่ใจว่าถ้าเราไม่ได้รับพอดีสำหรับค่าเฉพาะของพี $ $ และ $ Q $ เราไม่สนใจมันและย้ายไปรวมกันต่อไปของพี $ $ และ $ Q $ โปรดทราบว่าเราตั้ง "บูรณาการ" ค่าของ $ d = 0 $ (นี้คือการที่แตกต่างกัน $ d $ เพื่อพารามิเตอร์การจัดทำดัชนีของเรา!) และเป็นเช่นที่เราเป็นจริงๆการปรับรูปแบบ ARMA มากกว่า ARIMA ขั้นตอนการวนลูปจะทำให้เรามี "ดีที่สุด" รูปแบบ ARMA เหมาะสมในแง่ของข้อมูล Akaike เกณฑ์ซึ่งเราสามารถใช้เพื่อเป็นอาหารในรูปแบบ GARCH ของเรา: ในการป้องกันรหัสต่อไปเราจะไปใช้ห้องสมุด rugarch กับ GARCH (1,1) รูปแบบ ไวยากรณ์สำหรับเรื่องนี้เราต้องตั้งค่าข้อกำหนด ugarchspec วัตถุที่ใช้เป็นแบบจำลองสำหรับความแปรปรวนและค่าเฉลี่ย ความแปรปรวนได้รับ GARCH (1,1) รูปแบบในขณะที่ค่าเฉลี่ยใช้เวลา ARMA (p, q) รุ่นที่ $ พี $ และ $ Q $ ได้รับการแต่งตั้งดังกล่าวข้างต้น นอกจากนี้เรายังเลือกการกระจาย sged ข้อผิดพลาด เมื่อเราได้เลือกสเปคที่เราดำเนินการที่เหมาะสมที่แท้จริงของ ARMA + GARCH ใช้คำสั่ง ugarchfit ซึ่งจะเปควัตถุที่ $ $ k ผลตอบแทนของ SP500 และแก้ตัวเลขการเพิ่มประสิทธิภาพ เราได้เลือกที่จะใช้ไฮบริด ซึ่งพยายามแก้ที่แตกต่างกันเพื่อที่จะเพิ่มโอกาสในการบรรจบกัน: ถ้าแบบ GARCH ไม่ได้มาบรรจบกันแล้วเราก็กำหนดวันในการผลิต "ยาว" การคาดการณ์ซึ่งเป็นที่ชัดเจนคาดเดา แต่ถ้าแบบไม่บรรจบกันแล้วเราส่งออกวันที่และทิศทางการคาดการณ์ในวันพรุ่งนี้ (1 หรือ -1) เป็นสตริงจุดที่ห่วงจะปิดออก เพื่อที่จะเตรียมความพร้อมสำหรับการส่งออกไฟล์ CSV ที่ผมได้สร้างสตริงที่ประกอบด้วยข้อมูลคั่นด้วยเครื่องหมายจุลภาคกับทิศทางการคาดการณ์สำหรับวันที่ตามมา: ขั้นตอนสุดท้ายคือการส่งออกไฟล์ CSV ไปยังดิสก์ นี้จะช่วยให้เราสามารถใช้ตัวบ่งชี้และใช้ในซอฟแวร์ backtesting ทางเลือกสำหรับการวิเคราะห์ต่อไปหากต้องการให้: แต่มีปัญหาเล็ก ๆ กับไฟล์ CSV ที่มันยืนตอนนี้คือ ไฟล์ที่มีรายชื่อของวันที่และการคาดการณ์ทิศทางของวันพรุ่งนี้ ถ้าเราจะโหลดลงในรหัส backtest ด้านล่างที่มันยืนเราจริงจะแนะนำอคติมองไปข้างหน้าเนื่องจากค่าการทำนายจะเป็นตัวแทนของข้อมูลที่ไม่เป็นที่รู้จักในช่วงเวลาของการทำนาย เพื่อที่จะบัญชีสำหรับวันนี้เราก็ต้องย้ายมูลค่าที่คาดการณ์ไว้ในวันหนึ่งข้างหน้า ฉันได้พบนี้จะตรงไปตรงมามากขึ้นโดยใช้งูหลาม เพราะผมไม่ต้องการที่จะคิดว่าคุณได้ติดตั้งห้องสมุดพิเศษใด ๆ (เช่นหมีแพนด้า) ฉันได้เก็บมันไว้เพื่อหลามบริสุทธิ์ นี่คือสคริปต์สั้นที่ดำเนินการตามขั้นตอนนี้ออกเป็น ให้แน่ใจว่าจะใช้มันในไดเรกทอรีเดียวกันกับแฟ้ม forecasts. csv ไปนี้: ณ จุดนี้ตอนนี้เรามีตัวบ่งชี้การแก้ไขไฟล์ที่เก็บไว้ใน forecasts_new. csv ตั้งแต่นี้จะเป็นจำนวนเงินที่สำคัญของเวลาในการคำนวณผมได้ให้ไฟล์เต็มได้ที่นี่สำหรับคุณที่จะดาวน์โหลดตัวเอง ผลกลยุทธ์ ตอนนี้เรามีการสร้างไฟล์ CSV ตัวบ่งชี้ของเราที่เราจะต้องเปรียบเทียบผลการดำเนินงานที่จะ "ซื้อถือ" เราแรกอ่านในตัวบ่งชี้จากไฟล์ CSV และเก็บไว้เป็น spArimaGarch: จากนั้นเราจะสร้างจุดตัดของวันที่สำหรับการคาดการณ์ ARIMA + GARCH และชุดเดิมของผลตอบแทนจาก SP500 จากนั้นเราจะสามารถคำนวณผลตอบแทนสำหรับกลยุทธ์ ARIMA + GARCH โดยการคูณสัญญาณการคาดการณ์ (+ หรือ -) กับการกลับมาของตัวเอง: เมื่อเรามีผลตอบแทนจากกลยุทธ์ ARIMA + GARCH ที่เราสามารถสร้างเส้นโค้งทุนทั้งในรูปแบบ ARIMA + GARCH และ "ซื้อถือ" สุดท้ายเรารวมไว้ในโครงสร้างข้อมูลเดียว: สุดท้ายเราสามารถใช้คำสั่ง xyplot พล็อตทั้งสองเส้นโค้งส่วนบนพล็อตเดียวกัน โค้งส่วนได้เสียได้ถึง 6 ตุลาคม 2015 เป็นดังนี้: โค้งทุนของกลยุทธ์ ARIMA + GARCH ครับ "ซื้อถือ" สำหรับ SP500 จาก 1952 ในขณะที่คุณสามารถดูเป็นระยะเวลากว่า 65 ปีกลยุทธ์ ARIMA + GARCH ได้อย่างมีนัยสำคัญเฮง "ซื้อถือ" แต่คุณยังสามารถดูว่าส่วนใหญ่ของกำไรที่เกิดขึ้นระหว่างปี 1970 และปี 1980 ขอให้สังเกตว่าความผันผวนของเส้นโค้งที่ค่อนข้างน้อยจนถึงช่วงต้นยุค 80 ที่จุดความผันผวนเพิ่มขึ้นอย่างมีนัยสำคัญและผลตอบแทนเ​​ฉลี่ยที่น่าประทับใจน้อย เห็นได้ชัดว่าเส้นโค้งส่วนสัญญาประสิทธิภาพที่ยอดเยี่ยมในช่วงเวลาทั้งหมด แต่จะใช้กลยุทธ์นี้จริงๆได้รับ tradeable? ครั้งแรกของทั้งหมดให้พิจารณาความเป็นจริงว่ารูปแบบ ARMA ถูกตีพิมพ์ในปี 1951 เพียง แต่มันไม่ได้จริงๆใช้กันอย่างแพร่หลายจนกระทั่งปี 1970 เมื่อกล่องเจนกินส์กล่าวถึงไว้ในหนังสือของพวกเขา ประการที่สองรูปแบบ ARCH ไม่ได้ถูกค้นพบ (สาธารณชน) จนถึงช่วงต้นยุค 80 โดย Engle และ GARCH ตัวเองถูกตีพิมพ์โดย Bollerslev ในปี 1986 ประการที่สามนี้ "backtest" ได้รับการดำเนินการจริงในดัชนีตลาดหุ้นและไม่ได้เป็นเครื่องมือ tradeable ร่างกาย เพื่อที่จะได้รับการเข้าถึงดัชนีเช่นนี้ก็จะได้รับสิ่งที่จำเป็นเพื่อการค้าฟิวเจอร์ส SP500 หรือแลกเปลี่ยนซื้อขายกองทุนจำลอง (อีทีเอฟ) เช่น SPDR ดังนั้นจะเป็นเรื่องที่เหมาะสมที่จะใช้รูปแบบดังกล่าวจะเป็นชุดประวัติศาสตร์ก่อนที่จะมีการประดิษฐ์ของพวกเขา ทางเลือกคือการเริ่มต้นการใช้แบบจำลองข้อมูลล่าสุด ในความเป็นจริงเราสามารถพิจารณาผลการดำเนินงานในช่วงสิบปีที่ 1 ม. ค. 2005 ถึงวันนี้: โค้งทุนของกลยุทธ์ ARIMA + GARCH ครับ "ซื้อถือ" สำหรับ SP500 จาก 2005 จนถึงวันนี้ ที่คุณสามารถดูโค้งส่วนได้เสียยังคงต่ำกว่ากลยุทธ์การจองซื้อเกือบ 3 ปี แต่ในช่วงที่ตลาดหุ้นตก 2008/2009 ที่มันไม่ดีเหลือเกิน นี้ทำให้รู้สึกเพราะมีแนวโน้มที่จะมีความสัมพันธ์อย่างมีนัยสำคัญต่อเนื่องในช่วงนี้และมันจะถูกดีจับโดย ARIMA และรูปแบบ GARCH เมื่อตลาดฟื้นตัวหลังปี 2009 และจะเข้าสู่สิ่งที่ดูเหมือนจะมีมากขึ้นแนวโน้มสุ่มประสิทธิภาพรูปแบบเริ่มต้นที่จะต้องทนทุกข์ทรมานอีกครั้ง โปรดทราบว่ากลยุทธ์นี้สามารถนำมาใช้อย่างง่ายดายเพื่อดัชนีตลาดหุ้นที่แตกต่างกันตราสารทุนหรือสินทรัพย์อื่น ๆ ผมขอแนะนำให้คุณลองค้นคว้าเครื่องมืออื่น ๆ ที่คุณอาจจะได้รับการปรับปรุงที่สำคัญเกี่ยวกับผลที่นำเสนอนี้ ขั้นตอนถัดไป ตอนนี้เราได้ดำเนินการเสร็จสิ้นการอภิปรายครอบครัว ARIMA และ GARCH ของรูปแบบที่ผมต้องการที่จะดำเนินการต่อเวลาการสนทนาการวิเคราะห์อนุกรมโดยพิจารณากระบวนการหน่วยความจำยาวรุ่นรัฐพื้นที่และอนุกรมเวลา cointegrated พื้นที่เหล่านี้ที่ตามมาของซีรีส์ครั้งที่จะแนะนำเรากับรุ่นที่สามารถปรับปรุงการคาดการณ์ของเราเกินกว่าที่ผมได้นำเสนอที่นี่ซึ่งมีนัยสำคัญจะเพิ่มผลกำไรการค้าของเราและ / หรือลดความเสี่ยง นี่คือรายการเต็มรูปแบบสำหรับการสร้างตัวบ่งชี้ backtesting และพล็อต:




No comments:

Post a Comment