楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめていきます。
一般的な報酬レンジの目安
| アルゴリズム |
推奨される報酬レンジ |
理 由 |
| PPO / A2C / TRPO |
おおよそ -1.0 ~ +1.0 |
方策の安定更新のため。Advantageのスケールが大きすぎると勾配爆発のリスクがあるため |
| DQN 系列 |
0 ~ 1.0(非負が多い) |
Q値の安定性と収束性のため、報酬は非負に制限されることが多い |
| REINFORCE |
-1.0 ~ +1.0 または 正規化済み |
高分散な報酬に弱いため、スケーリングが重要 |
実践的な報酬レンジ調整
| 方法 |
内容 |
メリット |
| 正規化 |
reward = profit / tickprice / 10 |
スケールを ±1.0 程度に抑える |
| クリッピング |
reward = np.clip(reward, -1, 1) |
スパイクを抑えつつ、強い報酬は保持 |
| 非線形変換 |
reward = np.tanh(profit / tickprice) |
スムーズな飽和で安定性向上 |
| 報酬の標準化 |
reward = (r - mean) / std |
分布に基づくスケーリング |
tanh の基本的な振る舞い
数式
\[
\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
\]
念の為、加法公式も。
\[
\tanh(a + b) = \frac{\tanh(a) + \tanh(b)}{1 + \tanh(a) \cdot \tanh(b)}
\]
グラフの形状
- S 字型の滑らかな曲線
- 中心(x = 0)ではほぼ線形
- ±∞ に近づくにつれて ±1 に漸近
出力範囲
- 入力がどんなに大きくても、出力は 常に -1.0 ~ +1.0
- つまり、クリッピング効果を持ちながら、滑らかに飽和する
報酬変換に使う理由
| 特性 |
効果 |
| 滑らかな飽和 |
スパイク報酬を急激に抑えず、徐々に効力を弱める |
| 符号保持 |
profit > 0 → 正報酬、profit < 0 → 負報酬を維持 |
| 中心付近は線形 |
小さな報酬はそのまま扱える(探索初期に有効) |
| 勾配安定性 |
PPOのようなアルゴリズムで安定した更新が可能 |
Epoch と Episode
🧠 用語の定義
| 用語 |
定義 |
主な用途 |
| Epoch | モデルが訓練データ全体を1回学習する単位 | 主に教師あり学習や深層学習 |
| Episode | エージェントが環境内で初期状態から終了状態まで一連の行動を行う単位 | 主に強化学習 |
🔁 Epoch(エポック)
- 訓練データ全体を 1 回通して学習すること。
- 例えば、6000 枚の画像を使って学習する場合、1 エポックはその 6000 枚を 1 回使って学習すること。
- 通常は複数エポックを繰り返して、モデルの精度を高める。
✅ メリット
- データ全体を繰り返し使えるため、汎化性能が高まりやすい。
- 学習曲線(loss や accuracy)をエポック単位で追跡しやすい。
⚠️ デメリット
- 過学習のリスク:エポック数が多すぎると訓練データに過剰適合。
- 固定データに依存するため、環境変化に弱い。
🎮 Episode(エピソード)
- 強化学習における1回の試行。初期状態から始まり、報酬を得ながら行動し、終了条件に達するまで続く。
- 例えば、ティックデータの 1 日分を使って、エージェントが売買を繰り返し、最後に強制返済して終了するのが1エピソード。
✅ メリット
- 環境とのインタラクションを通じて、動的な方策の学習が可能。
- 状態遷移や報酬の履歴を使って、長期的な報酬最大化を目指せる。
⚠️ デメリット
- エピソードの長さや報酬設計に依存するため、安定した学習が難しい。
- 初期方策が未熟だと、無意味な行動が多くなりがち。
エピソード終了フラグ
gymnasium(旧 OpenAI Gym の後継)では、環境のエピソード終了を 2 種類のフラグで表現します。それが terminated と truncated です。両者は「エピソードが終わった」という点では同じですが、終了理由が異なります。
gymnasium.Env の終了フラグ
| フラグ | 終了理由 | 典型例 | 学習上の意味 |
| terminated |
タスク固有の終了条件 |
ゴール到達、失敗状態 |
成功/失敗の判定に直結 |
| truncated |
外的制約による打ち切り |
ステップ数上限、時間切れ |
成功/失敗とは無関係 |
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- PyQtGraph - Scientific Graphics and GUI Library for Python
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation
0 件のコメント:
コメントを投稿