Upgrade to Pro — share decks privately, control downloads, hide ads and more …

zipline のカスタムデータバンドルを自作する

5f61d7d00b4411bc29378300f7321efd?s=47 2casa
December 17, 2017
1.2k

zipline のカスタムデータバンドルを自作する

Quantopianが主導して開発しているpythonベースのアルゴリズムトレーディングライブラリであるziplineに、日本株の株価データを取り込む際の工程とポイントをかいつまんで紹介。

5f61d7d00b4411bc29378300f7321efd?s=128

2casa

December 17, 2017
Tweet

Transcript

  1. zipline ͷΧελϜ σʔλόϯυϧΛࣗ࡞͢Δ 2017/12/17 (Sun) Fin-py Fintech LTେձ & ๨೥ձ

  2. ࣗݾ঺հ connpass/github: 2casa Twitter : @moscow_II ʻຊ৬ʼ ূ݊ձࣾ޲͚σΟʔϦϯάγεςϜͷ։ൃɾاը Quantopian ͱ͸ແؔ܎Ͱ͕͢ɺ࢓ࣄฑڵຯ͋Γ

  3. ຊ೔ͷςʔϚ • ೔ຊגͰziplineʢQuantopianͷΦʔϓϯιʔε ൛ʣͷΧελϜσʔλόϯυϧΛ࡞੒ͯ͠Έ͕ͨɺ མͱ͕͍͔݀ͭ͋͘͠Γ·ͨ͠ • ͕࣌ؒগͳ͍ͷͰɺߏஙͷ֓ཁͱ޻ఔ͝ͱͷϙΠ ϯτΛ͔͍ͭ·ΜͰ͓࿩͠·͢ • ίʔυ΍ΑΓৄࡉͳղઆ͸ޙ೔·ͱΊͯެ։͢Δ

    ༧ఆͰ͢
  4. Quantopian ถࠃQuantopianࣾʹΑΔΫϥ΢υϕʔεͷΞϧΰϦζϜτϨʔσΟϯάʢʹࣗಈചങʣ؀ڥ ΞϧΰϦζϜͷهड़ݴޠ͸pythonɻ ڵຯ͕͋ΔํɿTokyo Quantopian User Group (connpass)΁

  5. Quantopian ͷಛ௃ •PROS •IDE͕͋Γɺૢ࡞ੑ͕ྑ͍ •גՁ৘ใΛແྉͰར༻Ͱ͖Δ(ͨͩ͠DLෆՄ) •CONS •ถࠃגࣜݶఆ •ݱঢ়Python2 ͷΈ

  6. zipline ͬͯʁ •Quantopian ͷΦʔϓϯιʔε൛ •python3 ରԠʢਖ਼֬ʹ͸3.5ʣ •QuantopianͷΑ͏ͳIDE͸ͳ͍͕ɺjupyter notebook্ Ͱಈ͔͢͜ͱ΋Ͱ͖Δɻ •גՁσʔλϕʔεʢʹσʔλόϯυϧʣΛಠࣗʹߏங͢

    Δ͜ͱ͕Ͱ͖Δ ೔ຊגσʔλͰΧελϜσʔλόϯυϧΛ࡞ͬͯΈΑ͏ʂ ؀ڥɿpython3.5 + zipline 1.1.1 (pip install -e <path>) ʢmacos + conda ʹΑΔԾ૝؀ڥʣ
  7. ͬ͘͟Γߏஙखॱ 1. גՁσʔλͷௐୡͱOHLCVσʔλ࡞੒ 2. औҾॴ৘ใΛఆٛ 3. σʔλόϯυϧ΁ͷσʔλͷऔΓࠐΈ 4. όοΫςετΛ૸ΒͤΔ

  8. 1. גՁσʔλͷௐୡͱOHLCVσʔλ࡞੒ 2. औҾॴ৘ใΛఆٛ 3. σʔλόϯυϧ΁ͷσʔλͷऔΓࠐΈ 4. όοΫςετΛ૸ΒͤΔ OHLCVɿ̐ຊ஋ʢOpen /

    High / Low / Closeʣʴग़དྷߴʢVolumeʣ
  9. גՁσʔλͷௐୡ JPX Data Cloud Ͱߪೖͷ৔߹ ౦ূגࣜશ໿ఆσʔλɿ̍ϲ݄෼ 1,404ԁ (ݸਓར༻) ೥ؒɿ1,404ԁ *

    12ϲ݄ = 16,848 ԁ
  10. OHLCVϑΝΠϧ࡞੒࣌ͷ ͭ·͖ͮϙΠϯτ open, high, low, close, volume ͷϔομ໊Ͱ࡞੒͢Δඞཁ͕͋Δɻ ̐ຊ஋ͷج४࣌ࠁΛɺJST ͔Β

    UTC ʹมߋ͢Δɻมߋ͠ͳ͍ͱσʔλऔΓࠐΈ࣌ʹࣦഊ͢Δɻ Before After ݩͱͳΔλΠϜκʔϯ ม׵ઌλΠϜκʔϯ
  11. 1. גՁσʔλͷௐୡͱOHLCVσʔλ࡞੒ 2. औҾॴ৘ใΛఆٛ 3. σʔλόϯυϧ΁ͷσʔλͷऔΓࠐΈ 4. όοΫςετΛ૸ΒͤΔ

  12. औҾॴ৘ใͷߏங ΧελϜΧϨϯμʔΛ৽ن࡞੒͢Δɻ • औҾॴجຊΫϥε • औҾॴ໊ • λΠϜκʔϯ • ཱձ͍։࢝࣌ࠁ

    • ཱձ͍ऴྃ࣌ࠁ • ٳ೔৘ใ • ౔೔Ҏ֎ͷٳ৔೔෇Λఆٛ exchange_calendar_tse.py ൈਮ
  13. ٳ೔ΧϨϯμʔߏங࣌ͷ ϙΠϯτ japandas ʹ౦ূٳ೔ΧϨϯμʔ͕͋Δɻ͜ΕΛ׆༻͢Δ͜ͱͰख͕ؒল͚·͢ɻ tse_holidays.py ൈਮ japandasͷTSEHolidayCalendar ʹ ͸ɺ1970 ೥ʔ2030೥ͷ౦ূٳ৔೔

    ʢॕ೔ʴ೥຤೥࢝ʣ͕༻ҙ͞Ε͍ͯΔ
  14. 1. גՁσʔλͷௐୡͱOHLCVσʔλ࡞੒ 2. औҾॴ৘ใΛఆٛ 3. σʔλόϯυϧ΁ͷσʔλͷऔΓࠐΈ 4. όοΫςετΛ૸ΒͤΔ

  15. σʔλόϯυϧ΁ͷऔΓࠐΈ “csvdir” ͱ͍͏ΧελϜσʔλόϯυϧΛ࡞੒͢Δπʔϧ͕༻ҙ͞Ε͍ͯΔɻ σʔλόϯυϧ΁ͷऔΓࠐΈεΫϦϓτΛɺ~/.zipline/extension.py ʹهࡌ͢Δ ΧελϜσʔλόϯυϧ࡞੒ πʔϧ”csvdir” Λݺͼग़͢ઃ ఆ ౦ূ༻ΧελϜΧϨϯμʔΛ

    ༧Ίziplineʹ௥Ճొ࿥
  16. σʔλऔΓࠐΈͷ஫ҙࣄ߲ “csvdir”͸ɺ೔଍ʢ”daily”ʣ͓Αͼ෼଍ʢ”minute”ʣσʔλΛΧελϜσʔλόϯυϧͱͯ͠ొ࿥͢Δ ͜ͱ͕Ͱ͖Δ͕ɺಉ࣌ʹొ࿥͠Α͏ͱ͢Δͱ໏ฑͷೋॏొ࿥ʹΑΔϢχʔΫΩʔ੍໿ҧ൓͕ग़Δόά ͕͋Δʢ2017/12ݱࡏʣɻ zipline ingest [-b bundle-name] Ͱ csvϑΝΠϧΛσʔλόϯυϧʹొ࿥

    csvdir.py ൈਮ
  17. 1. גՁσʔλͷௐୡͱOHLCVσʔλ࡞੒ 2. औҾॴ৘ใΛఆٛ 3. σʔλόϯυϧ΁ͷσʔλͷऔΓࠐΈ 4. όοΫςετΛ૸ΒͤΔ

  18. όοΫςετ(on jupyter) [όοΫςετظؒ] 2017/01/01 - 2017/01/11 [σʔλͷස౓] minute(෼଍) 00:00 ͔Β෼଍Ͱ஋ஈ͕औಘͰ͖͍ͯΔ

    ʢJST = UTC + 9ʣ ॕ೔੍ޚͷ͓͔͛Ͱ ਖ਼݄ࡾ͕೔ʢॕ೔Ͱ͸ͳ͍͕ٳ৔ʣ ੒ਓͷ೔ʢॕ೔ʣ ΛεΩοϓͰ͖͍ͯΔ
  19. jupyter notebook্Ͱ όοΫςετ͢Δࡍͷ஫ҙ఺ “%load_ext zipline” ͱɺ“%%zipline —start= …” ͸ηϧΛ෼͚ͳ͍ͱਖ਼͘͠ಈ࡞͠ͳ͍ —trading-calendar=TSE

    ͷࢦఆΛ๨ΕΔͱɺΧϨϯμʔ͕NYSEʢถࠃגࣜࢢ৔ʣͱͯ͠Ξϧΰ͕ಈ ͨ͘ΊגՁσʔλ͕र͑ͳ͍ɻ ηϧΛ෼͚Δ —trading-calendarͷࢦఆΛ๨Εͳ͍ όοΫςετظؒࢦఆ όοΫςετ࣌ؒ࣠ʢσϑΥϧτɿdailyʣ
  20. ࠷ޙʹ • ࣮ࡍʹόοΫςετΛ͢ΔͨΊʹ͸ɺ࣮͸͜ΕͰ͸ෆे෼ • גࣜ෼ׂ΍഑౰ࢧ෷͍ͳͲͷʮݖརམͪʯʹΑΔגՁमਖ਼͕ඞཁ • csvdir ʹ͸ิਖ਼ػೳ΋͍͍ͭͯΔ͕ɺσʔλΛ༻ҙ͠ͳ͍ͱ͍͚ͳ͍ • खܰʹ೔ຊגͰΞϧΰϦζϜτϨʔυΛࢼ͍ͨ͠ͷͰ͋Ε͹ɺ

    SmartTrade ͷ QuantX ͱ͍͏αʔϏε͕͋Δʢͨͩ͠ݱঢ়೔଍ͷ Έʣɻ • ࠓճ঺հͨ͠खॱ͸bitcoin ʹ΋Ԡ༻Ͱ͖Δɻݖརམͪͷ৺഑͕ͳ ͘ɺσʔλऔಘ΋Ͱ͖ͦ͏ͳͷͰɺͬͪ͜঺հͨ͠ํ͕࣮༻ੑ͕ߴ ͔ͬͨͷͰ͸ʁͱܰ͘ޙչ͍ͯ͠Δ