42
aws lambda amazon ml

JAWS-UG Okinawa 2017/01

  • Upload
    -

  • View
    155

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAWS-UG Okinawa 2017/01

技術は家計を救うのか?

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

Page 2: JAWS-UG Okinawa 2017/01

自己紹介

知花 司 (ちばな つかさ)

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

twitter

@chibana_555

github

hogehoge‑banana

Page 3: JAWS-UG Okinawa 2017/01

はじめに

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

Page 4: JAWS-UG Okinawa 2017/01

アジェンダ

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

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

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

いざ! amazon ml

で、儲かったのか?

Page 5: JAWS-UG Okinawa 2017/01

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

Page 6: JAWS-UG Okinawa 2017/01

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

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

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

Page 7: JAWS-UG Okinawa 2017/01

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

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

Page 8: JAWS-UG Okinawa 2017/01

レートデータアペンド

※このやり方は(略

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)

Page 9: JAWS-UG Okinawa 2017/01

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)

Page 10: JAWS-UG Okinawa 2017/01

cloud watch scheduleで実行

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

Page 11: JAWS-UG Okinawa 2017/01

簡単!

Page 12: JAWS-UG Okinawa 2017/01

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

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

Page 13: JAWS-UG Okinawa 2017/01

jupyterでラックラク♪

Page 14: JAWS-UG Okinawa 2017/01

jupyterとは

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

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

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

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

Page 15: JAWS-UG Okinawa 2017/01

デモ(いる?)

Page 16: JAWS-UG Okinawa 2017/01

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

Page 17: JAWS-UG Okinawa 2017/01

そもそもなんでポン円

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

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

Page 18: JAWS-UG Okinawa 2017/01

モデルは?

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

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

Page 19: JAWS-UG Okinawa 2017/01

直近8hの値動き

30分先は闇

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

Page 20: JAWS-UG Okinawa 2017/01

教師データ

基準時刻の過去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

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

Page 21: JAWS-UG Okinawa 2017/01

いざ! amazon ml

Page 22: JAWS-UG Okinawa 2017/01

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

Page 23: JAWS-UG Okinawa 2017/01

データソース作成

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

Page 24: JAWS-UG Okinawa 2017/01

スキーマ設定

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

Page 25: JAWS-UG Okinawa 2017/01

期待値のカラム設定

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

Page 26: JAWS-UG Okinawa 2017/01

学習モデル設定

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

Page 27: JAWS-UG Okinawa 2017/01

なんとなくできたw

Page 28: JAWS-UG Okinawa 2017/01

で、儲かったのか?

Page 29: JAWS-UG Okinawa 2017/01

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

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

予測値 119.60 とな

Page 30: JAWS-UG Okinawa 2017/01

00�05 現在: 売値128.07

30分後予測 119.60

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

ボロ儲けやん

Page 31: JAWS-UG Okinawa 2017/01

そんな馬鹿な

Page 32: JAWS-UG Okinawa 2017/01

静観した

Page 33: JAWS-UG Okinawa 2017/01

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

Page 34: JAWS-UG Okinawa 2017/01

30分後

Page 35: JAWS-UG Okinawa 2017/01

00�05 売値128.07

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

予測値 119.60

ぐぬぬ

Page 36: JAWS-UG Okinawa 2017/01

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

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

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

Page 37: JAWS-UG Okinawa 2017/01

まとめ

Page 38: JAWS-UG Okinawa 2017/01

Lambda便利!

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

Page 39: JAWS-UG Okinawa 2017/01

フィンテックむずい

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

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

Page 40: JAWS-UG Okinawa 2017/01

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

Page 41: JAWS-UG Okinawa 2017/01

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

Page 42: JAWS-UG Okinawa 2017/01

質疑応答