【要約】#5 ペーパートレードを動かしたら、想定外の詰まりが3つあった [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が日本株自動売買システムのペーパートレード環境を構築した際、実行基盤の不安定さに直面した。
- ・リモートデスクトップ切断後のWindowsロック画面により、自動起動スクリプトが停止する。
- ・kabuステーションの仕様変更により、OTPログインの画面遷移が不安定になる。
- ・WebSocketを用いた株価取得が、制限数に達する前に失敗する不明な挙動が発生する。
- ・これらの問題は、バックテストでは検知できない、実稼働環境特有の課題であった。
- ・外部アプリのUIやOSのセッション管理といった、制御不能な要素がリスクとなった。
// Approach
開発者は、OSの制約や外部アプリの不確実性に対し、回避策の導入と設計の変更を行った。
- ・Windowsのセッション管理問題に対し、ロック状態の検知と復帰処理を実装した。
- ・UIの揺らぎに対し、現在の画面状態を検知してから操作を決定するロジックを採用した。
- ・株価取得の不安定さに対し、REST APIへの切り替えと取得サービスの独立化を実施した。
- ・取得したデータはキャッシュに書き出し、シグナル計算側から参照する構成とした。
- ・これにより、外部要因による影響を最小限に抑える構造へと改善を図った。
- ・設計の分離により、各コンポーネントの責務を明確化することにも成功した。
// Result
開発者は、staging環境においてデータ取得からシグナル計算までのパイプラインが動作することを確認した。
- ・株価取得を独立したサービスとし、キャッシュを介して複数環境から参照する設計を実現した。
- ・REST APIの遅延(438銘柄で15分)を、キャッシュ共有により実用的な運用へ昇華した。
- ・バックテストでは見えない、実行基盤の実効性を検証する基盤を構築した。
- ・これにより、実発注に向けたシミュレーション環境の整備が進んだ。
- ・システムの信頼性を高めるための、実戦的な知見を得ることに成功した。
- ・不確実な外部環境下での、堅牢なシステム設計の重要性を証明した。
Senior Engineer Insight
> 外部GUIやOSの挙動に依存する自動化は、極めて脆弱である。特にWindowsのセッション管理や外部アプリのUI変更は、予期せぬダウンタイムを招く。原因不明の挙動に対し、原因究明に固執してはならない。アーキテクチャの変更で実用性を確保する判断は、実戦的で賢明である。