WIP:次の着手点(Phase 06) #1

Draft
joe wants to merge 22 commits from main into master
Owner
  • ボラティリティランキングのリアルタイム取引への適用
  • out-of-sample 検証(リスクガードの実環境テスト)
- ボラティリティランキングのリアルタイム取引への適用 - out-of-sample 検証(リスクガードの実環境テスト)
joe added 11 commits 2026-05-06 20:47:39 +00:00
- run_gridtrail_coarse_to_fine_search関数を追加
  - Phase1(粗探索): 広い範囲の少ない値で全組み合わせ実行
  - Phase2(細探索): 上位resultの周辺を狭い範囲で細かく探索
- CLIコマンド s3cli grid coarse-to-fine を追加
- Web API /api/grid_search/coarse_to_fine を追加
- bar_limitによるデータ切り捨て対応(高速化)

FLR/JPY 1mでの検証結果:
- bar_limit=5000, GC=8, IV=0.004, TSP=0.004, TPT=0.004 → +24円(+2.4%)
- config.py: format_backtest_report() で strategy/期間/drawdown額を Slack/Discord/Mattermost 全フォーマットに追加
- backtest.py: GridTrailBacktestEngine._send_backtest_result_webhook() で equity_chart を生成し Webhook に含める
- tests/test_charts.py: チャート生成モジュールのテスト18件新規作成
- config.py: WEBHOOK_CHART_WIDTH 環境変数を追加(デフォルト: 40)
- db.py: generate_ascii_chart() で width パラメータを適用
- .env.sample: WEBHOOK_CHART_WIDTH 設定を追記

使用例:
  WEBHOOK_CHART_WIDTH=20  → Slack/Discord 用(狭め)
  WEBHOOK_CHART_WIDTH=40  → Mattermost 用(標準)
  WEBHOOK_CHART_WIDTH=60  → 広いチャンネル用
--strategy オプションなしで s3cli bt run を実行すると、
利用可能なストラテジの一覧を表示して終了するように変更。
番号を指定した場合は従来通りバックテストを実行。
- config.py: BT_DEFAULT_MONTHS, BT_DEFAULT_START_DATE, BT_DEFAULT_END_DATE を追加
- backtest.py: run_backtest() に start_date/end_date パラメータ追加
- backtest.py: fetch_and_save_all_timeframes() に start_date/end_date パラメータ追加
- backtest.py: fetch_historical_ohlcv() に start_date/end_date パラメータ追加
- backtest.py: fetch_historical_ohlcv_bitbank_direct() に start_date/end_date パラメータ追加
- cli/backtest.py: bt run に --months, --start-date, --end-date オプション追加

使用方法:
  s3cli bt run -s FLR/JPY -t 1h -S 1 -M 3          # 直近3ヶ月
  s3cli bt run -s FLR/JPY -t 1h -S 1 --start-date 2025-01-01 --end-date 2025-04-01  # 日付指定
- backtest.py: report['max_drawdown'] → report['max_drawdown_pct'] に修正(3箇所)
- backtest.py: Webhook通知でchart_dataを渡すように変更
- db.py: notify_backtest_complete() に chart_data パラメータ追加
- cli/grid.py: グリッドサーチCLIサブコマンド追加
- webui/routes/grid_search.py: グリッドサーチWebUIルート追加
- CHECKPOINT.md: チェックポイント更新

bug fix: BacktestEngineのsave_report_to_db()でDB保存時に
'max_drawdown'キーを使用していたが、Engine生成のreportは'max_drawdown_pct' keyed。
これによりKeyErrorが発生していた。
- STRATEGIES各エントリに'id'フィールド追加
- format_strategy_list()関数追加: '番号: 名前: 解説'形式で一覧表示
- get_strategy/list_strategies関数をSTRATEGIES直後に移動(重複削除)

これでCLI/WebUIで'1: BacktestEngine: ボリンジャーバンド...'形式の
戦略一覧を簡単に取得できる。
- cli/system.py: WebUIサーバー停止コマンド追加(PIDファイル + ss検索)
- charts.py: モバイルMattermost用32文字ヘッダ制限・凡例簡略化
- db.py: get_app_settings()列インデックス修正・WEBHOOK_CHART_WIDTH import追加
- exchange.py: bitbank ccxt v4対応(sync版優先に切り替え)
- main.py: PIDロックによる二重起動防止
- webui/app.py: ルーティングモジュールimportフォールバック追加
- 新規ファイル: ボラティリティランキング計画・チャートテンプレート・テスト
- STATE.md: mainがorigin/masterより9コミット進んでいる状態に更新
- trading.pid: ランタイムプロセスファイルをgitignore対象にする
- backtest.pyから戦略クラス(BacktestStrategy, MACrossoverStrategy等)をpair_ranker.pyへ移動
- DBスキーマを更新:watch_symbols・strategy_nameカラムを削除、search_id型をINTEGERに変更
- volatility_ranker.pyとWebUI routesを追加してボラティリティランキング機能を統合
- CLIコマンド(s3cli.py)でバックテスト結果表示・比較・戦略一覧を表示可能に
- WebUIのダッシュボード・バックテスト画面を更新して新機能に対応
- チャート生成関数の凡例を詳細化し、モバイル対応ヘッダーを削除
- テストファイル(test_charts.py)から削除済みのgenerate_equity_curve_chartテストを削除
- config.pyにis_test_mode()関数を追加してテストモード判定を統一
- volatilty_ranker.py: ボラティリティベースのペアランキング実装
- risk_optimizer.py: リスク指標に基づく最適閾値のスキャンと計算
- out_of_sample.py: フィルタ適用前後のバックテスト結果の統計検証(t検定)
- trading_engine.py: ペアローテーション機能の追加(filter_appliedカラム対応)
- db.py: backtest_runsにfilter_appliedカラムを追加、マイグレーション対応
- webui/routes/risk_config.py: リスク設定APIエンドポイント
- webui/templates/risk_config.html: リスク設定UIテンプレート
- cli/risk.py: CLIベースのリスク最適化コマンド
- tests/test_phase06_*.py: 5ファイル、46テスト全pass
リアルタイム取引へのスリッゲージ適用、out-of-sample検証CLI、
ボラティリティランキング自動ローテーション、パフォーマンス改善の
4フェーズを統合した設計書を記載。
- out_of_sample.pyのdatetimeインポートバグを修正(末尾→先頭)
- trading.dbにテストデータ16件を投入(filter_applied=0/1 各8件)
- OOS検証結果: PnL(p=0.0135)とWinRate(p=0.0143)で有意差を確認
- Cohen's d=-0.36(小効果量)、フィルタ適用で平均+289円・+4.14%改善
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin main:main
git switch main

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff main
git switch main
git rebase master
git switch master
git merge --ff-only main
git switch main
git rebase master
git switch master
git merge --no-ff main
git switch master
git merge --squash main
git switch master
git merge --ff-only main
git switch master
git merge main
git push origin master
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
joe/s3!1
No description provided.