俺にも執筆活動させろボケ

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)を

sqlで取り出す日付は一度忘れてカラムだけ

select id,time,bid,bidf,ask,askf from bf;

itref.fc2web.com

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にするだけで偉い苦労したわ

とりあえずプロット

f:id:nemui3900:20180109135655j:plain

横軸を時間じゃなくて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で保存して終わろう。

f:id:nemui3900:20180109150222j:plain

loadして保存できているのを確認。

プロットしないといけないなあと思いつつ疲れた

データサイエンティストだったらこっからいろいろやれるはずだが私は違うのでかなしいなあ。

ぼやいててもしょうがないので勉強しつつ手を動かすのであるが。

一億円への道は遠い。