為替取引(fx)でのtickdataの加工とmysqlで管理

13
為為為為 (FX) 為為 tickdata 為 為為為 MySQL 為為為 為為為為為為為為為為為為為為 為為為為 2015/6/11-22

Upload: maho-nakata

Post on 05-Aug-2015

183 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 為替取引(FX)でのtickdataの加工とMySQLで管理

為替取引 (FX) での tickdata の加工と MySQL で管理

理化学研究所情報基盤センター中田真秀

2015/6/11-22

Page 2: 為替取引(FX)でのtickdataの加工とMySQLで管理

話の大筋• Tick データは高解像度だが、そのままは使

いにくい。そのためローソク足に変換する。• 市場が開いているのは EET(Eastern European

Time) と EEST(Eastern European Summer Time)で、月曜 0:00:00 から金曜 23:59:59.999 まで

• EET/EEST でローソク足を管理保持し、 Query 時に変更する。– ローソク足を pandas (python) 、データ保持を

MySQL で保持する。

Page 3: 為替取引(FX)でのtickdataの加工とMySQLで管理

為替のインターバンク市場から個人投機家まで

• 為替は株のように中心に取引所があるわけではない。個々が自主的に行う

• 一番大きな為替市場は、世界中で主に銀行同士が取引している市場 : インターバンク市場– インターバンク = 銀行間– インターコンチネンタル = 大陸間– 一本 (=100 万通貨 ) 単位で取引しているらしい

• ブローカーはインターバンク市場から小売にもってくる (bring/broke)

Page 4: 為替取引(FX)でのtickdataの加工とMySQLで管理

インターバンク市場のオープン、クローズについて

• 銀行はウェリントン (NZ) から開く。時差は (UTC+12 or 13)

• シドニー (UTC+10, UTC+11)• 東京 (UTC+9) 、香港、シンガポール (UTC+8)…• イギリス (UTC, UTC+1)…• ニューヨーク (UTC-5)• 銀行のクローズはそのタイムゾーンで 17:00 まで。

Page 5: 為替取引(FX)でのtickdataの加工とMySQLで管理

インターバンク市場のオープン、クローズについて

• 世界中に存在する銀行の時間帯 (timezone) で…– 営業時間は 9:00-17:00– 休日は、土日

めんどくさいこと• 夏時間 / 冬時間の存在

– Summer /winter time, day saving time etc…– オーストラリアなどだと南半球なんで冬と夏が逆なこと– 国と地域によって開始日が違う。

• 曜日によって営業時間が違う。• 日本で月曜の朝 6 か 7 時から、土曜の朝 6 時か 7 時から。• 実際には朝 6,7 時から開いている broker は少ないが…

Page 6: 為替取引(FX)でのtickdataの加工とMySQLで管理

どの時間帯で管理するのが正しいか :EEST および EET

• UTC( 世界協定時 ) や JST( 日本 ) で管理すると、夏冬時間や営業時間の曜日による不定性が残る。

• EEST および EET 基準で考える。– だいたい月曜 0:00:00 から始まって、金曜の 23:59:59.999 で

終わるため、管理がしやすい !– これからはみ出た、足りないものは、その近くの tick で補

う。– この範囲外は値動きが小さく、スプレッドも広く、取引に

適さない。

次スライドでもう少し詳しく見てみる

Page 7: 為替取引(FX)でのtickdataの加工とMySQLで管理

いつ市場が閉まるか• EET = UTC+2, EEST = UTC+3• EST = UTC-5, EST(DST) = UTC-4

– 17:00 (EST) = 22:00 (UTC)– 17:00 (EST+DST) = 21:00 (UTC)

• EET&EST, EEST & EST(DST) : 両方夏 or 両方冬– 17:00 EST = 22:00 UTC = 24:00 EET– 17:00 EDT+DST = 21:00 UTC = 24:00 EEST

• EET と EST(DST) : 冬夏– EEST(10 月最終日曜まで ) EST(DST) (11 月第 1 日曜まで )– 11 月第 1 土曜日がスキマ– 17:00 EST+DST = 21:00 UTC = 23:00 EET

• EEST と EST 夏冬 : なし– EEST( 3月最終日曜から ) EST (3 月第 2 日曜まで )– 17:00 EDT = 22:00 UTC = 25:00 EEST

• まとめ: 11 月第 1 土曜日以外は 24:00 EEST or EST に閉まる (23:00EET)

Page 8: 為替取引(FX)でのtickdataの加工とMySQLで管理

いつ市場が開くか• NZST=UTC+13, NZDT=UTC+12

– 9:00 (NZST) = 22:00 (UTC)– 9:00 (NZDT) = 21:00 (UTC)

• EET = UTC+2, EEST = UTC+3• NZST/EET 場合

– 11 月第 1 日曜から (EET)-3 月第 1 日曜日まで (EST?)– 9:00 (NZST?) = 22:00 UTC = 24:00 EET

• NZDT/EEST の場合– 3 月第 2 日曜日から (EDT?) -10 月最終日曜日 (EEST)– 9:00 (NZDT?) = 21:00 UTC = 24:00 EEST

• ホントは NZST は 9 月最終日曜 -4 月の最初の日曜まで、それ以外は NZDT だが、 Dukascopy ではそうでなくて、アメリカ東部夏時間の開始、東ヨーロッパの夏時間終了を基準にしているようだ ??

Page 9: 為替取引(FX)でのtickdataの加工とMySQLで管理

まとめ : 市場のオープン時間• タイムゾーンには EET, EEST を使うべし• 月曜の 0:00:00 に市場が開く• 金曜の 23:59:59.9999 に市場が閉じる

• イレギュラー– 年に一度、 11 月第一金曜に 22:59:59.999 に市場

が閉まる。これは tick を補うことで対処できる。– NZST, NZDT に関するイレギュラーは考えられる。

しかし実際は Dukascopy では米東、東欧時間を基準にし、市場が開くので、イレギュラーは無い。

Page 10: 為替取引(FX)でのtickdataの加工とMySQLで管理

ひとやすみ

Page 11: 為替取引(FX)でのtickdataの加工とMySQLで管理

ローソク足の検索のため、番号をふる。

• Tick は不規則だが、ローソク足は時間の規則性がある。– Tick はローソク足以上に間隔が広がることがある

し、そもそも欠けていることがある• 2015/6/8 9:00:00 (JST) から 1024 本 5 分足が欲し

いとかなると…– 1024 本前は何年何月何日何時何分 ? 土日挟むが ? – EURUSD, EURJPY を 1024 本と比較したいとき、欠け

た足があると、時間がズレることがある

– 意味がなくとも、埋めといたほうが分析するには楽どうせそこら辺は値に影響しない

Page 12: 為替取引(FX)でのtickdataの加工とMySQLで管理

mysql にとりこむ大方針

• ヒストリーデータの管理は週単位で、 EEST, EET のタイムゾーンでやる。– 月曜 0:00:00.000 オープン、金曜 23:59:59.999 クローズ

• タイムスタンプは UTC なので EEST/EET に変換する

Page 13: 為替取引(FX)でのtickdataの加工とMySQLで管理

mysql にとりこむ• Tickdata を CSV に変換

– (例 ) $ php process_dukascopy_data.php EURUSD 200701 201507 EURUSD.csv 容量 7.4GB くらい、処理に一時間くらいかかった。

• Nysol で一日単位に分割• Pandas で OHLC形式でリサンプリング

– 1m, 5m, 15m, 1h– 1h 単位以上だと若干問題が出ることがある : 1d 足だと 1週は 5

本 /6 本 ?

• MySQL に登録。– UTC から EEST/EET に変換– EEST/EET の時間に、 1970/1/1 0:00:00 から何番目の足か、を機械

的に振る– 無い足はとりあえず無視、取り出すときに Pandas で処理をする。