Backtesting Trading กลยุทธ์ ที่ใช้ R


Im ใหม่มาก R และพยายาม backtest กลยุทธ์ Ive โปรแกรมแล้วใน WealthLab หลายสิ่งที่ฉันไม่เข้าใจ (และมัน does not ทำงานชัด :) ฉัน dont รับราคาปิดอย่างเป็นเวกเตอร์ หรือบางชนิดของเวกเตอร์ แต่จะเริ่มต้นด้วยโครงสร้างและฉันไม่เข้าใจจริงๆว่าฟังก์ชันนี้ทำอะไร Thats ทำไมชุดของฉัน 1 โทรอาจไม่ทำงาน n lt - nrow (ชุด) ไม่ทำงานอย่างใดอย่างหนึ่ง แต่ฉันต้องการที่สำหรับ Loop ดังนั้นฉันเดาว่าถ้าฉันได้รับทั้ง 2 คำถามตอบกลยุทธ์ของฉันควรจะทำงาน Im ขอบคุณมากสำหรับความช่วยเหลือใด ๆ .. R ดูเหมือนว่าค่อนข้างซับซ้อนแม้มีประสบการณ์การเขียนโปรแกรมในภาษาอื่น ๆ ใช่ฉันชนิดของการคัดลอกบางบรรทัดของรหัสจากกวดวิชานี้และ don39t จริงๆเข้าใจบรรทัดนี้ ฉันหมายถึงชุด 1 ฉันคิดว่าจะใช้ฟังก์ชัน f กับ quotcolumnquot 1 ของชุด แต่เนื่องจากชุดนี้เป็น compley กับโครงสร้างอื่น ๆ บางอย่างมันไม่ทำงาน ฉันกำลังพูดถึงบทแนะนำนี้ r-bloggersbacktesting-a-trading-strategy ndash MichiZH Jun 6 13 at 14: 22Backtesting: การตีความ Backtesting ที่ผ่านมาเป็นองค์ประกอบสำคัญของการพัฒนาระบบการซื้อขายที่มีประสิทธิภาพ สามารถทำได้โดยการสร้างใหม่โดยใช้ข้อมูลทางประวัติศาสตร์การค้าที่เกิดขึ้นในอดีตโดยใช้กฎที่กำหนดโดยกลยุทธ์ที่กำหนด ผลเสนอสถิติที่สามารถใช้ในการวัดประสิทธิภาพของกลยุทธ์ การใช้ข้อมูลนี้ผู้ค้าสามารถเพิ่มประสิทธิภาพและปรับปรุงกลยุทธ์หาข้อบกพร่องด้านเทคนิคหรือทฤษฎีและได้รับความมั่นใจในกลยุทธ์ของตนก่อนนำไปใช้กับตลาดจริง ทฤษฎีพื้นฐานคือกลยุทธ์ใด ๆ ที่ทำงานได้ดีในอดีตมีแนวโน้มที่จะทำงานได้ดีในอนาคตและตรงกันข้ามกลยุทธ์ใด ๆ ที่มีประสิทธิภาพต่ำในอดีตน่าจะมีผลในทางที่ไม่ดีในอนาคต บทความนี้จะกล่าวถึงสิ่งที่แอ็พพลิเคชันใช้เพื่อทำ backtest ชนิดของข้อมูลที่ได้มาและวิธีการนำไปใช้ข้อมูลและเครื่องมือ Backtesting สามารถให้ข้อเสนอแนะทางสถิติที่มีคุณค่ามากมายเกี่ยวกับระบบที่กำหนดได้ สถิติย้อนหลังแบบทั่วไปบางอย่าง ได้แก่ : กำไรสุทธิหรือขาดทุน - กำไรหรือขาดทุนสุทธิเพิ่มขึ้น กรอบเวลา - วันที่ผ่านมาซึ่งเกิดการทดสอบ จักรวาล - คลังที่รวมอยู่ในการทดสอบหลังการขาย มาตรการความผันผวน - เปอร์เซ็นต์ upside และ downside สูงสุด ค่าเฉลี่ย - เปอร์เซ็นต์เฉลี่ยที่ได้รับและการสูญเสียเฉลี่ยเฉลี่ยที่จัดขึ้น การได้รับสาร - เปอร์เซ็นต์ของเงินลงทุนที่ลงทุน (หรือถูกนำออกสู่ตลาด) อัตราส่วน - อัตราส่วนการชนะในการขาดทุน ผลตอบแทนต่อปี - ผลตอบแทนร้อยละต่อปี ผลตอบแทนที่ปรับเปลี่ยนตามความเสี่ยง - อัตราผลตอบแทนเป็นเปอร์เซ็นต์ตามความเสี่ยง โดยปกติซอฟต์แวร์ backtesting จะมีหน้าจอสองหน้าจอที่มีความสำคัญ ข้อแรกช่วยให้พ่อค้าสามารถกำหนดการตั้งค่า backtesting ได้ การปรับแต่งเหล่านี้ประกอบด้วยทุกอย่างตั้งแต่ช่วงเวลาจนถึงค่าคอมมิชชั่น นี่คือตัวอย่างของหน้าจอดังกล่าวใน AmiBroker: หน้าจอที่สองคือรายงานผลการทำ backtesting ที่เกิดขึ้นจริง นี่คือที่ที่คุณสามารถดูข้อมูลทั้งหมดที่กล่าวมาข้างต้นได้ นี่คือตัวอย่างของหน้าจอนี้ใน AmiBroker: โดยทั่วไปซอฟต์แวร์ซื้อขายส่วนใหญ่มีองค์ประกอบที่คล้ายคลึงกัน บางโปรแกรมระดับไฮเอนด์ยังมีฟังก์ชันเพิ่มเติมในการปรับขนาดตำแหน่งอัตโนมัติการเพิ่มประสิทธิภาพและคุณลักษณะขั้นสูงอื่น ๆ อีกด้วย 10 บัญญัติมีหลายปัจจัยที่ผู้ค้าต้องใส่ใจกับกลยุทธ์การซื้อขายย้อนหลัง นี่คือรายการ 10 สิ่งที่สำคัญที่สุดที่ควรจดจำขณะที่ทำย้อนหลังการทดสอบ: คำนึงถึงแนวโน้มตลาดในระยะเวลาที่กำหนดกลยุทธ์ที่กำหนดไว้ ตัวอย่างเช่นถ้ากลยุทธ์มีการตรวจสอบย้อนหลังเฉพาะช่วงปี 2542-2543 แต่อาจไม่ดีเท่าที่ควรในตลาดหมี บ่อยครั้งที่ควรทำ backtest ในกรอบเวลาที่ยาวนานซึ่งครอบคลุมเงื่อนไขตลาดหลายประเภท คำนึงถึงจักรวาลที่เกิดขึ้นในการทำ backtesting ตัวอย่างเช่นหากมีการทดสอบระบบตลาดแบบกว้าง ๆ กับจักรวาลซึ่งประกอบด้วยหุ้นเทคโนโลยีอาจทำให้ไม่ดีขึ้นในหลายภาคส่วน ตามกฎทั่วไปหากกลยุทธ์มีการกำหนดเป้าหมายไปยังประเภทเฉพาะของหุ้น จำกัด จักรวาลประเภท แต่ในกรณีอื่น ๆ ทั้งหมดรักษาจักรวาลขนาดใหญ่เพื่อการทดสอบ มาตรการความผันผวนเป็นสิ่งสำคัญอย่างยิ่งที่จะต้องพิจารณาในการพัฒนาระบบการซื้อขาย โดยเฉพาะอย่างยิ่งสำหรับบัญชีที่ใช้ประโยชน์ซึ่งอยู่ภายใต้การเรียกหลักประกันหากส่วนของผู้ถือหุ้นลดลงต่ำกว่าจุดหนึ่ง ผู้ค้าควรพยายามทำให้ความผันผวนต่ำเพื่อลดความเสี่ยงและช่วยให้สามารถเข้าและออกได้ง่ายขึ้น จำนวนบาร์โดยเฉลี่ยที่จัดขึ้นเป็นสิ่งที่สำคัญมากในการเฝ้าดูเมื่อมีการพัฒนาระบบการซื้อขาย แม้ว่าซอฟต์แวร์การทำ backtesting ส่วนใหญ่จะมีค่าคอมมิชชั่นในการคำนวณขั้นสุดท้ายไม่ได้หมายความว่าคุณควรละเลยสถิตินี้ ถ้าเป็นไปได้การเพิ่มจำนวนบาร์โดยเฉลี่ยที่จัดขึ้นสามารถลดค่าคอมมิชชั่นและปรับปรุงผลตอบแทนโดยรวมของคุณได้ การเปิดรับแสงเป็นดาบสองคม ความเสี่ยงที่เพิ่มขึ้นอาจนำไปสู่ผลกำไรที่สูงขึ้นหรือความสูญเสียที่สูงขึ้นในขณะที่ความเสี่ยงที่ลดลงหมายถึงกำไรที่ลดลงหรือความสูญเสียที่ลดลง อย่างไรก็ตามโดยทั่วไปแล้วควรเก็บความเสี่ยงไว้ต่ำกว่า 70 เพื่อลดความเสี่ยงและทำให้สามารถเข้าและออกจากสต็อกได้ง่ายขึ้น สถิติ gainloss เฉลี่ยบวกกับอัตราส่วนที่ชนะต่อขาดทุนจะเป็นประโยชน์ในการกำหนดตำแหน่งและการจัดการเงินที่ดีที่สุดโดยใช้เทคนิคเช่น Kelly Criterion (ดูการบริหารเงินโดยใช้เกณฑ์ Kelly) ผู้ค้าสามารถทำตำแหน่งที่มีขนาดใหญ่ขึ้นและลดค่าใช้จ่ายด้านค่าคอมมิชชั่นโดยการเพิ่มผลกำไรโดยเฉลี่ยและเพิ่มอัตราส่วนการชนะต่อขาดทุน ผลตอบแทนเป็นรายปีเป็นสิ่งสำคัญเพราะถูกใช้เป็นเครื่องมือในการเปรียบเทียบประสิทธิภาพของระบบกับสถานที่การลงทุนอื่น ๆ เป็นสิ่งสำคัญไม่เพียง แต่จะดูที่ผลตอบแทนต่อปีโดยรวม แต่ยังคำนึงถึงความเสี่ยงที่เพิ่มขึ้นหรือลดลง ซึ่งสามารถทำได้โดยดูจากผลตอบแทนที่ได้รับการปรับความเสี่ยงซึ่งเป็นปัจจัยเสี่ยงต่างๆ ก่อนที่ระบบการซื้อขายจะถูกนำมาใช้จะต้องมีประสิทธิภาพดีกว่าสถานที่ลงทุนอื่น ๆ ทั้งหมดที่มีความเสี่ยงเท่ากับหรือน้อยกว่า การปรับแต่งการทำ backtesting เป็นเรื่องสำคัญมาก แอ็พพลิเคชัน backtesting จำนวนมากมีการป้อนข้อมูลสำหรับจำนวนเงินที่ได้รับค่าคอมมิชชั่นจำนวนล็อต (หรือเศษส่วน) ขนาดล็ใหญ่ขนาดขีดความต้องการของอัตราดอกเบี้ยอัตราดอกเบี้ยสมมติฐานการลื่นไถลกฎการจัดตำแหน่งตำแหน่งกฎการออกจากแถบเดียวกันการตั้งค่าการหยุดชะงัก (ต่อท้าย) และอื่น ๆ อีกมากมาย ได้ผลการทำ backtesting ที่ถูกต้องที่สุด i t เป็นสิ่งสำคัญในการปรับแต่งการตั้งค่าเหล่านี้เพื่อเลียนแบบโบรกเกอร์ที่จะใช้เมื่อระบบทำงานได้ การทำ Backtesting บางครั้งอาจนำไปสู่สิ่งที่เรียกว่าการเพิ่มประสิทธิภาพมากเกินไป นี่เป็นเงื่อนไขที่ผลการดำเนินงานได้รับการปรับให้เข้ากับอดีตมากจนไม่เป็นที่คาดหมายในอนาคตอีกต่อไป โดยทั่วไปแล้วควรใช้หลักเกณฑ์ที่ใช้กับหุ้นทั้งหมดหรือเลือกกลุ่มเป้าหมายที่เลือกและไม่ได้รับการปรับให้เหมาะกับขอบเขตที่ผู้สร้างไม่สามารถเข้าใจได้อีกต่อไป Backtesting ไม่ใช่วิธีที่ถูกต้องที่สุดในการวัดประสิทธิภาพของระบบการซื้อขายที่กำหนด บางครั้งยุทธศาสตร์ที่ทำงานได้ดีในอดีตไม่สามารถทำได้ดีในปัจจุบัน ผลการดำเนินงานที่ผ่านมาไม่ได้บ่งบอกถึงผลการดำเนินงานในอนาคต ตรวจสอบให้แน่ใจว่าได้ทำการค้ากระดาษเป็นระบบที่ได้รับการตรวจสอบย้อนกลับสำเร็จแล้วก่อนที่จะมีการดำเนินชีวิตเพื่อให้มั่นใจว่ากลยุทธ์ยังคงใช้ในทางปฏิบัติ บทสรุปการทำ Backtesting เป็นส่วนสำคัญที่สุดในการพัฒนาระบบการซื้อขาย หากสร้างและตีความอย่างถูกต้องจะช่วยให้ผู้ค้าสามารถเพิ่มประสิทธิภาพและปรับปรุงกลยุทธ์หาข้อบกพร่องด้านเทคนิคหรือทฤษฎีรวมทั้งได้รับความเชื่อมั่นในกลยุทธ์ของตนก่อนนำไปใช้กับตลาดโลกแห่งความจริง การพัฒนาระบบการค้าระดับ high-end AmiBroker (amibroker) - การพัฒนาระบบการค้าการลงทุนด้านงบประมาณ การวัดความสัมพันธ์ระหว่างการเปลี่ยนแปลงปริมาณที่ต้องการสินค้าและการเปลี่ยนแปลงราคา ราคา. มูลค่าตลาดรวมของหุ้นทั้งหมดของ บริษัท ที่โดดเด่น มูลค่าหลักทรัพย์ตามราคาตลาดคำนวณโดยการคูณ Frexit ย่อมาจาก quotFrench exitquot เป็นเศษเสี้ยวของคำว่า Brexit ของฝรั่งเศสซึ่งเกิดขึ้นเมื่อสหราชอาณาจักรได้รับการโหวต คำสั่งซื้อที่วางไว้กับโบรกเกอร์ที่รวมคุณลักษณะของคำสั่งหยุดกับคำสั่งซื้อที่ จำกัด ไว้ คำสั่งหยุดการสั่งซื้อจะ รอบการจัดหาเงินทุนที่นักลงทุนซื้อหุ้นจาก บริษัท ในราคาที่ต่ำกว่าการประเมินมูลค่าวางไว้ ทฤษฎีเศรษฐศาสตร์ของการใช้จ่ายทั้งหมดในระบบเศรษฐกิจและผลกระทบต่อผลผลิตและอัตราเงินเฟ้อ เศรษฐศาสตร์ Keynesian ได้รับการพัฒนาโดยใช้กลยุทธ์การซื้อขายหลักทรัพย์แบบธรรมดาหมายเหตุ: โพสต์นี้ไม่ใช่คำแนะนำด้านการเงินนี่เป็นเพียงวิธีที่สนุกในการสำรวจความสามารถบางอย่างที่ R มีไว้สำหรับการนำเข้าและจัดการข้อมูล ฉันเพิ่งอ่านบทความเกี่ยวกับ ETF Prophet ที่สำรวจกลยุทธ์การซื้อขายหุ้นที่น่าสนใจใน Excel กลยุทธ์นี้ง่ายมาก: ค้นหาจุดที่สูงของสต็อกในช่วง 200 วันที่ผ่านมาและนับจำนวนวันที่ผ่านไปนับจากที่สูง หากได้รับน้อยกว่า 100 วันเป็นเจ้าของสต็อก ถ้าวันนี้เป็นเวลามากกว่า 100 วัน don8217t ก็เป็นเจ้าของ กลยุทธ์นี้ง่ายมาก แต่ให้ผลลัพธ์ที่น่าประทับใจ (อย่างไรก็ตามโปรดทราบว่าตัวอย่างนี้ใช้ข้อมูลที่ไม่ได้รับการปรับปรุงจากส่วนแบ่งหรือเงินปันผลและอาจมีข้อผิดพลาดอื่น ๆ นอกจากนี้เรายังละเว้นค่าใช้จ่ายในการซื้อขายและความล่าช้าในการดำเนินการซึ่งทั้งสองอย่างนี้มีผลต่อประสิทธิภาพของกลยุทธ์) และมีข้อได้เปรียบเหนือกว่า excel โดยหลัก ๆ คือการดึงข้อมูลตลาดหุ้นเข้าสู่ R ง่ายและเราสามารถทดสอบกลยุทธ์นี้ได้ในหลายดัชนีด้วยความพยายามเพียงเล็กน้อย ก่อนอื่นเราจะดาวน์โหลดข้อมูลสำหรับ GSPC โดยใช้ quantmod (GSPC หมายถึงดัชนี SampP 500) ต่อไปเราจะสร้างฟังก์ชันในการคำนวณจำนวนวันนับจาก n-day high ในชุดข้อมูลเวลาและเป็นฟังก์ชันที่จะใช้กลยุทธ์การซื้อขายของเรา ฟังก์ชั่นหลังใช้พารามิเตอร์ 2 ตัวคือค่าสูงสุด n วันที่คุณต้องการใช้และจำนวนวันที่ผ่านมาที่สูงคุณจะถือสต็อก ตัวอย่างเช่น 200 และ 100 แต่คุณสามารถเปลี่ยนค่านี้เป็น 500 วันได้โดยง่ายและดูว่าเกิดอะไรขึ้นหากคุณถือหุ้น 300 วันก่อนที่จะออกตั๋ว เนื่องจากฟังก์ชันนี้ได้รับการปรับพารามิเตอร์ทำให้เราสามารถทดสอบกลยุทธ์เวอร์ชันอื่น ๆ ได้โดยง่าย เราเริ่มต้นกลยุทธ์ของเราด้วยศูนย์ดังนั้นจะยาวเท่ากับข้อมูลที่ป้อนเข้าของเรา (ถ้าคุณต้องการคำอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวันนับตั้งแต่วันทำงานสูงดูการอภิปรายเกี่ยวกับการตรวจสอบข้าม) เราคูณเวกเตอร์ตำแหน่งของเรา (0,1) ด้วยผลตอบแทนจากดัชนีเพื่อให้ได้ผลตอบแทนจากกลยุทธ์ 8217s ตอนนี้เราสร้างฟังก์ชันเพื่อแสดงสถิติเกี่ยวกับกลยุทธ์การซื้อขายและเปรียบเทียบกลยุทธ์ของเรากับเกณฑ์มาตรฐาน ค่อนข้างพละโดย I8217ve ตัดสินใจที่จะดูผลตอบแทนสะสม, ผลตอบแทนเฉลี่ยต่อปี, อัตราส่วนของ sharpe, การชนะ, ความผันผวนเฉลี่ยต่อปี, การเบิกสูงสุดและการเบิกจ่ายสูงสุด สถิติอื่น ๆ จะง่ายต่อการใช้งาน ดังที่คุณเห็นกลยุทธ์นี้เปรียบเทียบได้ดีกับแนวทาง 8220buy-and-hold8221 ที่เป็นค่าเริ่มต้น สุดท้ายเราทดสอบกลยุทธ์ของเราใน 3 ดัชนีอื่น ๆ ได้แก่ FTSE ซึ่งหมายถึงไอร์แลนด์และสหราชอาณาจักรดัชนีอุตสาหกรรมดาวโจนส์ ซึ่งย้อนกลับไปในปี 1896 และ N225 ซึ่งหมายถึงประเทศญี่ปุ่น I8217ve ทำหน้าที่กระบวนการทั้งหมดเพื่อให้คุณสามารถทดสอบแต่ละกลยุทธ์ใหม่ด้วยโค้ด 1 บรรทัด: อย่าพลาดการอัปเดตสมัครสมาชิก R-bloggers เพื่อรับอีเมลพร้อมโพสต์ R ล่าสุด (คุณจะไม่เห็นข้อความนี้อีก)

Comments

Popular Posts