Sunday 23 July 2017

การย้าย ค่าเฉลี่ย หมีแพนด้า Dataframe


backtesting ครอสโอเวอร์เฉลี่ยเคลื่อนที่ในหลามกับ pandas. In บทความก่อนหน้านี้ในการวิจัย Backtesting สภาพแวดล้อมในหลามกับนุ่นเราสร้างสภาพแวดล้อม backtesting วิจัยตามเชิงวัตถุและการทดสอบบนกลยุทธ์การพยากรณ์แบบสุ่มในบทความนี้เราจะทำให้การใช้งานของ เครื่องจักรกลที่เรานำมาใช้เพื่อดำเนินการวิจัยเกี่ยวกับกลยุทธ์ที่เกิดขึ้นจริง ได้แก่ Crossover Moving Average บน AAPL. Moving Average Crossover Strategy เทคนิค Moving Average Crossover เป็นกลยุทธ์โมเมนตัมที่มีชื่อเสียงมากเป็นที่รู้จักกันดีโดยทั่วไปถือว่าเป็นตัวอย่างของ Hello World สำหรับการซื้อขายเชิงปริมาณ กลยุทธ์ที่ระบุไว้ในที่นี้คือตัวกรองค่าเฉลี่ยเคลื่อนที่แบบยาวสองตัวที่มีการสร้างขึ้นโดยมีช่วงเวลามองย้อนกลับที่แตกต่างกันของชุดเวลาเฉพาะสัญญาณในการซื้อสินทรัพย์เกิดขึ้นเมื่อค่าเฉลี่ยเคลื่อนที่เฉลี่ยย้อนกลับสูงกว่าค่าเฉลี่ยย้อนกลับของค่าเฉลี่ยที่ยาวนานขึ้น ค่าเฉลี่ยก็เกินกว่าค่าเฉลี่ยที่สั้นกว่าสินทรัพย์จะขายกลับกลยุทธ์การทำงานของเรา ฉันจะเลือกแอ็ปเปิ้ลอิงค์ AAPL เป็นซีรีส์เวลาด้วย lookback สั้น 100 วันและ lookback ยาว 400 วันนี่เป็น ตัวอย่างที่ได้รับจากไลบรารีการค้าแบบ zipline algorithmic ดังนั้นหากเราต้องการที่จะใช้ backtester ของเราเองเราจำเป็นต้องตรวจสอบว่าตรงกับผลลัพธ์ใน zipline เป็นวิธีพื้นฐานในการตรวจสอบความถูกต้องตรวจสอบให้แน่ใจว่าได้ทำตามคำแนะนำก่อนหน้านี้ซึ่งอธิบายถึงวิธีการเริ่มต้น ลำดับชั้นของวัตถุสำหรับ backtester สร้างมิฉะนั้นโค้ดด้านล่างจะไม่ทำงานสำหรับการใช้งานนี้โดยเฉพาะฉันได้ใช้ห้องสมุดต่อไปนี้การใช้ต้องจากกวดวิชาก่อนหน้านี้ขั้นตอนแรกคือการนำเข้าโมดูลที่จำเป็นและวัตถุในก่อนหน้านี้ กวดวิชาเราจะ subclass ชั้นกลยุทธ์พื้นฐานนามธรรมในการผลิต MovingAverageCrossStrategy ซึ่งมีทุกรายละเอียดเกี่ยวกับวิธีการสร้างสัญญาณเมื่อย้าย av erages ของ AAPL ข้ามกันและกันวัตถุต้อง shortwindow และ longwindow ที่จะใช้ค่าได้รับการตั้งค่าเริ่มต้นของ 100 วันและ 400 วันตามลำดับซึ่งเป็นพารามิเตอร์เดียวกับที่ใช้ในตัวอย่างหลักของ zipline ย้าย ค่าเฉลี่ยจะถูกสร้างขึ้นโดยใช้ฟังก์ชัน rollingmean ในแท่งปิดการปิดราคาปิดของหุ้น AAPL เมื่อสร้างค่าเฉลี่ยส่วนบุคคลแล้วชุดสัญญาณจะถูกสร้างโดยการตั้งค่าคอลัมน์ให้เท่ากับ 1 0 เมื่อค่าเฉลี่ยเคลื่อนที่สั้นมากกว่า ค่าเฉลี่ยเคลื่อนที่นานหรือ 0 0 มิฉะนั้นจากคำสั่งตำแหน่งนี้สามารถสร้างขึ้นมาเพื่อแสดงสัญญาณการซื้อขาย MarketOnClosePortfolio ถูกแบ่งย่อยจาก Portfolio ซึ่งพบได้ในเกือบจะเหมือนกันกับการใช้งานตามที่อธิบายไว้ในกวดวิชาก่อนหน้านี้โดยมีข้อยกเว้นว่าธุรกิจการค้า ขณะนี้ดำเนินการบนพื้นฐาน Close-to-Close แทนที่จะเป็น Open-to-Open basis สำหรับรายละเอียดเกี่ยวกับวิธีการกำหนด Portfolio object ให้ดูที่ previous t utorial ฉันได้ทิ้งโค้ดไว้เพื่อความครบถ้วนสมบูรณ์และเพื่อให้บทเรียนนี้มีเนื้อหาแบบฝึกหัดเมื่อเรียน MovingAverageCrossStrategy และ MarketOnClosePortfolio แล้วฟังก์ชันหลักจะถูกเรียกใช้เพื่อผูกฟังก์ชันการทำงานทั้งหมดไว้ด้วยกันนอกจากประสิทธิภาพของกลยุทธ์แล้ว ตรวจสอบผ่านพล็อตของเส้นโค้งส่วนได้ Pandas DataReader วัตถุดาวน์โหลดราคา OHLCV ของหุ้น AAPL สำหรับรอบระยะเวลาตั้งแต่ 1 ม. ค. 1990 ถึง 1 มกราคม 2002 ณ จุดที่สัญญาณ DataFrame ถูกสร้างขึ้นเพื่อสร้างสัญญาณยาวเท่านั้นต่อจากนั้นผลงานคือ สร้างขึ้นด้วยฐานเงินทุนเริ่มแรก 100,000 เหรียญสหรัฐและผลตอบแทนคำนวณจากส่วนของส่วนของผู้ถือหุ้นขั้นตอนสุดท้ายคือการใช้ matplotlib เพื่อคำนวณพล็อตทั้งสองแบบของราคา AAPL ซึ่งถูกซ้อนทับกับค่าเฉลี่ยเคลื่อนที่และสัญญาณการขายซื้อรวมทั้ง เส้นโค้งส่วนที่มีสัญญาณการขายซื้อเดียวกันรหัสวางแผนถูกนำมาและแก้ไขจากตัวอย่างการดำเนินงาน zipline ผลกราฟิกของรหัสดังต่อไปนี้ฉันบ้า e ของคำสั่งวาง IPython เพื่อใส่นี้โดยตรงในคอนโซล IPython ในขณะที่ในอูบุนตูเพื่อให้การแสดงผลแบบกราฟิกยังคงอยู่ในมุมมอง upticks สีชมพูแทนการซื้อหุ้นในขณะที่ downticks สีดำแสดงขายมันกลับมาเคลื่อนไหวเฉลี่ย Crossover ผลการดำเนินงานจาก 1990-01-01 ถึง 2002-01-01 เมื่อมองเห็นได้ว่ากลยุทธ์จะสูญเสียเงินไปในช่วงนี้โดยมีธุรกิจการท่องเที่ยวแบบ round-trip 5 แห่งซึ่งไม่น่าแปลกใจที่พฤติกรรมของ AAPL ในช่วงนี้มีแนวโน้มลดลงเล็กน้อย ตามด้วยจุดเริ่มต้นของการเติบโตที่สำคัญในปี 2541 ช่วงเวลาย้อนกลับของสัญญาณเฉลี่ยเคลื่อนที่มีขนาดค่อนข้างใหญ่และส่งผลกระทบต่อผลกำไรของการค้าในขั้นสุดท้ายซึ่งอาจทำให้กลยุทธ์มีกำไรได้ในบทความต่อไปเราจะสร้างวิธีการที่ซับซ้อนขึ้น การวิเคราะห์ประสิทธิภาพรวมทั้งการอธิบายถึงวิธีการปรับช่วงเวลามองย้อนกลับของแต่ละค่าเฉลี่ยที่เคลื่อนไหวได้อย่างถูกต้องเพียงเริ่มต้นด้วยการวิเคราะห์เชิงปริมาณการวิเคราะห์การเปลี่ยนแปลงค่าเฉลี่ย Crosso ver Strategy Backtest Returns ใช้หมีแพนด้าในโพสต์นี้ฉันคิดว่าฉันจะใช้ประโยชน์จากผลลัพธ์ที่เราได้จาก backtest ครอสโอเวอร์เฉลี่ยเคลื่อนไหวในโพสต์ล่าสุดสามารถพบได้ที่นี่และใช้จ่ายบิตของเวลาขุดลึกเข้าไปใน และสร้างบางส่วนของการวิเคราะห์เกี่ยวกับตัวชี้วัดประสิทธิภาพที่สำคัญบางตัวและข้อมูลที่น่าสนใจโดยทั่วไปบางอย่างเพื่อความครบถ้วนด้านล่างคือโค้ดทั้งหมดที่จำเป็นในการสร้างผลลัพธ์ของการทดสอบหลังการทำแบบทดสอบเชิงกลยุทธ์สำหรับการวิเคราะห์ที่กำลังจะเกิดขึ้นของเราพร้อมกับการสร้างแผนภูมิเส้นส่วนของทุนเพียงเพื่อให้แน่ใจว่าเรา ได้เรียกใช้อย่างถูกต้อง นำเข้าโมดูลที่เกี่ยวข้องนำเข้าหมีแพนด้าเป็น numpy PD นำเข้าเป็น NP จากข้อมูล pandasdatareader นำเข้าจากการนำเข้าการนำเข้าคณิตศาสตร์ sqrt เป็นข้อมูล PLT ดาวน์โหลดลงใน DataFrame และสร้างการย้ายคอลัมน์เฉลี่ย SP500 yahoo, เริ่มต้น 1 1 2000 SP500 42D SP500 252D สร้างคอลัมน์ที่มีการเคลื่อนย้ายการแพร่กระจายเฉลี่ย SP500 ค่า 42-252 sp500 42d - sp500 252d ตั้งค่าจำนวนจุดที่ต้องการเป็นเกณฑ์สำหรับความแตกต่างของการกระจายและสร้างคอลัมน์ที่มียุทธวิธี Stance X 50 sp500 Stance gt X, 1, 0 sp500 จุดยืน lt X, -1, sp500 Stance สร้างคอลัมน์ที่มีล็อกตลาดรายวัน ผลตอบแทนและกลยุทธ์รายวันส่งกลับ sp500 ผลตอบแทนของตลาด sp500 กลยุทธ์ sp500 ตลาดกำหนดกลับกำหนดกลยุทธ์เริ่มต้นทุน 1 เป็น 100 และสร้างเส้นโค้งส่วน sp500 ยุทธศาสตร์หุ้น 1 แสดงกราฟเส้นโค้งหุ้น sp500 กลยุทธ์การวิเคราะห์ฉันได้วางแผนไว้ดังนี้ 1 ส่วนแผนภูมิ เราจะสร้างแผนภูมิสำหรับชุดต่อไปนี้ความผันผวนต่อปีโรลลิ่ง 1 ปีขอัตราการหมุนวน 1 ปี c การหมุนเวียน 1 ปี d ผลตอบแทนรายวัน rt e การกระจายผลตอบแทนรายวัน histogram ขั้นตอนแรกของเราคือการสร้าง DataFrame ใหม่ที่มีข้อมูลเพียงอย่างเดียวที่เราต้องการซึ่งเป็นเส้นโค้งของส่วนของกลยุทธ์รวมถึงการส่งคืนกลยุทธ์ในแต่ละวันซึ่งจะทำดังนี้ Equity. State ตอนนี้เราต้องสร้าง อัปโหลด DataFrame เพื่อรวมข้อมูลดิบทั้งหมดที่เราจะต้องคำนวณชุดข้อมูลที่ระบุไว้ด้านบนซึ่งเราต้องการจัดทำโค้ดไว้สำหรับโค้ดนี้ สร้างคอลัมน์ที่ระบุว่าผลตอบแทนในแต่ละวันเป็นบวกลบหรือแบน strat ยุทธศาสตร์ gt 0, 1,0 strat loss 0, 1,0 strat scratch 0, 1,0 สร้างคอลัมน์ที่มีผลรวมสะสมของแต่ละคอลัมน์ที่สร้างขึ้นข้างต้น strat wincum gt 0, strat losscum lt 0, strat scratchcum 0 สร้างคอลัมน์ที่มีผลรวมของวันทำการ - เราจะใช้ข้อมูลนี้เพื่อสร้างเปอร์เซ็นต์ของเราในภายหลัง strat days strat strat loss stratum strat scratchcum สร้างคอลัมน์ที่แสดงวันที่ 252 ผลรวมของผู้ชนะที่สูญเสียวันที่แบนวันที่ยุทธศาสตร์ยุทธวิธียุทธศาสตร์ยุทธศาสตร์การสร้างคอลัมน์ที่มีอัตราส่วนการเข้าชมและอัตราการสูญเสียข้อมูล stratratum strat ยุทธศาสตร์ wincum strat ยุทธศาสตร์ในการสร้างคอลัมน์ที่มีอัตราการกลิ้ง 252 วันและอัตราส่วนการสูญเสียข้อมูล rollhitratio strat rolllossratio 1 - strat rollhitratio สร้างคอลัมน์ที่มีกลิ้ง 12 เดือน return strat roll12mret สร้างคอลัมน์โดยเฉลี่ยที่ชนะการสูญเสียเฉลี่ยและรายได้เฉลี่ยต่อวันเฉลี่ย strat stratwin stratwin กลยุทธ์กลยุทธ์ Strat gt Strat กลยุทธ์ averageloss Strat Strat กลยุทธ์ LT Strat averagedailyret สร้างคอลัมน์ที่มีกลิ้ง 1 ปีส่วนเบี่ยงเบนมาตรฐานทุกวันและกลิ้ง 1 ปีต่อปีส่วนเบี่ยงเบนมาตรฐาน Strat roll12mstdev Strat roll12mannualisedvol Strat roll12mstdev sqrt 252.Ok ดีตอนนี้เรามีข้อมูลของเราทุกคนพร้อมที่พล็อต แผนภูมิต่างๆที่เรากล่าวถึงข้างต้นเราสามารถทำได้ดังนี้ 10 ของกำไรเดือนแอมป์ที่ไม่ทำกำไรเดือน positivemonths len stratm กลยุทธ์ stratm กลยุทธ์ gt 0 negativemonths len stratm กลยุทธ์ stratm กลยุทธ์ LT 0 flatmonths len stratm กลยุทธ์ stratm กลยุทธ์ 0 percpositivemonths positivemonths positivemonths negativemonths flatmonths percnegativemonths negativemonths positivemonths negativemonths flatmonths พิมพ์กำไรเดือน, percpositivemonths รอบ STR 2 100 พิมพ์เดือนที่ไม่แสวงหาผลกำไร, percnegativemonths รอบ STR 2 100 ของกำไรเดือน 49 0 ขององค์กรไม่แสวงหาผลกำไรเดือน 45 0. 11 จำนวนกำไรเดือนจำนวนไม่แสวงหากำไรเดือน profunprofmonths positivemonths negativemonths จำนวนพิมพ์เดือนกำไรจำนวน เดือนกำไรบุหรี่, profunprofmonths รอบ 2.Number ของเดือนกำไรจำนวนไม่แสวงหากำไรเดือน 1 08. โดยเฉลี่ย 12 avmonthlypos กำไรรายเดือน stratm กลยุทธ์ stratm กลยุทธ์ gt พิมพ์เฉลี่ยกำไรรายเดือน avmonthlypos รอบ Str, 4 100 13 เฉลี่ยการสูญเสียรายเดือน avmonthlyneg stratm Strate กลยุทธ์รายได้เฉลี่ยรายเดือนขาดทุนเฉลี่ยรายเดือนลดลงรายเดือนเฉลี่ยขาดทุนเฉลี่ยรายเดือนขาดทุนเฉลี่ยรายเดือนขาดทุนเฉลี่ยต่อเดือน กำไรเฉลี่ยรายเดือนเฉลี่ยรายเดือนขาดทุน 1 0683. และในที่สุดก็เพิ่งเสร็จสิ้นการใช้ฟังก์ชันแพนด้าดาต้าฟิลเพิ่มเติมอีกเล็กน้อยฉันจะสร้างตารางการรับคืนรายเดือนขั้นตอนแรกคือการสร้างตาราง Pivot และ resample เพื่อสร้างสิ่งที่เป็น รู้จักกันเป็น month. o เดือนเดือนวัตถุดังนั้นเราสามารถจัดการมันเล็กน้อย mor ได้อย่างง่ายดายฉันจะแปลงวัตถุนี้กลับเป็น DataFrame โดยใช้ฟังก์ชันเราสามารถใส่สัมผัสการตกแต่งโดยแปลงวันที่ดัชนีเพื่อแสดง เพียงปีมากกว่าวันที่แบบเต็มแล้วยังแทนที่หัวคอลัมน์เดือนปัจจุบันในรูปแบบตัวเลขที่มีรูปแบบ MMM ที่เหมาะสมประการแรกเราต้องลดลงอย่างรวดเร็วคอลัมน์ตารางอย่างใดอย่างหนึ่ง ระดับดัชนีซึ่งปัจจุบันเป็นคำว่า Strategy ซึ่งจะทำให้เรามีตารางที่มีเพียงดัชนีระดับเดียวที่ตรงกับจำนวนเต็มของเดือน วางดัชนีระดับบนสุดซึ่งแสดงให้เห็นเป็นกลยุทธ์โดยปกติแล้วตารางจะเปลี่ยนจากเดิมตอนนี้เราต้องเปลี่ยนดัชนีวันที่เพื่อแสดงในรูปแบบรายปี YYYY และส่วนหัวคอลัมน์ที่เหลือจะแสดง MMM รูปแบบรายเดือน แทนที่เต็มวันที่ในคอลัมน์ดัชนีโดยมีเพียงปีเดียวแทนที่คอลัมน์จำนวนเต็มที่มีรูปแบบ MMM ม. ค. , ก. พ. , มี.ค. , พ. ค. , พ. ค. , มิ.ย. , ก. ค. , ก. ย. , ต. ค. , พ. ย. , ธ. ค. เราตอนนี้ถูกทิ้งไว้พร้อมกับผลตอบแทนรายเดือน ตารางที่มีลักษณะเช่นนี้ Brilliant ดีฉันคิดว่าเพียงพอสำหรับตอนนี้เป็นโพสต์นี้เริ่มต้นที่จะได้รับนิด ๆ หน่อย ๆ long. I จะมีความคิดในอีกสองสามวันถัดไปเกี่ยวกับหัวข้อที่เป็นไปได้สำหรับการโพสต์ต่อไปของฉันและได้รับการทำงานใน that. Thanks สำหรับ along. It ดังต่อไปนี้เป็นธรรมเท่านั้นที่จะแบ่งปันการดำเนินงานคอลัมน์คอลัมน์พื้นฐานการดำเนินงานทางคณิตศาสตร์ขั้นพื้นฐานและการย้ายค่าเฉลี่ยใน Pandas นี้กับวิดีโอการสอนงูหลามที่มีรหัสตัวอย่างเราครอบคลุมบางส่วนของการดำเนินงานอย่างรวดเร็วและขั้นพื้นฐานที่เราสามารถดำเนินการกับเรา ข้อมูลสมมติว่าคุณมีชุดข้อมูลที่คุณต้องการเพิ่มค่าเฉลี่ยเคลื่อนที่หรือบางทีคุณอาจต้องการคำนวณทางคณิตศาสตร์บางส่วนโดยพิจารณาจากข้อมูลเล็กน้อยในคอลัมน์อื่น ๆ การเพิ่มผลลัพธ์ลงในคอลัมน์ใหม่ลองดูว่าเราสามารถทำได้อย่างไร ทำอย่างนั้นทั้งหมดที่กล่าวมาทั้งหมดควรจะเข้าใจเพราะมันได้รับการคุ้มครอง แล้วถึงจุดนี้ตอนนี้ให้ s สร้างคอลัมน์ใหม่เรียกว่า HL ซึ่งข้อมูลในคอลัมน์นี้เป็นผลมาจากราคาสูงลบราคาต่ำนี่เป็นเหมือนคุณจะทำอย่างไรกับพจนานุกรมเรากำหนด เป็นวัตถุใหม่ในข้อมูล Pandas ของเราโดยตั้งชื่อว่า HL จากจุดนี้เรากล่าวว่าค่าของวัตถุ HL นี้คือ - ยังไม่ได้ถูกนำมาใช้ แต่เป็นเรื่องที่น่าสนใจมากทีเดียวที่เราสามารถทำเช่นนี้ได้ ทำให้เกิดความสับสนเรายังสามารถพูด df HL df High - df Low แต่เนื่องจาก Pandas ใช้วัตถุเป็นจำนวนมากดังนั้นเราจึงสามารถอ้างอิงได้อย่างหมดจดเช่นเดียวกับวัตถุมันขึ้นอยู่กับคุณว่าคุณต้องการจะทำอย่างไรฉันชอบ เพื่อรักษามันเหมือนวัตถุตั้งแต่นั้นสิ่งที่เป็นหลังจากที่เราได้ทำงานนี้เราสามารถเห็นได้โดยการพิมพ์ออกหัวที่เราได้มีคอลัมน์ใหม่ที่ดีมีข้อมูลใหม่ของเราสิ่งที่เรียบร้อย แต่สิ่งที่เกี่ยวกับการอ้างอิงก่อน ข้อมูลในคอลัมน์อื่น ๆ เราสามารถทำได้หรือไม่ต้องการทำค่าเฉลี่ยเคลื่อนที่เราสามารถคำนวณค่าเฉลี่ยเคลื่อนที่ได้จาก Pandas เรียกว่า rollingmean. Above เราเคยได้ ยังคงคอลัมน์อื่น ๆ เช่นเราสามารถพจนานุกรมและกล่าวว่าคอลัมน์เท่ากับราคาปิดพารามิเตอร์ที่สองของเราที่นี่เป็นกรอบเวลาสำหรับค่าเฉลี่ยเคลื่อนที่นี้แล้วเราก็พิมพ์ข้อมูลชิ้นจาก 200 องค์ประกอบที่ 210 เราไม่สามารถทำที่นี่เราสามารถ แต่ข้อมูลสำหรับ 100MA จะไม่ได้รับการคำนวณจนกว่าเราจะมี 100 ชิ้นข้อมูลในการคำนวณอื่น ๆ ที่น่าสนใจในตัวฟังก์ชันด้วยหมีแพนด้า diff. With ฟังก์ชัน diff เราอีกครั้ง สามารถคำนวณความแตกต่างหรือเปลี่ยนแปลงจากค่าก่อนหน้าสำหรับคอลัมน์ได้ดังนั้นมีการดำเนินการขั้นพื้นฐานบางอย่างและการแนะนำข้อมูลเบื้องต้นเกี่ยวกับการจัดการและวิเคราะห์ข้อมูลด้วยหมีแพนด้าผมคิดว่าตอนนี้คุณน่าจะประทับใจกับโมดูลนี้มากแค่ไหน

No comments:

Post a Comment