機械学習で株式・FXを売買しようとする人に伝えたいこと

はじめに

機械学習以前から、株やFXで自動売買する取り組みを試みたことがある。
たぶん7, 8年くらい前。


結果から言えば、ややマイナスで今に至る。


機械学習を取り入れて再チャレンジしてみたいところではあるが、機械学習を理解できるだけの素養がまだないので、過去の経験をインターネットに放流することで誰かの役に立てば嬉しい。
全くのゼロから取り組むよりはいいだろう。

検証するのは面倒なので記憶のみを頼りに書く。
読み手はそのつもりで。


日本株

まずはリアルタイムデータの取得。
簡単に思いつくのはYahooファイナンスあたりからデータ取得することだが、日本の最新株価は無料では取得できない。
最新の株価情報は証券会社が東証などにお金を払って仕入れているのが理由、だったはず。


じゃあどうするか。
楽天証券だ。
楽天証券はマーケットスピードというサービスを提供していて、その機能の一つとして「エクセルにRSSで最新のデータを取り込む」ことができる。
取り込むというか、表示し続けるというか。
Googleスプレッドシートでもないのにリアルタイムにセルのデータが変わり続けるのでなんかスゴイ。

少し前にGoogleスプレットシートでスクレイピングして株価取得する記事があったっけ。
そこに時間を費やすくらいならアルゴリズム作りに時間を割こう。
株価から出来高に単元株数まで取得できるので、スクリーニングもできる。


機械学習では肝心の過去データ。
これは知らないのでググってほしい。
たぶん探せばある。
Yahooファイナンスで日次のデータはダウンロードできた気がするが、5分足などはなかった気がする。


発注。
残念ながら僕が取り組んだときは自動化するいい方法がなかった。
ブラウザを操作するくらい。
今はあるのかな。知らない。
自動売買しようと思ったらアルゴリズム作りがすべてなので、発注のことなんて考える必要ない。
どうせしばらくは現実のデータを流し込んで発注はログ出力するのみのテスト運用を走らせることになる。
その時間に Selenium でも使ってやったらいい。


FX

こちらは当時から自動売買するための仕組みが進んでいた。
MetaTrader、通称MT4が鉄板のツールで、トレード用アルゴリズムを専用言語で書ける。
提携している?海外の投資用口座アカウントに MT4 からログインできて、そこで発注できる。
データの取得や過去データを利用してアルゴリズムの検証などもできる。
アルゴリズム自体を売買している人もいて、よくわからんサイトで売っていた。
数千円から数万円。
自分も買ったことがある。 儲かったか?
儲かっていたらやめていない。
結局アフィリエイトと似ていて、その作り方を売っている人は自分で儲かっていないんだろう。


株式にも言えることだが、FXは開く口座が肝心で、どれくらい取り分を持っていかれるかが重要になる。
週に数回とかならいいが、スキャルピングのように取引回数が膨大になるアルゴリズムならその影響は大きい。
デモ口座でのシミュレーション時にこれを再現するように注意すべき。


あと MetaTrader は Windows のみ。
昔と違って VPS も安くなったので、動かしっぱなしにするのはそれほど高くないだろう。


あとがき

数値のみを追ったテクニカルな手法だけでは、日銀の動きなどの異常系の動きに耐えられない。
なのでそういうファンダメンタルな手法も今の機械学習なら取り入れられると思うので、そのへんを考慮するといいんじゃないかと思う。


あと言うまでもなくマーケットの世界はとびきり優秀な人がごろごろしている。
FXは特にそう。
そういう人と真っ向から戦わずに済むよう、流通金額の少ない銘柄で取引するとか、そういう防御策を取ったほうがいい。
短期的に勝つことよりも負けずに生き残ることが大事。


新MT4対応 FXメタトレーダープログラミング入門

新MT4対応 FXメタトレーダープログラミング入門

MetaTrader 4で始める FX自動売買システム作成の教科書

MetaTrader 4で始める FX自動売買システム作成の教科書


MISFIT RAY 開封の儀

ウェアラブルな活動計、MISFIT RAY を購入した。

jp.misfit.com


箱は多言語表示されているので世界で統一のパッケージっぽい。

f:id:khei-fuji:20160530214001j:plain


リボンのマークみたいなロゴ。モノクロですね。
f:id:khei-fuji:20160530214156j:plain


内装はシンプル。
f:id:khei-fuji:20160530214209j:plain


最初は電池を入れるためにバンドを回して分解する。
f:id:khei-fuji:20160530214805j:plain


準備OK。 f:id:khei-fuji:20160530222210j:plain


活動計用のアプリ(Misfit)とデバイスの設定用アプリ(Misfit Link)があり、アプリを起動するとデバイスを自動認識する。

MISFIT RAY では3タップ時の操作を設定できる。
カメラのシャッターや音楽の再生・停止、あとは IFTTT の連携なども可。
今どき Yo の連携が可能なのは流行の名残だろうか。


使用感のレビューは2週間くらい経ったらするつもり。
気になってるのは以下

  • 運動・睡眠トラッキングの精度
  • バイスのバイブレーションによるアラームの効果
  • 24時間つけっぱなしで邪魔にならないか



iOSアップデート後にパスコードが入力できない現象の回避策

毎回この現象に悩まされているが、ついに回避策を見つけた。
ちなみに iPhone6 SIMフリー版 64GB。


  1. 一度ロック画面に戻す
  2. 右にスライドしてパスコード入力画面に遷移する
  3. (入力できなくなるまで2秒ほどの猶予があるので急いで) キャンセルをタップし、ロック画面に戻す
  4. この後パスコード入力画面に行くと、固まる現象は出なくなる



BotFramework で PomodoroBot をつくった

前回 に続き、BotFramework で作ったもの第二弾。
PomodoroBot を作成した。

Pomodoro Bot

使い方はサイト内の How To Use を参照。


訴求点

  • ギョームとプライベートなどで異なるプラットフォーム環境でも共通して使えるツールが欲しかった
  • Bot のインストールで済むので気軽


システム構成

pomodoro-bot

pomodoro-notification


まだまだなところ

  • タイマーの途中停止ができない
  • Heroku の再起動) でタイマーが止まる
    通知は来る
  • Heroku の deploy でもタイマーが止まる
    Deploy Hooks で止まった通知は来る


学び


感想

BotFramework 自体は C# or Node.js だが、FormFlow は今のところ C# でしか実装されてない。
これを渡すだけでポモドーロタイマーを作成するウィザードにしてくれるんだからありがたい。

[Serializable]
public class PomodoroTimer
{
    public const string DescName = "name";
    public const string DescDuration = "duration minutes";
    public const string DescShortBreak = "short break minutes";
    public const string DescLongBreakSpan = "long break span";
    public const string DescLongBreak = "long break minutes";

    [Describe(DescName)]
    public string Name { get; set; }

    [Describe(DescDuration)]
    [Numeric(5, 60)]
    public int Duration { get; set; }

    [Describe(DescShortBreak)]
    [Numeric(1, 20)]
    public int ShortBreak { get; set; }

    [Describe(DescLongBreakSpan)]
    [Numeric(2, 10)]
    public int LongBreakSpan { get; set; }

    [Describe(DescLongBreak)]
    [Numeric(5, 60)]
    public int LongBreak { get; set; }
}


Bot 開発は機械学習に踏み入れなければそこまで難易度は高くない。
アプリのように UI がないのが大きい。
システム全体の構成を考えるアーキテクト視点のスキルが必要に感じた。
フルスタック、というか広く浅いスキルセットを持っている僕みたいな人にマッチしてる。


アジャイルな時間管理術 ポモドーロテクニック入門

アジャイルな時間管理術 ポモドーロテクニック入門

BotFramework で遊んだ

BotFramework とは?

BotFrameworkMicrosoft が発表した Bot 作成の仕組み。
公式ドキュメント にあるように、BotConnector と BotBuilder (と詳細が明らかになっていないBotDirectory) で構成されている。


BotConnector

BotConnector は Bot のO/R マッパーみたいなもの。
日本で使えそうなチャットサービスは、Skype, Slack, SMS, EMail, WebChat あたり。
LINE 対応してないのが惜しいけど、上のラインアップを見る限りビジネス向けの Bot を作ることになるんだろう。


BotBuilder

対話式で bot とやり取りするためのライブラリ。
Web ページの Form を置き換えるものだと思ってる。


何ができるか

ひとまず BotConnector を見て思いついたものをつくった。
チャンネルをまたいでチャットをするサービス。

ChatBridge

試すとわかるが、相手に ID を教える必要があり、それをチャットで送りたくなる。
ということで今ひとつ使い勝手がよくない。
ソースも公開しておく。

github.com


BotFramework の課題

試して気付いた課題や注意点がいくつかある。

Skype

  • Skype Bot の申し込みは申し込みから利用開始まで8時間くらいかかった
  • 現在の対応プラットフォームは Windows, Android, iOS で、Mac は未対応。(Web 版は未確認)


Slack

  • MessagesExtensions 経由のメッセージ送信はユーザIdのメンションがついてしまう。
    f:id:khei-fuji:20160423181711p:plain
    Reply の場合は問題ない。
    [2016/05/05 9:28 追記] 上記現象は発生しなくなっている模様。


最後に

デモにあったようなピザを注文するとかの利用はわかりやすいが、Bot のサービス提供のみでビジネスになるのかなって気がしている。
Web ページと違って広告も入れづらいだろうし。
マネタイズがよくわからない。

Web ページでやってることを Bot にただ持ち込むのではスマートウォッチと同じことになる。
でも Bot はスマートウォッチや IoT よりも来る可能性があると予想されていて、僕もけっこうそうかもしれないと思っている。
果たしてどうなるか。


世界トップ企業のAI戦略

世界トップ企業のAI戦略


出不精ITエンジニアの自宅トレーニング環境が整った

昨年エアロバイクを購入し 、最初の1ヶ月は毎日のように使っていたものの、だんだんと頻度が下がっていた。
GitHub でいえば草が生えてない状態だ。


エアロバイク漕ぎながらスプラトゥーンするとか、PodCast 聴きながらとか、いろいろ試してみたもののハマるものがなく、くすぶっていた。
なお、漕ぎながらスプラトゥーンするとウデマエが下がる。


そんななか、今までで一番ハマった感触を得たので書く。
先日購入した iPad mini 4 が残りのピースを埋めてくれた。


f:id:khei-fuji:20160412214105p:plain


エアロバイクを漕ぎながら iPad mini で動画を観る。
これは革命的だ。
正面に TV やディスプレイを置くのが一番いいかもしれないが、程よいサイズで没入感が得られる iPad mini は自分にとってはちょうどいいデバイスだった。


ちなみに写真でハンドル左側についているのは iPhone を設置していた残骸。
やはり iPhone で動画を見るのは小さすぎる。


iPad miniタブレットスタンドで固定している。
タブレットスタンドは Amazon で検索上位のもの。


安定感はバツグン。
しかし当時(4/2)は ¥1,580 だったのに今見ると高い。
ブラックではないからかも。


ということで、普段からアニメやドラマなどの動画を観る習慣がある人は、エアロバイクを買って動画視聴時間≒運動時間 という図式をつくると健康的になれる、かもしれない。



Hello iPad mini 4

昨日 WiiU が思っていたよりも高く売れたので、iPad mini 4 16GB ゴールドを購入した。


発送の段ボールがあまりに小さくて別のものが届いたかと思った。



周囲にサイズ比較できるものないと iPad かわからないことに気づく。



用途


葛藤


16GB の容量について


最後に

これで dアニメストアと Hulu の生活が捗りそうだ。



iPad mini 4 Wi-Fiモデル MK6L2J/A (16GB・ゴールド)

iPad mini 4 Wi-Fiモデル MK6L2J/A (16GB・ゴールド)