2025-11-21

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

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

今日の日経平均株価

現在値 48,625.88 -1,198.06 -2.40% 15:30
前日終値 49,823.94 11/20 高値 49,459.59 09.03
始値 49,251.26 09:00 安値 48,490.03 13:52

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

【関連ニュース】

デイトレ用自作アプリ

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

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

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

強化学習

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

強化学習システムの概要

リアルタイム利用を想定したシミュレーション (2)

取引モデルの改良はまだまだなのですが、リアルタイム利用を想定した推論シミュレーションができるようにしておきたいと考え、評価システムを作り始めています。

高頻度取引を抑制したい

取引回数の上限を設定すると、モデルは取引上限へ向かう行動を取りやすくなり、結果として高頻度の取引に陥りやすくなってしまいます。

モデルの報酬設計でいろいろ改良を加えているつもりなのですが成果がでません。過去データを学習後「通し」で推論させると取引回数上限に貼り付いてしまいます。それでも大きな損失を出さすに通算損益が僅かにプラスになるという程度にはなりました(下図)。

学習済みモデル ppo_7011_20251120.zip の取引回数

モデルの報酬設計については、おおむね期待通りの成果が出てからまとめる予定です。

今日のティックデータの事後推論

昨夜、過去のティックデータ全てで学習させたモデル ppo_7011_20251120.zip で、今日取得したティックデータ ticks_20251121.xlsx から 7011(三菱重工業)の分を読み込んで推論させました)。

推論対象のティックデータを表示できるようにした推論マシンでシミュレーション
推論結果の出力例
下記の条件で推論を実施します。
モデル          : models\trained\ppo_7011_20251120.zip
ティックデータ  : collection\ticks_20251121.xlsx
銘柄コード      : 7011

Excel ファイルをデータフレームに読み込みました。

スレッド内にワーカーエージェントを生成します。
2025-11-21 16:01:54,450 - INFO - modules.agent: model, models\trained\ppo_7011_20251120.zip is used.
Wrapping the env with a `Monitor` wrapper
Wrapping the env in a DummyVecEnv.

環境がリセットされました。
推論ループを開始します。

推論ループを終了しました。
計測時間 :                      1.530 sec
ティック数 :                    1,080 ticks
処理時間 / ティック :   1.416 msec

取引明細
                   注文日時 銘柄コード  売買    約定単価  約定数量   損益
0   2025-11-21 09:07:01  7011  売建  3877.0   1.0  NaN
1   2025-11-21 09:07:07  7011  買埋  3873.0   1.0  4.0
2   2025-11-21 09:07:08  7011  売建  3873.0   1.0  NaN
3   2025-11-21 09:07:26  7011  買埋  3873.0   1.0  0.0
4   2025-11-21 09:07:27  7011  売建  3877.0   1.0  NaN
..                  ...   ...  ..     ...   ...  ...
95  2025-11-21 09:23:55  7011  売埋  3929.0   1.0  1.0
96  2025-11-21 09:23:56  7011  売建  3929.0   1.0  NaN
97  2025-11-21 09:24:00  7011  買埋  3931.0   1.0 -2.0
98  2025-11-21 09:24:03  7011  買建  3932.0   1.0  NaN
99  2025-11-21 09:24:04  7011  売埋  3932.0   1.0  0.0

[100 rows x 6 columns]
一株当りの損益 : 14.0 円

取引が始まってから 30 分も経たないうちに取引回数上限の 100 回に達してしまっています。これでは使いものになりません。😭

週末の三連休中にモデルの報酬設計を徹底的に見直します。

参考サイト

  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 件のコメント:

コメントを投稿