楽天証券の口座でデイトレの自動売買に挑戦しようと 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 で取得して作成しました。
【関連ニュース】
- アマゾン、ドル建て債の発行規模を150億ドルに設定-旺盛な需要続く - Bloomberg [2025-11-17]
- ベゾス氏、製造業・航空宇宙向けAI開発新興企業の共同CEOに就任=NYT | ロイター [2025-11-18]
- 日経平均は3日続落、今年2番目の下げ:識者はこうみる | ロイター [2025-11-18]
デイトレ用自作アプリ
以下は株価に関連する情報の流れを示しています。
楽天証券では、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 を算出するとノイズがとても多い指標になります。
ティックデータをスムージングして RSI を算出
次に、ティックデータをスムージング (scipy.interpolate.make_smoothing_spline) してから RSI を算出してみました。
スムージング処理を加えると、ノイズが少なくなり、観測値として扱いやすくなります。
環境にスムージング機能を組み込む
強化学習用の環境にスムージング機能を実装し、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 のピークと似ているのかを詳しく調べる必要がありそうです。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- Gymnasium Documentation
- Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
- Maskable PPO — Stable Baselines3 - documentation
- PyTorch documentation
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation







0 件のコメント:
コメントを投稿