DBに接続して対数変化率のグラフのプロットから
今考えているのは
bfとbffxで相関係数を比べて
bf↓bffx↑の方向で乖離しすぎた場合
bfjpy買いbffxjpyで売り。戻ってきたとこで決済。
というのを考えているが
必要な入金額的にはbfjpyに10万bffxに3万とかかな、
もっと安くてもやれると思うけど。
まあ自前でデータ取ってるDBに
pythonで接続するところから。
pandasにあるpandas.io.sql.read_sqlをつかう
とりあえず全部読み込む
0.5秒ごとのティックを記録してるので二日分でも大量
%%timeitで計測
216458 rows × 12 columns
8.52 s ± 78.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
1分20秒弱か全部はちょっとだめだというのが分かったので
減らすか、一日単位で区切るとして。
.npz形式のファイルで対数変化率と相関係数を出力
(メモ)このへんはとりあえず今後自動化したいところ。
8日のカラムbidとbidf(fx),askとaskf(fx)を
select id,time,bid,bidf,ask,askf from bf;
dfl = pd.io.sql.read_sql("SELECT * FROM bf where time between '2018-01-08' and '2018-01-09';", cnx)
これだと9日の00:00:00が入っちゃうなあ、
そんなに問題でもないけど。08 23:59:59にするか。
dfl = pd.io.sql.read_sql("SELECT id,time,bid,bidf,ask,askf FROM bf where time between '2018-01-08' and '2018-01-08 23:59:59';", cnx)
pandasのdfにするだけで偉い苦労したわ
とりあえずプロット
横軸を時間じゃなくてIDにするかなあ、
一発で対数変化率には出来ないくさいなあ。
なんか方法あったら教えてほしい。
対数変化率に変換するので長さを取得
>>>len(dfl.index)
134269
(メモ)0を含んでいる数で出る
lenA=len(dfl.index)
lnp = np.array(dfl.bid[:lenA-2])
lnp2 = np.array(dfl.bid[1:lenA-1])
p=(lnp2-lnp)/lnp2
ここまでやってbfで買いbffxで売りなんだから
askとbidfで計算しないとダメだと気付く。
修正した、npzで保存して終わろう。
loadして保存できているのを確認。
プロットしないといけないなあと思いつつ疲れた
データサイエンティストだったらこっからいろいろやれるはずだが私は違うのでかなしいなあ。
ぼやいててもしょうがないので勉強しつつ手を動かすのであるが。
一億円への道は遠い。