Backtesting ใน excel




backtesting ใน Excel backtesting ใน Excel ตอนนี้สำหรับบรรดาของคุณที่รู้ว่าฉันเป็น blogger อาจพบว่าโพสต์นี้เล็ก ๆ น้อย ๆ นอกรีตสไตล์ดั้งเดิมของฉันของการเขียน แต่ในจิตวิญญาณของวิวัฒนาการแรงบันดาลใจจากเพื่อนของฉันจวร์ตเรด (TuringFinance) ผมจะได้รับต่อไปนี้บางส่วนของ เคล็ดลับที่แนะนำในบล็อกโพสต์ต่อไปนี้ เป็นนักเรียนในโปรแกรม EPAT ผมรู้สึกตื่นเต้นที่จะเรียนรู้วิธีการที่ว่าคนอื่น ๆ ทำให้การใช้งานเมื่อมันมาถึง backtesting ตามปกติเราเริ่มต้นใน Excel และจากนั้นย้ายไปอาร์ ก่อนหน้านี้มีการเขียนซีรีส์บล็อกใน backtesting ใน Excel และจากนั้นย้ายไปอาร์ผมมีความสนใจมากที่จะเห็นวิธีการที่แตกต่างกันเล็กน้อยที่ใช้โดยทีม QuantInsti กรุณาดาวน์โหลดกระดาษคำนวณ Excel เพื่อให้คุณสามารถทำตามตัวอย่างที่เราไปพร้อม "โดยการคำนวณราคาซื้อขายจะเปิดประตูบางอย่างที่น่าสนใจมากสำหรับการดำเนินการวิเคราะห์แม่" หนึ่งความแตกต่างในวิธีการก็คือว่ามันเปิดประตูสำหรับการวัดประสิทธิภาพที่ชอบ: ผลตอบแทนที่เป็นบวกทั้งหมด ผลตอบแทนที่เป็นลบ การซื้อขายในเชิงบวก การซื้อขายเชิงลบ ตีอัตราส่วน ผลตอบแทนเ​​ฉลี่ย แม่ (สูงสุดไม่พึงประสงค์การท่องเที่ยว) แต่ไม่ได้ทนทุกข์ทรมานจากความสามารถในการพล็อตส่วนโค้งเหมือนวิธีการเดิมของฉันคุณสามารถ แต่อย่างง่ายดายรวมโค้งส่วนได้เสีย (ฉันจะเพิ่มเส้นโค้งส่วนได้เสียที่โพสต์นี้) พันธกิจวัตถุประสงค์ สร้าง "Hello World" ของกลยุทธ์การซื้อขาย: ความ "ยาวสั้นค่าเฉลี่ยเคลื่อนที่กลยุทธ์ครอสโอเวอร์" ขั้นที่ 1: รับข้อมูล มีหลายสถานที่ที่คุณจะได้รับข้อมูลที่มี แต่ตัวอย่างนี้เราจะได้รับข้อมูลจากการเงิน yahoo ฉันจะสร้างตัวอย่างนี้ใช้ Google เป็นหุ้น นี่คือลิงค์ที่จะดาวน์โหลดข้อมูลราคาในรูปแบบไฟล์ CSV จาก Yahoo หมายเหตุ: โปรดตรวจสอบการสั่งซื้อสินค้าจากเก่าไปใหม่ล่าสุดวันที่ ข้อมูลราคาจาก Yahoo ในรูปแบบไฟล์ CSV ขั้นตอนที่ 2: สร้างคอลัมน์สำหรับทั้งยาวและสั้น ๆ ง่ายๆเคลื่อนไหวเฉลี่ย (SMA) สำหรับตัวอย่างนี้ฉันต้องการให้คุณที่จะทำให้การใช้งานของ 5 และ 25 วัน SMA สำหรับบรรดาของคุณที่ยังใหม่กับกลยุทธ์การซื้อขายเป็น SMA เป็นเพียงผลรวมของราคาปิดหารด้วยจำนวนการสังเกต 2.1) การสร้างระยะสั้น SMA (5 วัน) ใช้สูตรต่อไปนี้ใน Excel = เฉลี่ย (G2: G6) 2.2) การสร้างระยะยาว SMA (25 วัน) ใช้สูตรต่อไปนี้ใน Excel = เฉลี่ย (E2: E26) ขั้นตอนที่ 3: สร้างสัญญาณซื้อขาย มันอยู่ที่ขั้นตอนนี้ที่ผู้อ่านจะได้รับกับความแตกต่างที่สำคัญจากบล็อกโพสต์ก่อนหน้าของฉันในการสร้าง backtester vectorised ฉันจะรวมวิธีการเดิมของฉันในโพสต์นี้เป็นอย่างดีเพื่อที่จะพล็อตเส้นโค้งส่วนได้เสีย สิ่งต่อไปที่เราต้องทำคือการสร้างสัญญาณซื้อและขาย ในวันที่ผ่านมา (5) SMA เป็นดังต่อไปนี้ (25) SMA และวันที่ปัจจุบันมีการเปลี่ยนแปลงที่ (5) SMA คือตอนดังกล่าวข้างต้น (25) SMA, เขียนสตริง "ซื้อ" ในสนามปัจจุบัน ในวันที่ผ่านมา (5) SMA สูงกว่า (25) SMA และวันที่ปัจจุบันมีการเปลี่ยนแปลงที่ (5) SMA อยู่ในขณะนี้ด้านล่าง (25) SMA, เขียนสตริง "ขาย" ในสาขาปัจจุบัน เพิ่มสตริงที่ว่างเปล่า "" เพื่อเขตข้อมูลปัจจุบัน นี้เป็นตัวแทนใน Excel โดยใช้สูตรต่อไปนี้: = IF (และ (H26 & gt; I26, H25 & lt; I25), ซื้อ, IF (และ (H26 & lt; I26, H25 & gt; I25) ขาย)) ขั้นตอนที่ 4: รับซื้อ / ราคาขายของการค้า ในคอลัมน์ต่อไปเพิ่มต่อไปนี้สูตร Excel = IF (J26 & lt; & gt;, B27, K26) ตรรกะจะเป็นดังนี้: ถ้าคอลัมน์สัญญาณการค้าสำหรับวันก่อนหน้า (สำคัญมากที่จะเป็นตัวบ่งชี้ความล่าช้าในการลบอคติมองไปข้างหน้า) ไม่สตริงที่ว่างเปล่าแล้วให้ใช้ราคาเดิมข้างต้นสนามปัจจุบัน อื่น ๆ ตั้งค่าฟิลด์ปัจจุบันราคาเปิดสำหรับวันที่ ขั้นตอนที่ 5: การคำนวณผลตอบแทน เพิ่มคอลัมน์ที่เรียกว่าผลตอบแทนที่ทำให้การใช้งานดังต่อไปนี้ Excel สูตร = IF (J26 = ขาย, K27 / K26-1, IF (J26 = ซื้อ 1-K27 / K26)) ถ้าวันก่อนหน้าที่เกิดสัญญาณขายแล้วใช้ราคาปิดของวันนี้และหารด้วยราคาซื้อและลบ 1 อื่น ๆ ถ้าวันก่อนหน้าที่สร้างสัญญาณซื้อแล้วเพิ่ม 1 และลบ (ราคาปิดของวันนี้และหารด้วยราคาซื้อ) สูตรนี้จะคำนวณผลตอบแทนเ​​พื่อการค้าได้รับ ขั้นตอนที่ 6: การคำนวณการวัดประสิทธิภาพบาง ผลตอบแทนที่เป็นบวก: = SUMIF (L: L, & gt; 0 ") ผลตอบแทนเ​​ชิงลบ: = SUMIF (L: L & lt; 0 ") การค้าเชิงบวก = COUNTIF (L: L, & gt; 0) การค้าเชิงลบ: = COUNTIF (L: L & lt; 0) ผลตอบแทนเ​​ฉลี่ย = เฉลี่ย (L: L) เหล่านี้ไม่ได้วัดประสิทธิภาพแบบดั้งเดิม แต่ผลงานโดยการคำนวณการซื้อและราคาขายจะเปิดประตูบางอย่างที่น่าสนใจมากสำหรับการดำเนินการวิเคราะห์การเดินทางที่ไม่พึงประสงค์สูงสุดที่สามารถนำมาใช้เพื่อเพิ่มประสิทธิภาพการสูญเสียหยุด (เพิ่มเติมเกี่ยวกับที่อยู่ในตำแหน่งอื่น) "หมายเหตุ: ผมไม่สามารถที่จะคำนวณตัวชี้วัดเหล่านี้ในวิธีการของฉันก่อนหน้าเนื่องจากไม่ได้มีการบันทึกราคาซื้อและการขายของการทำธุรกรรม." ส่วนที่ 2: การเพิ่มทุน Curve ขั้นตอนที่ 1: เพิ่มคอลัมน์ใหม่สำหรับผลตอบแทนประจำวันของหุ้น สำหรับวันนี้ผมจะทำให้การใช้ราคาปิดของหุ้นที่ปรับเท่าที่ฉันต้องการจ่ายเงินปันผลที่จะสะท้อนให้เห็นในกลยุทธ์ของเราส่วนโค้งและรายละเอียดของผลตอบแทนรวม สูตรสำหรับผลตอบแทนในชีวิตประจำวันคือ: (ราคาวันนี้ / ราคาเมื่อวานนี้) - 1 สูตร Excel = G3 / G2-1 ขั้นตอนที่ 2: การคำนวณยาวหรือสัญญาณการถือครองสั้น ในคอลัมน์นี้เราต้องการที่จะทราบว่าเรากำลังถือยาวหรือตำแหน่งสั้น ซึ่งเป็นตัวแทนจาก 1 เป็นเวลานานและ -1 สำหรับระยะสั้น นี้สร้างในการเคลื่อนย้ายข้ามเฉลี่ยมากกว่ากลยุทธ์โดยไปนานถ้าระยะสั้นอยู่เหนือ SMA ระยะยาวและระยะสั้น SMA ถ้าตรงข้ามเป็นจริง "หมายเหตุ: คุณต้องล่าช้าสัญญาณโดยวันหนึ่งเพื่อที่จะลบอคติที่มองไปข้างหน้า." ในตัวอย่างนี้สูตร Excel เป็นเช่น = IF (H26 & gt; I26, 1, -1) ขั้นตอนที่ 3: การคำนวณผลตอบแทนรายวันกลยุทธ์ นี้เป็นส่วนที่ง่าย; เพียงแค่คูณผลตอบแทนทุกวันสำหรับ Google โดยตำแหน่งปัจจุบัน ขั้นตอนที่ 4: การคำนวณผลตอบแทนสะสมทั้งกลยุทธ์และการใช้ร่วมกันเช่นถ้าคุณซื้อและถือ (ทำเช่นนี้จะทำหน้าที่เป็นเปรียบเทียบ) สูตรที่จะ cumulate ผลตอบแทนเ​​ป็นเรื่องง่าย แรกที่คุณต้องเพิ่มจำนวนเริ่มต้นผมใช้ 1000000 จะเริ่มต้นด้วย จากนั้นให้ใช้สูตรต่อไปนี้: การกลับมาสะสม = (ความสนใจ * ค่าปัจจุบัน) + ค่าปัจจุบัน สูตร Excel = (T26 * S27) + T26 ขั้นตอนที่ 5: พล็อตผลตอบแทน ที่สามารถเห็นได้จากกราฟข้างต้นกลยุทธ์นี้ไม่ได้เป็นอย่างใดอย่างหนึ่งทำกำไรได้ในช่วงเวลานี้โดยเฉพาะอย่างยิ่งและส่วนแบ่ง แต่เน้นการกวดวิชานี้คือการสร้าง backtester ใช้ Excel ฉันจะส่งเสริมให้ผู้อ่านที่จะสำรวจกลยุทธ์การค้าอื่น ๆ โดยพยายามที่จะรวมตัวบ่งชี้ที่อาร์เอสที่จะทำหน้าที่เป็นคู่มือเกี่ยวกับวิธีการขนาดตำแหน่ง สำหรับผู้อ่านที่มีความสนใจ: มีลักษณะที่ไม่พึงประสงค์การเดินทางสูงสุดและวิธีการที่สามารถนำมาใช้เพื่อเพิ่มประสิทธิภาพการสูญเสียหยุด การจัดการที่ดีเกี่ยวกับเรื่องนี้สามารถอ่านได้ในหนังสือเล่มต่อไปนี้