なんちゃってHFTを作る 2日目

トレーディングの流れ

 自動手動を問わず、トレーディングは、

  1. 株価、板、歩み値等の各種情報を確認する
  2. 指値か成行、数量、売買執行条件等を決めて注文する(1件または複数)
  3. 注文が約定したか確認する
  4. 未約定注文を変更する、または取り消しする(もしくはそのままにする)

この繰り返しです。

 証券会社のWebサイトや専用アプリを使おうが、はたまたHFTを含むアルゴであろうが、皆やっていることは同じです。1や3を元に2を決めるところ(に加えて4の変更・取り消し≒見せ板)とその速度でしのぎを削っているだけです。

 このうち1を「情報系」、2~4を「発注系」と分けて考えるとわかりやすそうです。ただし、ほぼ全ての専用アプリは情報系と発注系が一緒になってしまいました。いまや情報系だけに特化したアプリは、アルゲンタム・コードのBRiSKくらいでしょうか1

1. 株価、板、歩み値等の各種情報を確認する

 株価が取得できなければ始まりません。情報系で使えそうな証券会社を探してみました。(2022年11月現在)

証券会社 名称 提供開始時期 使われている技術
【情報系】
発注
楽天証券 マーケットスピード RSS 2004年春~ DDE ×
岡三証券 岡三RSS 2009年4月~ COM
auカブコム証券 kabuステーション API 2020年8月~ WebSocket
立花証券e支店 APIサービス 2020年10月~ ロングポーリング
楽天証券 マーケットスピード II RSS 2021年6月~ COM

 マケスピRSSの提供開始はなんと20年近くも前! マケスピII RSSに移行もされずまだ継続しています。 2つの似たようなシステムを維持するのは大変というか無駄が多そうで、先行きが心配です。

 マケスピといえば、板がまだ非公開2の2000年5月に颯爽と登場し、最良気配のみとはいえ気配価格や数量、歩み値が自動更新されることに驚いたものです。板が無くてもデイトレできてた古の時代。(いやいや、ディーラーはその当時から板が見えていましたけど!)

 閑話休題

 上記以外に有名なところではInteractive Brokersがありますね。 あと、SBI証券はツール提供会社限定かつ先物オプションのみ、auカブコム証券は他にkabu.com APIという立派なAPIがあるものの、やはりツール提供会社限定となっています。 GMOクリック証券はかなり昔にAPIを公開していてドキュメントを読んだ覚えがあるのですが、今はなさそうです。

 auカブコム証券のWebSocketや立花証券のロングポーリングならOSや言語を問わず取得できます。 DDEは頑張ればExcel以外からでも取得できますがWindows限定、COMはよくわかりません。

2. 指値か成行、数量、売買執行条件等を決めて注文する

 発注系はどうなっているでしょうか。

証券会社 名称 インターフェース
【発注系】
約定通知 変更
岡三証券 岡三RSS Excelワークシート関数
Excel VBA関数
auカブコム証券 kabuステーション API REST API
Excelアドインも有り
× ×
立花証券e支店 APIサービス REST API
楽天証券 マーケットスピード II RSS Excelワークシート関数
Excel VBA関数

 auカブコム証券と立花証券のRESTはOSや言語を問いません。素晴らしい!

 岡三証券楽天証券は、VBAから叩けるということはWindows上ならExcel以外からも叩けそうです。 立花証券にもExcelモジュールはあるものの、今のところ情報系だけです。

3. 注文が約定したか確認する

 専用アプリで注文が全約定または一部約定すると、ポップアップウィンドウが開いたり、音が鳴ったり、スマホにPush通知が届いたりします。 同時に、注文一覧や注文板から自動で消えたりステータス表示が変わったりします。

 立花証券は唯一(?)約定通知のインターフェース3があるので、約定後のステップに素早く入れます。 岡三証券楽天証券は、注文状況を表示できる関数があるものの、プログラム側で約定を確認するためには一工夫必要そうです。 岡三証券はさらにExcel上のポップアップ通知もありますが、自動売買には不要でしょう。 auカブコム証券は逐一、注文状況の確認が必要です。

4. 未約定注文を変更する、または取り消しする

 auカブコム証券は注文の変更ができない(!)という20年以上前の日本協栄証券仕様(誰が知っているというのか)。 変更の場合は「取消→取消確認→再注文」としなければなりません。

 他は注文と同じインターフェースを使って変更可能です。


  1. BRiSK Nextは発注もできます。けれど、クセが凄い。
  2. 2000年12月25日からようやく個人投資家にも板情報(当初は上下3本気配)の配信が開始されました。
  3. 情報系のロングポーリングと同じ方式です。

なんちゃってHFTを作る 1日目

何から始めるか

 まずは、Google先生に聞いてみます。ところが、APIを使った売買を手掛けて(かつWebで公開して)いる人があまりにも少ない。 デイトレブログは星の数ほどあるというのに…。

 ただ、数が少ないということは、全て見ることができるということでもあります。その中でも参考になりそうなブログがいくつかありました。 例えば、

なんちゃってHFTを作る 0日目

なんちゃってHFTとは

 シュミトレをしていると明らかに人間業ではない注文、いわゆるアルゴリズム取引を頻繁に見かけます。 アルゴの中でもHFTが形成する板や歩み値は、時に美しいと感じることすらあります。 この点で日本国内でもっとも洗練されているのは日経225miniですが、 CMEのES(E-mini S&P 500)やNYMEXのCL(WTI Crude Oil)はさらに美しく、見ているだけでも飽きません。

 ところで、ここ最近はAPIを使って株価を取得したり注文を出したりすることができるようになりました。

 auカブコム証券 kabuステーションAPI立花証券 e支店 API楽天証券 マーケットスピード II RSSなどを使って、個人でもHFTのような注文ができたら…?

 本物のHFTは東証コロケーションの中でミリ秒マイクロ秒を争う世界です。 情報ベンダとインターネットを介して数百ミリ秒~1秒以上遅延した個人投資家の世界など、HFTの前では遅延という言葉を使うことすらおこがましい。 それでも、その遅延した株価を目で見て脳で反応して指でマウスクリックするよりは、速いトレーディングができるはずです。

 HFTではないけれど、HFTと同じことをするなんちゃってHFTを作ってみようと思います。

シュミのトレーディング

シュミのトレーディングとは?

 世の中にはたくさんの趣味があります。

 例えば釣り。 お金を貯めて道具を買い水辺に出向き魚を釣る。釣れないこともしばしば。 これをお金や時間の無駄だと感じる人もいるでしょうが、当の本人は好き好んでやっています。 趣味とはそういうものです。

 では、株式売買に代表されるトレーディングはどうか。 資金を貯めて証券会社に入金し株式市場に向き合い株を売買する。損することもしばしば。 これを投資ではないとか投機だと感じる人もいるでしょうが、当の本人は好き好んでやっています。 釣りと何ら変わりはありません。 釣りとは違って世間に認知されていないだけで、シュミとはそういうものです。

 現物、信用、先物、オプション、商品、FXやCFD、トレーディングの対象は問いません。

 シュミのトレーディング、シュミトレの世界へようこそ。

人はなぜ株を買うのか

 企業に出資したいといった教科書的な答えもありますが、 売買益や配当金を得たい、つまるところお金を儲けたいからでしょう。

 このとき株を売買する行為は手段に過ぎません。

 お金を儲けるという目的(もしくはお金を儲けて贅沢したい、お金を儲けて老後に備えたいといった目的)の手段です。 つまり人が株を買う目的は、その多くは株とは別のところにあります。

 でもシュミトレは株を売買する行為、トレーディングそのものが目的です。 手段の目的化と言っても良いかもしれません。

投資投機とシュミトレの違い

 株式投資や株式投機で損をするととても辛い。なぜか。 お金を儲けるという目的が達成できないからです。 お金を儲けるどころかお金を減らすからです。これは辛い。

 ところで、釣りをして魚が1匹も釣れなかったことをボウズというそうです。 高速を使ったり船を借りたりしたら、お金もそれなりにかかります。 でも「釣りをすること」が目的なら、たとえお金をかけてボウズであっても目的は達成できています。

 シュミトレも同じです。 「トレーディングすること」が目的なら、たとえ実現損を出しても目的は達成できています。

 そう、売買損益(釣果)は目的ではないのです。

 トレーディングするという目的を達成した結果として、 もし儲かれば(釣れれば)より嬉しいし、 もし儲からなくても(ボウズでも)シュミ(趣味)を楽しむことはできます。

あくまでもシュミの範囲で

 とはいえ釣りとは違い、トレーディングは予め損失額が決まっていません。 現物以外をトレーディング対象にすると、投入した資金以上に損をすることもあります。

 そこで重要なのはシュミの範囲で楽しむこと、いわゆる資金管理です。

 例えば、損していいのは月3万円までと決め、この範囲内でトレーディングを行います。 もし月間の累積損失がこの決めた額を超えたら月末まで売買禁止です。

  • 損切りがすべって3万円で済まずに3.5万円の損が出た→月末まで売買禁止、翌月は2.5万円まで。
  • 安易に空売りしてストップ高張り付け食らって10万円の損が出た→当月含む3ヵ月売買禁止、4ヵ月目は2万円まで。

 といった感じです。 もちろん3万円はあくまでも例であって、趣味やシュミにかけられるお金は人それぞれでしょう。 他の投資や投機と混在させないことも重要です。

 守るべきルールはこれだけです。 さぁ、はじめましょう。