JAWS-UG Okinawa 2017/01

Preview:

Citation preview

技術は家計を救うのか?

aws lambdaで取得した為替データをamazon mlに食わしてみた

自己紹介

知花 司 (ちばな つかさ)

沖縄在住で 渋谷の会社 にリモート勤務やってます。

twitter

@chibana_555

github

hogehoge‑banana

はじめに

この資料はCAMOBILE 社内で週一で行われている「伝える」という社内LT大会のようなもので発表した資料になります。

アジェンダ

AWS lambda 使って為替データ蓄積バッチをサーバーレスで実装

マシンラーニングの前にjupyterで蓄積データ可視化して遊んでみた

学習モデルの仕様と教師データについて考えた

いざ! amazon ml

で、儲かったのか?

AWS lambda 使って為替データ蓄積バッチをサーバーレスで実装

ポン円のデータ取得してS3に保存lambdaのメインメソッドみたいなやつ

def lambda_handler(event, context): # rate取得 gbpjpy = get_rate('GBPJPY') #※ print('rate: %s' % gbpjpy) # テンポラリに既存ファイルダウンロード load_existings() # レートデータアペンド append_rate(gbpjpy) # S3にアップロード upload_file()

※レートの取得はググってください。

テンポラリに既存ファイルダウンロード

BUCKET = 'hogehoge-finance'FILE_KEY = 'my-secret-finance.csv'TMP_PATH = '/tmp/my-secret-finance.csv'S3 = boto3.client('s3')

def load_existings(): try: # /tmp に 512MBまでディスク使える。 S3.download_file(BUCKET, FILE_KEY, TMP_PATH) except: pass

※このやり方はデータ量512M超えたら破綻しますw

レートデータアペンド

※このやり方は(略

TMP_PATH = '/tmp/my-secret-finance.csv'

def append_rate(rate): now = time.mktime(datetime.datetime.now().timetuple()) record = [now, rate] with open(TMP_PATH, 'a') as f: writer = csv.writer(f, lineterminator='\n') writer.writerow(record)

S3にアップロード

BUCKET = 'hogehoge-finance'FILE_KEY = 'my-secret-finance.csv'TMP_PATH = '/tmp/my-secret-finance.csv'S3 = boto3.client('s3')

def upload_file(): S3.upload_file(TMP_PATH, BUCKET, FILE_KEY)

cloud watch scheduleで実行

※cloneの書式と似てる書き方もあるけど、微妙に違うのでドキュメントよく読みましょう(地味にハマった経験あり)

簡単!

マシンラーニングの前にjupyterで蓄積データ可視化して遊んでみた

っていうよりは、ちゃんとデータ蓄積できてるのか不安だったw

jupyterでラックラク♪

jupyterとは

iPythonのwebコンソール (REPLのweb UI)

ブラウザ上でpython書いて、インタプリタで実行可能

コードだけじゃなくて実行結果も一緒に保存される

iPythonとは独立したプロジェクトなのでpython以外の言語も対応してきている

デモ(いる?)

学習モデルの仕様と教師データについて

そもそもなんでポン円

円とポンドは流通量が近しく、微妙なバランス状態にあるため、世界情勢に関係なくいつも激しく動いている

このネタ思いついて発表まで1週間しかないので、動いててくれないと困るw

モデルは?

4時間移動平均線と1時間移動平均線で直近の値動きを予想するテクニカル分析があるらしい

それに近い感じ(ほんとか?w)で直近数時間のデータをもとに直近数十分後を予測させてみよう

直近8hの値動き

30分先は闇

30分さきが予測できたらハッピーになれるかも(ほんとか?w)

教師データ

基準時刻の過去3時間のデータ + 30分後のデータのcsvを作成

3時間前 ... 10分前 5分前 なう 30分後

120.4 ... 120.7 121.0 123 125

122.4 ... 120.5 121.5 121 127

124.4 ... 120.2 121.2 125 121

※イメージです。データは適当っす

いざ! amazon ml

AWS MLのダッシュボードで作成ポチっと

データソース作成

S3のパス入力して、名前はテキトー

スキーマ設定

データ読み込んでいい感じにしてくれてるのでだいたいそのままでok

期待値のカラム設定

30分後を予測して欲しいので、30分後のカラムを選択

学習モデル設定

よくわかんないw デフォルトオススメって書いてあるからデフォルトでw

なんとなくできたw

で、儲かったのか?

最新3時間のデータ食わしてみた

{ "Prediction": { "details": { "Algorithm": "SGD", "PredictiveModelType": "REGRESSION" }, "predictedScores": {}, "predictedValue": 119.60698699951172 }}

予測値 119.60 とな

00�05 現在: 売値128.07

30分後予測 119.60

今ショートしたら30分後に900pip下げる予想

ボロ儲けやん

そんな馬鹿な

静観した

っていうより、MLやるのにいっぱいいっぱいで口座にお金入れるの忘れてたw

30分後

00�05 売値128.07

00�35 買値: 128.00 (実績値)

予測値 119.60

ぐぬぬ

下がるという予想としては当たってた。

ただ下げる前に結構上がってる?

損切りライン予測してないと死ねる

まとめ

Lambda便利!

今回の検証レベルだと無料の範囲内

フィンテックむずい

今回やったレベルだと機械学習よりテクニカル分析の方が優秀

テクニカル分析にまじめに準拠した学習モデルを作ればいけるかも

jupyterで可視化するのすげーたのしーw

ご清聴ありがとうございました

質疑応答