optimize について
トレーダー向けに VectorBT の戦略最適化スクリプトを生成するスキルです。複数の指標でパラメーターを評価し、NIFTY と比較して結果を CSV に保存します。
主な機能
- 01戦略と銘柄別のスクリプト生成
- 02OpenAlgo ta による指標計算とシグナル整理
- 03リターン、シャープレシオ、ドローダウン、取引数の記録
- 04リターンとシャープレシオのヒートマップ
- 05NIFTY との比較と CSV 保存
活用シーン
- 01リターンやシャープレシオの高いパラメーターの探索
- 02最適化した戦略と NIFTY ベンチマークの比較
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ marketcalls/ vectorbt-backtesting-skills --skill optimizeインストール後、Claude Code で/optimizeを入力して読み込まれたか確認します。
詳細
VectorBT 戦略のパラメーター最適化スクリプトを作成します。
引数
$ARGUMENTS を次の形式で解析します:strategy symbol exchange interval
$0= 戦略名(例:ema-crossover、rsi、donchian)。デフォルト:ema-crossover$1= シンボル(例:SBIN、RELIANCE、NIFTY)。デフォルト:SBIN$2= 取引所(例:NSE、NFO)。デフォルト:NSE$3= 時間足(例:D、1h、5m)。デフォルト:D
引数が指定されていない場合は、最適化する戦略をユーザーに尋ねてください。
手順
- 参考パターンとして vectorbt-expert スキルのルールを読みます
backtesting/{strategy_name}/ディレクトリが存在しない場合は作成します(必要に応じて)backtesting/{strategy_name}/に{symbol}_{strategy}_optimize.pyという名前の.pyファイルを作成します- スクリプトでは、次のことを行う必要があります。
find_dotenv()を使用してプロジェクトルートの.envを読み込み、OpenAlgo のclient.history()でデータを取得する- ユーザーが DuckDB のパスを指定した場合は、
duckdb.connect(path, read_only=True)でデータを直接読み込む。vectorbt-expert のrules/duckdb-data.mdを参照してください。 - スタンドアロンの DuckDB を使用する場合、
openalgo.taをインポートできなければ、インラインのexrem()フォールバックを使用する - デフォルトではすべてのインジケーターに OpenAlgo ta を使用する(VectorBT 組み込みのものは使用しない)。ユーザーが明示的に「talib」または「TA-Lib」と指定した場合に限り、TA-Lib に切り替える
- 特殊なインジケーター(Supertrend、Donchian など)には必ず OpenAlgo ta を使用する(TA-Lib に同等のものがないため)
- シグナルのクリーニングには
ta.exrem()を使用する(必ずexremの前に.fillna(False)を適用する) - 選択した戦略に適したパラメーター範囲を定義する
- ループベースの最適化を使用して、各組み合わせの複数の指標を収集する
- 各組み合わせについて、total_return、sharpe_ratio、max_drawdown、trade_count を記録する
- 進行状況バーには
tqdmを使用する - インドの現物株式の手数料:
fees=0.00111, fixed_fees=20 - total return と Sharpe ratio のそれぞれについて最適なパラメーターを見つける
- それぞれの基準で上位 10 件の結果を表示する
- パラメーターグリッド全体の total return を示す Plotly ヒートマップを生成する(
template="plotly_dark") - Sharpe ratio を示す Plotly ヒートマップを生成する
- NIFTY ベンチマークを取得し、最適なパラメーターの結果と比較する
- 戦略とベンチマークの比較表を表示する
- 通常のトレーダーにも分かる平易な言葉で結果を説明する
- 結果を CSV に保存する
- コードやロガーの出力にアイコンや絵文字を使用しないでください
- 先物シンボルには、ロットサイズを考慮したサイズ設定を使用してください。
- NIFTY:
min_size=65, size_granularity=65 - BANKNIFTY:
min_size=30, size_granularity=30
- NIFTY:
デフォルトのパラメーター範囲
| 戦略 | パラメーター 1 | パラメーター 2 |
|---|---|---|
| ema-crossover | fast EMA:5~50 | slow EMA:10~60 |
| rsi | window:5~30 | oversold:20~40 |
| donchian | period:5~50 | - |
| supertrend | period:5~30 | multiplier:1.0~5.0 |
使用例
/optimize ema-crossover RELIANCE NSE D
/optimize rsi SBIN
コメント
Markdown 対応