2025-11-18

自動売買への道 (2025-11-18)

楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめていきます。

今日の日経平均株価

現在値 48,702.98 -1,620.93 -3.22% 15:30
前日終値 50,323.91 11/17 高値 49,971.55 09:02
始値 49,812.95 09:00 安値 48,661.52 13:26

※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。

【関連ニュース】

デイトレ用自作アプリ

以下は株価に関連する情報の流れを示しています。

株価データの流れ(Windows 11)

楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。

強化学習

現在は、強化学習を利用した取引モデルの開発に取り組んでいます。

強化学習システムの概要

ティックデータのスムージング

強化学習モデルの観測値に、ティックデータで算出した RSI (n = 300 sec) を加えています。RSI は相場の過熱感を 0 - 100 % で表したオシレーター系のテクニカル指標ですが、モデルの観測値にするために -1.0 - +1.0 にスケーリングしています。

なお、RSI の算出には TA-Lib を利用しています。

RSI は、エントリーの動機づけの報酬付与に応用にしようと考えているのですが、現在のところは観測値にしているだけです。そもそも日足で使う値を参考にできないため、とりあえずエイヤっで n = 300 sec に決めただけだったので、水準を振って違いを見てみました。

ティックデータから直接 RSI を算出

まずは、ティックデータから直接 RSI を算出しました。y 軸ラベルは、例えば RSI_030 であれば n = 30 sec で RSI を算出したことをあらわしています。

ティックデータから直接 RSI を算出 (JupyterLab)

パッと見ですが、ティックデータで RSI を算出するとノイズがとても多い指標になります。

ティックデータをスムージングして RSI を算出

次に、ティックデータをスムージング (scipy.interpolate.make_smoothing_spline) してから RSI を算出してみました。

ティックデータをスムージングして RSI を算出 (JupyterLab)

スムージング処理を加えると、ノイズが少なくなり、観測値として扱いやすくなります。

環境にスムージング機能を組み込む

強化学習用の環境にスムージング機能を実装し、n = 180 sec で RSI を算出するようにしてみました。環境で、含み損益やポジション情報を除いた、株価 (Price) および出来高 (Volume) の情報から算出している観測値を並べてみました。

ティックデータから算出される観測値

過去のティックデータをスムージングするときは一括処理をしますが、リアルタイムではそうもいかないので、環境では必要な量だけスムージング処理をしながら RSI を算出するようにしています。そのため、スケールが JupyterLab 上で算出したものと異なっていますが、概ね同じような値を算出できていそうです。

ただ、スムージング処理は CPU への計算負荷が高く、非力な PC 上でリアルタイム運用するのは難があります。

こうやって観測値を並べてみると RSI の変動は、MAΔ2(移動平均の差分 MA60 - MA300)のピークとよく似ています。もちろん MAΔ2 の方はスケールが値動きに連動して変動します。

RSI は [-1, 1] に収まるようにスケーリングがしやすいので、観測値に無条件に採用していましたが、ティックデータから RSI を直接算出するとノイズが大きい。だからといって計算負荷がかかるスムージング処理をしてまで使う必要があるかどうか悩みます。

他にも追加することを検討したい観測値があるので、一旦 RSI を観測値から外してみるのもアリかもしれません。

並行して RSI と MAΔ2 のピークと似ているのかを詳しく調べる必要がありそうです。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
  4. Gymnasium Documentation
  5. Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
  6. Maskable PPO — Stable Baselines3 - documentation
  7. PyTorch documentation
  8. PythonでGUIを設計 | Qtの公式Pythonバインディング
  9. Python in Excel alternative: Open. Self-hosted. No limits.
  10. Book - xlwings Documentation
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿