こんにちわ、Stella。

オペレーションすてら

詳しい日付はメモしていなかったのだけれど、最も古いバックアップ・ファイルの日時を見る限りでは2020年12月31日。最初のコードからもうすぐ2年。

プログラミングによる株式の全自動売買ができるようになったのは今年の頭くらい。ポンコツなので勝率3割くらいだけれど。

相場中にデータを収集し、分析。戦略を立て、発注を行う。フルスクラッチのリアルタイム株式自動売買戦術プログラムStella試作1号機。

1年前は、完成しないのだろうと思っていた。トワナナさんには才能がないから。

Memo

グローバル5.5倍バランスファンド(1年決算型)20221107
基準価額:6,305円 / 前日比(円)-379円 / 前日比(%)-5.67% / 純資産総額62.3億円

日経平均:27,199.74円 / ドル円:146.72円

ダウ平均:32,403.22 / ナスダック総合指数:10,475.26 / S&P500指数:3,770.55

Be careful

この記事で書かれている内容はトワナナさんの感想です。間違いがないよう注意を払っておりますが、それでも事実と異なる内容が含まれているかも知れません。また、特定の商品をお勧めする意図などはありません。(詳しくは、免責事項とPrivacyPolicyを参照下さい。)

「そうなんだー」くらいの肩の力を抜いた状態で、たのしんでいただければ幸いです。

What is Stella?

StellaはAUカブコム証券さんのKabuStation APIを使って動いている。実行環境に制限は多いけれど、開発環境にはほぼ縛りがないので比較的自由度が高い。

KabuStation APIとは?への回答は、公式さんのドキュメントを読んでもらえばわかる、なのだけれど。あれはー、契約しないと読めないのかな?

ええと。簡単に説明すると、REST APIと呼ばれるネットワーク上に提供される機能を使って株取引をプログラムで実現するための仕組み。決まり上は有料になっているけれど、月に1度でも先物取引をすれば次の月は無料で利用できる。(というか、あのプランだと先物での取引以外では使えなくない?)

音楽に例えると、KabuStation APIは楽器を貸してくれるサービス。それ以外の全ては自由で自前。音楽のことや演奏の技術はサポートしていない。そんな環境。

そのままの例えでまとめると、KabuStation APIのドキュメントには楽器の使い方が書いてある。

何となく伝わったかな?

音楽の例えから株取引に話題を戻すと。いつ何をいくらで買って、いついくらで売却するかはプログラムで書かないといけない。

当然、未来でその株がいくらになるかなんてわからないから、予想と現実の差異を埋める必要も出てくる。手動の株取引も同じだよね。このくらいの価格で買って、このくらいの価格になったら売ろうって。でもここまで値が下がったら損切しよう。みたいな。

大変そうだけれど、でもあれでしょ?サンプルとかいじればすぐに動かせたりするんでしょ?というと、実はそんなものなかったりする。板情報を取得するとか、買い注文を出すとか、売り注文を出すとか、PUSH通知を受け取る。そんなREST API単位のサンプルしかない。今は揃ってたりするのかな?はて。

質問などはGitHubを使う。大抵はAUカブコムの中のひとが返事をしてくれる。返事はしてくれるけれど、願いが叶うとは限らない。人生とはそういうものである。

あと、キティがいっぱい。

メンタルを鍛える場としては有用だと思うので、鍛えたい何かがある方はご検討を。必要な情報はじぶんで検索して、誰とも関わらずに帰るのがトワナナさん流。

動かしたところ、REST APIの戻り値まわりでドキュメントだけではわからないことが多々あるので、最初は足しげに通うことになると思う。そもそもプロパティに関する説明がないとかはザラで、そこで他人を呪わないくらいの心の広さは求められる。

固有スキル、ノーフレンド持ちのトワナナさん余裕。

たぶん、AUカブコムによる人類粛清とか、強化人間なんたらを計画してのことだと思う。そういう仕様だから抵抗は無意味。

ええと。

Counterattack with automation

最初に考えたのはひとが行う動作の自動化。

トワナナさんの売買なら、だいたいこんな流れ。

(作戦立案パート)
・銘柄選び
・板の観察
・エントリーポイントの検討
・利確ポイントの決定
・損切ポイントの決定

(作戦実行パート)
・建玉の発注
・条件が揃うまで監視
・建玉の返済注文

Stellaは作戦立案パートをザラ場中に行うため、デイトレード仕様になっている。

普通というのがわからないので、普段トワナナさんが株取引を行うフローをそのままプログラムとして書き起こしている感じ。「銘柄選び」はネットで調べたり、日常で見聞きした銘柄で取引を検討するので、まだプログラム化は出来ていない状態。

ポータルサイトやネット証券会社あたりのホームページから情報を取得する方法もあるのかな?とぼんやり考えているところで。イナゴ的なストラテジーなら、確か出来高が大きい銘柄のリストがREST API経由で取得できるようになるといった情報を小耳に挟んだので、それを使えばよいのかも。(大分前なのでもう出来ていそうな気もする。)

ただ、今は基本的なところを作り込みたいので、銘柄選びは固定でいいかなって。

「板の観察」は、これを何と表現すればよいのかわからないのだけれど。株取引って、ファンダメンタルとか、テクニカルだけではなくて、相手とする対象がいて。

時間経過による値動きのパターンとか、板の組み立て方とか、アノマリーに対する挙動とか。

はじめたばかりのころは業績やIRで板の動きが決まると思っていた。でも。違うんだってある時気づいた。トレンドに合わせて板が動くのではなくて、こちらの建玉に対して板が動いている。そのことが裁量取引を止めた理由で。Stellaが必要だと考えた理由。

オカルトっぽいけど。よくよく考えてみたら、モニタの先には他人がトレードをしているわけで。何でそのことに気付かなかったのだろうって。今は思う。それがアルゴだとしても、機関でも個人でも。利益を得るために持てるリソースを使って流れを作ろうとするのは至極当たり前のこと。

Stella上はリアルタイムで取得した情報を全て記録。そこから定義した出来事を判別する形で実装されている。

「エントリーポイントの検討」に関しては、今は数字的に取得できる値から算出している。

前日の終値や当日の始り値、銘柄の取引可能値幅、当日の高値と安値、年初来高値と年初来安値。売りと買いの件数、売りと買いの出来高、無取引期間、板情報、TICK数等を時系列に管理して、短期と長期の方向に置き換えてエントリーポイントを割り出すような形。状況に合わせて売り建てと買い建てを使い分ける。

時間に対してREST APIの利用回数制限があるため、現在は同時に1取引きのみ。設計上は異なる銘柄、異なるエントリーポイントを用いて複数の同時取引きに対応している。

「利確ポイントの決定」「損切ポイントの決定」は銘柄ごとに固定値でレンジを持っている。

建玉を立てた後、利益側のレンジに基準価格が到達した際はレンジを切り上げ、利益を伸ばす仮想トレーリーストップを設けた。証券会社がアルゴとして提供するトレーリーストップは、当日の高値に対してしか設定できないので建玉に対しての仕組みが欲しかった。

また、リアルタイムにレンジを動かす目的と、相手に手の内を読まれないよう、返済可能と判断する前には板に注文を出さないようにしている。(建玉と信用残があるので完全には秘匿できないけれど。)

これだけでも流れがよければ利益を出せる。けれど、勝率が悪い理由はここだと分析していて。

今はテクニカルを使えるように、ローソク足のデータを作れるように修正をしているところ。えーっと、確か1分足かな?

単純計算で前場2時間半だから、150分。1ローソク足を作るためにPUSH通知の情報から板と中央値、出来高の情報を記録。だいたい1分で100PUSHも無かったと思うので上限100で15,000件のPUSH情報。そこから分で割ってローソク足を組み立てる。実装は出来たのだけれど、テクニカルを組んでないので利用はこれから。

StellaにはUIが付いているのでチャート出そうかなって。ちょっとそれっぽいなーって思いつつ。目で見ても意味がないので、記号化して標準コンソールに流す方がデバッグに使えるから現実的なのかもとか。ぼんやり。

タイトルとURLをコピーしました