自由に気ままに2

株とかITとか

(2922)なとりから株主優待が到着しました

2024年3月の権利確定日に100株保有して獲得した(2922)なとりの株主優待の案内が到着しました。

優待品到着

6月29日に優待品の入ったダンボールが届きました。
3月優待としては遅めの到着です。

ダンボールを開けてみるとこんな感じ。
優待のお手紙と優待品がダンボール一杯に詰まっていました。

なとりはおつまみを製造・販売している会社で、その中から9種類のおつまみが優待品で、中には下記のようなものが入っていました。

具体的な中身と賞味期限は以下の通り。

賞味期限は最短でも3ヶ月半とそこそこの期間があり、ラインナップは柿ピーやビーフジャーキーなど王道どころが揃っていますね。

私はそんなにお酒は飲まないので、おやつとして食べようかなと思います。

今回のおつまみ9種を実際に購入すると2500円ほどかかります。
権利確定日ベースの終値が2151円、現在の株価は少し下げて2110円ですので、利回り換算すると1.1~1.2%ほどで、3月優待の中では真ん中よりも少し上、クロスできる銘柄としては上位の利回りですので、この水準が続いていればまた来年もしようかと思います。

2024年6月優待クロス結果!

6月の株主優待クロス結果です。

< 5月 | 7月 >

結果

今月権利獲得できたのは、7銘柄です。なんか最近不祥事を起こした銘柄が多いですね(意図したわけではないです)。
長期認定のための空クロスや端株取得はなく、全て単発での取得です。
また、今月も商品50%引きのように追加費用の掛かるような優待は選んでおらず、全て現物か金券として使えるものです。
クロスに使用した証券会社は、パンパシのクロスとグリコの空売りauカブコム証券/それ以外は全てSMBC日興証券です。

良かった点

まず第一には、動かせる資金をほぼほぼ使い切れた点ですね。
4月は1銘柄しか取得できず資金を余らせてしまっていましたが、今回は用意していた資金の90%以上を取得に充てられました。
MDV、CARTA、ブロンコビリーは在庫切れが続いていたのですが、17時争奪戦で一時的に補充された在庫をしっかり確保できたところが大きいかと思います。(特にブロンコビリーは権利確定前々日争奪戦の300株補充で確保できたのでデカいです。)
ベストではないですが、平均利回り1%を取れましたので全体的には良かったのではないでしょうか。

反省点

30日優待は良い結果でしたが、20日優待では1銘柄も確保できなかったのが一番の反省点です。。
先日のまとめ記事でも記載しましたが、20日権利確定の優待ではキングジムが利回りが飛びぬけて高く、次いでジョイフル本田でした。
月半ばまで、キングジムは在庫が全く出なかったため、ジョイフル本田の在庫が残っている限りはキングジムを監視、切れそうになったらジョイフル本田を取得という方向性を考えていました。
13日にはジョイフル本田の在庫が23300株あったため、まだ引っ張れるだろうと思っていましたが、あっという間に在庫切れになりました。

結局日以降はキングジムジョイフル本田も補充がされなかったので、20日優待は何も取得できませんでした。
13日時点で取得をしても240円ほどのコストで4000円分の優待券or米5kgでしたので、もったいないことをしました。
在庫予測に関してはもっと腕を磨かないといけないですね。

30日銘柄では、資金移動の手順ミスしてしまい、パンパシHDをカブコムでしかクロスできない状況となっていました。
カブコムではパンパシに対して、プレミアム料0.26円/株をかけているため、5日で130円かかってしまいました。
それでも、実際にもらえる優待の価値よりはコストはかからないので取得しましたがもったいなかったですね。

あとは、取得スクリプトがまだまだ最適化されていないなぁというのを感じます。。
17:00争奪戦で取得できた銘柄もありましたが、すかいらーく物語コーポレーションのような人気銘柄は、在庫は出ていたものの取得することができませんでした。
17:00になったら、ただ単にリクエストを投げ続ければいいというわけではなく、

  • 注文受付開始は17:00:00からではなく、17:00:30~40秒くらいから(日によって異なるっぽい)
  • 1秒に2度以上リクエストを投げると、アクセスしすぎとのエラーが出る

ここら辺を考慮する必要があるので、処理的には簡単なものですが、タイミングはしっかり細かく考えてシステムを組む必要がありますね。

最後に

ということで、6月の優待クロスの結果・振り返りでした。

7月優待は既に一通りチェックしているのですが、4月並みの渋さですね。。
資金を優待に充てるか、別のところに充てるかは1週間くらいの在庫推移をみて決めようと思います。

シストレでの日本株スキャルピングについて考える その1

どうも、POIです。
前々回の記事で今後のメインの投資手法をシストレでのスキャルピングにすることに決定し、前回の記事でスキャをする上での確認事項を見てきました。

今回はいよいよ具体的なトレードのロジック・アルゴリズムについて考えていこうと思います。

ルール

最初は指標や板の厚さは全く見ずに、現在価格のみを判断材料とし、何pips下に買い注文を入れるか・購入株価から何pip上下したら売り注文(利確/損切り)するかを決め、トレードを行います。
また、複数銘柄・複数単元を扱うと複雑になってしまうため、1銘柄を1単元だけ売買を行うロジックとして2銘柄・2単元以上は同時に保有しないように制御します。

具体的なパラメータは、

① トレード開始時刻
② トレード終了時刻
③ 取引を行う銘柄の証券コード
④ 余力/購入可能代
⑤ 現在価格から何pips下で買う(買い注文を入れる)か
⑥ 購入価格から何pips上で利確する(売り注文を入れる)か
⑦ 購入価格から何pips下で損切りする(売り注文を入れる)か

の7つです。

これらのパラメータを用いて下記のフローで取引を行っていきます。
1.時間チェック
 →指定した時間(①~②)外の場合は処理終了
 →指定した時間(①~②)内で、引け1分前の場合(11:29/14:59)の場合は、注文キャンセル処理/ポジション決済処理を行う
  前引け前の場合は後場まで待機、大引け前の場合は処理終了
2.前の周で約定しなかった注文があるかをチェックする
 →前の周で約定しなかった注文がない場合*1、現在価格より⑤pips下に買い注文を入れる。(ある場合は何もしない)
3.未約定の注文が約定したかのチェックを行う
 →買い注文が約定していた場合、指定した購入価格より⑥pips上(利確ライン)に売り注文を入れる
 →売り注文が約定していた場合、現在価格より⑤pips下に買い注文を入れる
4.損切りインチェックを行う
 →保有中の(未約定の売り注文を出している)株が損切りライン(⑦)に到達していたら、
  現在の売り注文を取り消し、損切り価格で注文を入れなおす
5.買い注文価格チェック
 →買い注文約定前に株価が上昇し、⑤のpip数よりも開いてしまった場合は⑤のpip数と同じになるように注文を入れなおす
6.1.に戻る

株価のみを見るスキャルピングシステムで最低要件を満たすフローとしては、これが一番シンプルなものかなと考えています。
私の考えている最低要件としては、

Ⅰ.その日のうちに全てのポジションを解消する
 →手数料の都合上当日決済を行わなくてはいけないのと、GD/GUを避けるため(Ⅳを防ぐため)です
Ⅱ.一定数の取引回数を稼げるようにする
 →スキャルピングの特性上、一取引あたりの利益は少なくなりますから回数を稼ぐ必要があります
Ⅲ.買い売りどちらかの注文が常に入っている
 →Ⅱを満たすようにするため、早く注文を入れておけば、同じ価格でも前の方に並べるため取引回数を多く稼げるようにするためです
Ⅳ.一度の取引の損益がその日の損益の割合の大部分を占めないようにする
 →利益ならともかく、損失が出た場合は取り戻すのに時間がかかってしまうためです

の4つです。

この要件を満たしている状態で利益を出せることが確認できれば、毎日コンスタンスに資産を増やすことが可能だと考えています。

バックテストについて

実際のトレードを行う前にバックテストを行い、どの程度の損益が出るかを実際に検証していこうと思います。

対象銘柄

取引機会を稼ぐため、ティック数/出来高が安定して多い銘柄を選定する必要があります。
その中でも、乱高下(ボラリティ)やアルゴに刈られるリスクを考えると、直近で急騰した中小型の銘柄というよりは、ETFなどにも組み込まれていて時価総額が大きい超大型株の方が良いですね。

そういったことを鑑みながら選定した銘柄は、下記の5銘柄です。

(1570)日経レバ
(7203)トヨタ自動車
(8306)三菱UFJ
(9432)NTT
(9501)東電

様々なタイプの銘柄のテストを行いたいため、ティック数が多い大型株の中でもセクターや板の厚さ、株価はバラバラのものを選定しました*2
これらの銘柄をもとにバックテストを行っていこうと思います。

バックテストの方法

事前準備のとして、9:00~15:00まで、1秒ごとにKabusAPIの板情報取得ができるエンドポイントにリクエストを投げて、板情報の取得・保存をします。

また、同じく事前準備として、前述のフローの処理から、実際の買い/売り注文は行わず手元の記録上のみに注文を行ったことにするシステムをPythonで組みます。

保存してある板情報を古い順に1レコード取り出し、システムに処理を行わせます。

これを最後のレコードまで処理を行わせて、収益や取引回数の結果を取得します。

パラメータの値を様々変えて、どのパラメータで良いパフォーマンスが出せるか、パラメータによらない部分で平均的にどの程度のパフォーマンスを出すことが可能かを検証します。

評価方法とか想定結果

評価するために求める損益の計算式は下記のようになります。*3

損益 = (⑥ x 利確回数 - ⑦ x 損切り回数) x 呼値 x 単元株数

数日間のデータでシミュレーションを行い、この計算式で求められる利益で良し悪しの判断を行います。
あとは、利益になっても極端に取引回数が少ないとあまり意味がないため、取引回数も判断材料としたいです。

個人的な想定結果としては、設定値が⑥=⑦や⑥<⑦の場合は利益は出せず、⑥>⑦の場合でのみ利益が出せるのではないかなと考えています。

株価は一方的に動くことはあまりないため、1回の損切リでの損失額は多くなりますが、その損切りが1回起こるまでにpipsの小さい利確を複数回積み重ねられるので、利益の方が大きくなると思うんですよね。
あとはどの程度のパラメータ(pips)で最大の利益を出せるかはテスト次第です。(これは銘柄によってだいぶ異なりそうですけど...)

懸念点

あらかじめ取得した板情報からバックテストを行う場合の懸念点が一つあります。
それは、約定タイミングがわからないことです。

同じ板への買い/売り注文は基本的には早い順に約定しますが、自分の入れた注文がどのタイミングで約定するかわかりません。
HTF勢やアルゴの影響で常に注文・キャンセルが繰り返されていますが、そのキャンセルは自分より前に注文されたもののキャンセルなのか、後に注文されたもののキャンセルかが取得できる情報からは判別できません。
板情報・歩み値から判別がつくのは、遅くともこの注文までには約定したという情報のみです。

どの注文で約定したかはかなり重要な要素ですが、判別できないため、バックテストでは買い注文では板をすべて喰いきったら約定、売り注文では損切り価格にタッチしたら成行で約定、という判断させるようにして行います。

実際の取引よりシビアな条件(利確しにくい、損切りしやすい、取引回数が稼げない)で行いますので、このテストで利益が出せれば実際のトレードでも利益が出せるかと思います。

長くなったので今回はここまで。次回は実際にバックテストを行っていきます。

*1:1周目以外と途中の処理でエラーが発生した場合のみ、この状態になる。

*2:ETFに組み込まれている、ではなくてETFそのものがあるじゃんというツッコミはなしで

*3:板が数枚同時にぶち抜かれた場合や注文がすり抜けた場合は、上記の通りにならない可能性があります。

シストレでの日本株スキャルピングについて考える その0.5

どうも、POIです。

前回の記事では、優待のように資金は減るが得できるような投資手法以外に、資金を増やすための投資手法を行いたいということで長々と考えた結果、 トレードシステムを組んで、auカブコム証券でスキャルピングを行うという方針で進めていくことに決まりました。

そこで個人がシステムでスキャルピングを行う上で、法律や規制に引っ掛からないか気になったため調査しました。

高速取引行為(HFT)

まず初めに気になるのが、金商法の高速取引行為(HFT)規制についてです。
コンピュータの性能向上により、HTFによる先回り取引や株価の急激な乱高下が問題とされていましたが、2017年に法律改正によって、システムで高速取引を行うものは金融庁に届け出をしなければいけないというルールになりました。
ただ、この高速取引というのがどの程度のものを指すなのか明確な基準がわからなかったので調べてみたところ、金商法に具体的な定義が記載されていました。

第一章 第二条 41
この法律において「高速取引行為」とは、次に掲げる行為であつて、当該行為を行うことについての判断が電子情報処理組織により自動的に行われ、かつ、当該判断に基づく当該有価証券の売買又は市場デリバティブ取引を行うために必要な情報の金融商品取引所その他の内閣府令で定める者に対する伝達が、情報通信の技術を利用する方法であつて、当該伝達に通常要する時間を短縮するための方法として内閣府令で定める方法を用いて行われるもの(その内容等を勘案し、投資者の保護のため支障を生ずることがないと認められるものとして政令で定めるものを除く。)をいう。
一 有価証券の売買又は市場デリバティブ取引
二 前号に掲げる行為の委託
三 前号に掲げるもののほか、第一号に掲げる行為に係る行為であつて、前二号に掲げる行為に準ずるものとして政令で定めるもの

金融商品取引法(昭和二十三年法律第二十五号)より

これを細かく見ていくと、
「次に掲げる行為であつて」で示されている一に「有価証券の売買」という記載があるため、今回やろうとしている日本株の売買は対象になります。

「当該行為を行うことについての判断が電子情報処理組織により自動的に行われ」、これはシステムがどのタイミングでどの注文を出すか判断を下すということなので、これも今回やろうとしていることの条件に当てはまりいます。

「当該判断に基づく当該有価証券の売買又は市場デリバティブ取引を行うために必要な情報の金融商品取引所その他の内閣府令で定める者に対する伝達が、情報通信の技術を利用する方法であつて」、これはネットワークを通じて取引所への注文を行うということなので、この条件にもあてはまります。

「当該伝達に通常要する時間を短縮するための方法として内閣府令で定める方法を用いて行われるもの」、これがよくわかりません。
伝達に通常要する時間」が対面取引でかかる時間のことなのか、システム取引でかかる時間のことなのか、また「内閣府令で定める方法」の具体的内容が条文にはないため、APIを使うことによる取引も短縮にあたるのであれば対象となりますが、そうでない場合には当たりません。
ただ、対象なのに無許可で取引を行った場合は、「3年以下の懲役若しくは300万円以下の罰金、又はその両方」(198条)の罰則があるため明確に理解しておかなければいけません。

この記述について詳しく調べてみたところ、大和総研のレポートが引っ掛かりました。 このレポート4ページによると、参議院委員会で金融庁総務企画局長による答弁が行われており、その内容が引用されていました。
ここでいう「時間を短縮するための方法として内閣府令で定める方法」は「コロケーションエリアからの発注など、判断に関する情報の伝達に要する時間を短縮するための方法を用いている」との定義のことらしいです。
この場合の「コローケーションエリア」というのは東証アローズのような東証のシステムに物理的に繋いだものですね。
ということを踏まえれば個人宅やVPSから証券会社のシステムを仲介して取引を行う分には問題なさそうです。

また、その後の答弁でどういった者が登録対象になるかについて、「新たに登録を義務付けられるいわゆる投資会社は六十社程度」「既に海外でも高速取引を行っている、基本的に海外の会社」具体的に述べられております(5ページ)。 個人投資家については全く触れられておらず、実際法律の施行後に登録された数は最大55で、登録されている法人はどこもマイクロ秒単位での取引を行うような法人でしたので*1、個人でスキャルピングを行う分には問題ないでしょう。

念のために、未登録者による立件、逮捕のニュースがないか調べてみましたが見つかりませんでした。

今年3月に高速取引で課徴金勧告が出された法人がありますが、記事を読んでみると高速取引というよりは終値関与での課徴金ではないでしょうか。*2 sp.m.jiji.com

ということで前例的にも問題なさそうなので、シストレのスキャを行うことによって法律に触れるようなことはなさそうです。

auカブコム証券の規制について

では、次にauカブコム証券ではスキャルピングは高頻度のアクセスは禁止かを見ていきたいと思います。

関連しそうな禁止事項には、オンライン・トレード取扱規定の第27条1に書かれていました。

27条 1.お客様が本サービスの利用に関し、次の各号に定める事項に該当する場合は、当社は本サービスのご利用をお断りすることがあります。
(1) 第31条各号に該当する場合
(2)お客様が第30条第1項の手続を行わない場合
(3)当社からの連絡がとれなくなった場合
(4)過大なアクセスを行うなど本サービスの濫用がなされていると当社が判断した場合
(5)各種法令および諸規則に抵触する場合又はその疑いが強いと当社が判断した場合
(6)当社が定める本サービスに関する指示等を遵守しない場合又はこれに違背する方法
で本サービスを利用した場合又は利用しようとする場合
(7)当社の認めていないプログラム、ソフトウェア等の使用により、当社のシステムの意図から外れた方法で本サービスを利用した場合又は利用しようとする場合
(8)その他、当社の運営方針に外れた態様で本サービスを利用するなどお客様が本サービスをご利用いただくことが不適当であると当社が判断した場合

auカブコム証券 オンライン・トレード取扱規定より

30条、31条はそれぞれ申込事項(書類)の提出、不足金に事項なので関係ないです。
この中で関連がありそうなのは、(4)と(7)でしょうか。

(4)について、明確なアクセス制限のボーダーがわからないブラウザからWebサーバーへのアクセスの場合は気をつけなければいけませんが、APIにはレート制限でしっかりとしたボーダーが決められており、その制限を超えるとリクエストを投げるとエラーが返ります。
レート制限エラーが出た直後もしつこくリクエストを投げたりしないように調整を行えば、違反として取引停止にさせられることはなさそうです。

また、(7)についてですが、APIを使用する分には公式から配布されているサンプルコードとリファレンスを基に利用する分には、まず問題ないと思いますね。
当社のシステムの意図から外れた方法、取得した板情報を外部に有料で流したりしない限りは大丈夫でしょう。

サーバーへの負荷については問題なさそうですが、手法としてスキャルピングは問題ないでしょうか?
FXを取り扱う会社ではスキャルピングを禁止しているところが多そうですが、日本株スキャルピングを禁止するような文言は見当たりませんでした。

Google検索の上位にヒットするサイトでは、証券会社はFXと違い株の仲介をするだけだから証券会社はリスクを負わない。だからスキャルピングを禁止にする必要がない、とかいうよくわからない記述をしているサイトが多いですが、そんなわけないんですよね。

証券会社は顧客から注文を受けた場合は東証のシステムに発注をかけに行きますが、注文をかけると東証から証券会社に対してアクセス料という名目の手数料が課され、約定すると取引料が課されます。この他、注文内容の変更や注文キャンセルでも手数料がかかります。
https://www.jpx.co.jp/rules-participants/participants/fees/tvdivq000000v276-att/fee(Japanese)20230601.pdf

例えば、auカブコム証券で1000円の株価のプライム銘柄を寄りから引けまで1分ごとに1単元(100株)売買する。その場合に1日で証券会社から東証に払わなくてはいけない費用は、

(1000<株価>x100<単元株数>x0.3/10000<取引手数料[標準料率]>x0.7<取引手数料[取引料率]※1>+0.09<アクセス料※2>)x2<往復分>x300<売買回数>=1314円

となります。

※1取引料率は月間売買代金によって変動。カブコムの公表しているデータによると毎月1兆円を超えているためこの料率に。
※2 アクセス料は月間注文件数によって変動だが、こちらはカブコムは公表していない。
東証の5月の売買代金115兆円を約定株数560億株で割ると1株平均2053円。カブコムの5月の売買代金3兆8700億で割ると、約定株数は19億3000万株ほどと推測できる。1注文あたりの平均取引株数は全く不明だが仮に100株~300株とおくと、月約定件数は1930~5790万件。松井証券の公表データを見ると注文件数は約定件数の1.7倍ほどなので、それを参考に計算すると、カブコムの月当たりの注文件数は3281~9873万件ほどと推測できる。これを東証のアクセス料金体系に当てはめると1注文当たり0.09円か0.07円のアクセス料がかかる。ここでは多めの0.09円としておく。

5年ほど前まではどの証券会社も顧客に対し取引手数料や金利貸株料をかけていたため、↑の東証への費用も賄えていましたが、競争激化で無料化が進んでいるためそういった状態で取引されると利益にならないどころか損失ですからね。
慈善事業でない以上、損失になってしまうような取引については今後禁止になる可能性は十分に考えられます。

ですので、ここら辺については今後も注視しながらトレード方法を注視していきたいですね。

次回は、やっと本題のスキャルピングの具体的なアルゴリズムについて考えていきたいと思います。

*1:正確には法人54、個人1ですが、この個人も調べてみるに投資会社っぽいです

*2:超低位株の終値関与は酷いですからね...。間違いなくアローズ勢の仕業なのですが、なかなか取り締まらないのは東証に大量の利用料を払っているからでしょうね。。詳しくは後日記事にします。

シストレでの日本株スキャルピング その0

どうも、POIです。

今回はタイトルの通り、スキャルピングについての記事です。

ここまで、ほぼほぼ株主優待(クロス)についての記事でしたが、優待クロスは言ってしまえば、安く買い物ができるようなもので、お金が増えるものではありません。

ということで、優待ではなくお金を増やす手段としての投資手法についてもそろそろ考えていきたいと思います。

投資形態の話

私の本業はIT企業にプログラマーとしてフルタイム(平日8時間)勤務をしていますので、東証の開いている時間に取引をすることはほぼ不可能です。
そのため可能な投資手法としては、手動で売買する長期投資か、シストレでのデイトレ/スイングのどちらかになってくると考えられます。

ただ、長期投資の場合はフィードバック、本当に自分の予測した通りに株価が動いたかの結果を得られるのが、早くとも数か月かかってしまうため、トライアンドエラーで様々な手法を試すのが難しくなります。
また、企業単位ではなくマクロ経済単位でのファンダメンタル面の株価変動の割合が大きくなりますので、選定銘柄は良くてもファンダに押し下げられる、あるいは逆のことが起こり、最終的に個別銘柄の投資が正しいものだったのがが判断しづらくなりますし、検証にも時間がかかります。
ちなみに、良くて年利数%にしかならないインデックス・指数連動型の銘柄のことはあまり考えてません。
300万を一気にぶっ込んで年利3%、10年、複利で考えても利益は103万(+34.3%)です。
銀行に置いておくよりは全然いいですが、選択肢の多いこの時代に10年で34%はちょっと低いかなぁと思います。
複利が過大評価されがちですが、この場合複利での利益は3万円ですからね。 最低でももう一桁欲しいので、もしインデックス系をやるとしても数千万溜まってからになると思います。
2023年や2024年初頭のように大型株ならどこ買っても騰がる相場となればいいですが、今の高値圏で米利上げ停止か日本の利上げで金利差が縮まった際に、全体が一気に下落し、どこを買っても負けてしまうような相場になってしまった場合*1 、金銭的な損失も痛いですし、それ以上に機会損失となってしまうことが非常に痛いです。

ということで、短期間でトライアンドエラーを繰り返すことができ、ファンダメンタルにもほぼ影響されないデイトレを、システムを組んで取引するということに挑戦してみたいと思います。せっかく本業プログラマーなので、そこの強みを生かしていきたいです。

トレードに使用する指標とか

シストレを行う場合、何を基準にトレードを行うかを決める必要があります。
事前に厳密に値を決めておいて、それに沿ってif文レベルで条件分岐させトレードの判断を行うルールベース型と、事前に大量のデータを飲ませて機械学習/深層学習/強化学習を行い、トレードの判断を行うAI型の2種類があるかと思いますが、まずは手軽に行えるルールベース型でシステムを組んでみたいと思います。

ルールベース型のトレードでは、板の厚さや移動平均線、RSIのような有名な指標から需給・トレンドを計算し判断させるパターンもありますが、本当の最初はそういったものは一切見ずに、現在の株価のみで売買の判断をしようと思います。
株価のみで判断することになるため、数pips*2単位で利確/損切りを行うことになると思うので、デイトレの中でも短い時間でトレードを行うスキャルピングになるかと思います。

最初のシステムを改造していき、いずれはAIとも組み合わせていきたいです。

使用する環境・証券会社

システムを用いてデイトレ(スキャルピング)を行う場合に重要なのは、情報取得・注文発注の速度、トレードの処理がコードで実現のしやすさ、取引にかかる手数料・諸経費の3点だと個人的には考えています。

シストレを行う場合に、使用する証券会社がシステムで操作可能なトレード用のアプリやAPIがあるか。ない場合はChromeのようなブラウザを使用する必要があります。
そして、ブラウザ上で板情報の取得(スクレイピング)→取得した情報をシステム上で整理→状態に応じて注文発注という流れになります。
まず、このスクレイピングについてですが、取得先のページはシステムで取得されることを想定されていないため、板情報以外の無駄なデータが大量にあります。
単純なHTMLやCSSのやり取りだけならそこまで遅くはなりませんが、JSを走らせる必要があるとレンダリングに時間がかかり遅くなります。
マイナーどころですが、OKB証券ではログインページから1ページごとにJSを実行させ、トークン発行、発行したトークンを次のページへのリクエストに挿入する必要があるため、Pythonでいうとrequestsのみでは実装できず、seleniumのようなJSレンダリングが可能なライブラリを使う必要があります。
そのため、時間の問題に加え、コードも複雑になりページレイアウトの修正にも弱いです。
独自にレート制限を設けている証券会社もあり、例えばSMBC日興証券では約0.5秒以内に複数回アクセスを投げてしまうとSMBCのサーバー側で処理を弾かれてしまいます。
そのため、どんなに短く見積もっても1秒は待機する必要があります。
1回の取引で、板情報取得・注文確認・注文発注と最低でも3リクエストを投げることになるので、最小でも3秒・板情報取得してからは2秒です。 2秒もかかってしまうと、人間に比べて優位な速度面を活かすことができませんし、機会損失にも繋がってしまいます。

また、取引用のアプリケーションが存在するがシステムでは操作できないもの、例えばSBI証券のHYPER SBI2の場合は、システムで直接アプリには干渉できないため、システムでは人間が操作するのと同じようにデスクトップ上からマウスを座標単位でアクションを起こす、というアプローチ方法で間接的に操作を行う方法しかありません。
一つ一つの処理を座標単位で設定していくことになるため、ブラウザ操作に比べるとコードはさらに複雑になる上、アプリのアップデートなどで少しレイアウト(座標)や挙動が少し変わっただけでも処理がうまくいかなくなる恐れがあります。

ということでシステムで操作されることを前提としていないブラウザやマウス操作での取引を行うのは非常に厳しいです。

ではシステム用に提供されているものとしては何があるでしょうか。
FXや仮想通貨の場合はそういったものは腐るほどありますが、日本株の場合大手証券株式会社から提供されているものは3つしか見つかりませんでした。
そのうちの2つはRSSExcel+VBAを用いて情報の取得・発注が行える機能が楽天証券岡三オンライン証券から提供されています。
単純な処理に特化した(マクロ)言語ですので、簡単な処理を行うだけなら他の言語に比べて書きやすいですが、大規模な処理には向いておらず、ライブラリもそこまで多くないので、あとから処理、特に計算以外の処理を拡張したい場合なんかはすぐにコードが膨らんでしまいますね。
また、機械学習したsavファイルやpickleを読み込むことができませんので、今後学習済みモデルと組み合わせることを考えると、分析部と注文部の処理をそれぞれPythonVBAと別々に作成して処理を行う必要があります。
わざわざ分けて処理を書くくらいなら、後述するPython1本で書けるサービスサービスを使用した方がいいかなと考えています。

証券会社の手数料の面で見てみると、岡三オンライン証券RSS利用料が35日で5093円、取引手数料は1日の売買代金が100万円まで無料、100万からは1430円で100万ごとに500円増加、また制度年利は2.6%,貸株料は2.0%。100万円分取引したとすると金利は71円、貸株料は54円です。
制度買いで100万円分スキャルピングをした場合、すべての取引で0.21%利益を出せてやっとトントンなので、スキャルピング向きではないですね。
一方、楽天RSS利用料・取引手数料ともに無料。また、信用金利に関しても1日以内に決済すればこちらも無料で済みますので、RSSスキャルピングを行うなら楽天の方でしょうか。

システムでトレードが行える機能の残り1つは、メジャー言語+REST APIでトレードができるものがauカブコム証券から提供されています。
直接カブコムのサーバーへリクエストを送るのではなく、トレーディングアプリのKabuStationで行える操作をローカル内へのリクエストで行えるというものですね。
メジャー言語で操作できるというのは非常に大きく、処理の自由度も高まります。
また、ライブラリの豊富なPythonを使うと数行で注文を発注するコードが書けますし、機械学習との組み合わせたトレードも容易に行うことができます。
デメリットとしては、エンドポイントKabuStationアプリの方を向いているため常にアプリを起動していなくてはいけない点と、アプリがWindows環境でしか起動できない点でしょうか。
処理的にはCUI環境(Linux環境)で済ませられるものを、わざわざGUI環境で実行しないといけないのが非常に残念です。
手数料という点で見てみると、サービス利用料は無料*3、取引手数料も無料で金利貸株料は1日以内での返済なら6月から完全無料になったため、楽天と同じく経費はかからずに取引が行えます。

ということで、デメリットはありつつも、RSSよりは拡張性が高いという面で、日本株シストレを行うなら、auカブコム証券のサービスを使うのが良さそうなので、これを使用したシステムを組んでいきたいと思います。

長くなってしまったので一旦ここで区切ります。
次回(その0.5)では法律や規制の話、次々回(その1)では実際にコードを組んでシミュレーションを行っていきます。

*1:大企業で過去最高益を挙げている点や、金利差縮小でも円高が進まずに、今の高値圏から下がらない可能性も十分ありますが...

*2:株ではpipsではなく"枚"という単位だと思いますが、板に入っている注文単元数も"枚"ということがあり紛らわしいので、あえてpipsという表現を使っています。

*3:ただし2ヶ月以内に1回以上取引が必要

(7421)カッパ・クリエイトから株主優待案内が到着しました

2024年3月の権利確定日に100株保有して獲得した(7421)カッパ・クリエイト株主優待の案内が到着しました。

優待案内到着

6月10日に、株主総会通知書・配当金通知とともに優待の案内・概要が届きました。

優待品は、コロワイド系列の飲食店で利用可能な優待ポイント3000ポイント(3000円分)です。
優待初取得の人には、「株主様ご優待カード」が届き、そのカードにポイントがチャージされるようです。

この優待カードを店内の精算機で使用することによってポイントで支払いができるようです。
優待ポイントは飲食店以外でも、下記のグルメ商品とも交換可能なようです。

ただ、ポイント設定が絶妙(?)で、交換可能な商品の最低ポイントは4000ポイントなので、100株保有の場合はどの商品とも交換できません。
9月にも優待があるので、そこと合算で初めて使用できます。
また、一番上のコースのサーロインステーキやマグロ/ネギトロセットも13000ポイントな一方、1回の優待で獲得できるポイント12000ポイントを上回っているため、あまりグルメ商品と交換はさせたくないという感じがしますね。

私は今回優待初取得なので、6月27日以降、実際の優待が届き次第また記事にしようかと思います。