setup について
setupは、VectorBT + OpenAlgoを使うPythonバックテスト環境を構成するスキルです。仮想環境の作成、依存パッケージのインストール、市場データの設定、導入確認を順に進めます。
主な機能
- 01OSの検出
- 02Python仮想環境の作成
- 03バックテスト用依存パッケージの導入
- 04市場別のデータソース設定
- 05.envファイルの作成と保護
- 06インストールの確認
活用シーン
- 01VectorBT + OpenAlgoプロジェクトの初期設定
- 02インド、米国、暗号資産市場のデータ設定
- 03バックテスト用APIキーやDBパスの保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marketcalls/ vectorbt-backtesting-skills --skill setupインストール後、Claude Code で/setupを入力して読み込まれたか確認します。
詳細
VectorBT + OpenAlgo 用の Python バックテスト環境を一式セットアップします。
引数
$0= Python のバージョン(省略可、デフォルト:python3)。例:python3.12、python3.13
手順
ステップ 1:オペレーティングシステムの検出
次のコマンドを実行して OS を検出します:
uname -s 2>/dev/null || echo "Windows"
検出結果を次のように対応付けます:
Darwin= macOSLinux= LinuxMINGW*またはCYGWIN*またはWindows= Windows
検出した OS をユーザーに表示します。
ステップ 2:仮想環境の作成
現在の作業ディレクトリに Python 仮想環境を作成します:
macOS / Linux:
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
Windows:
python -m venv venv
venv\Scripts\activate
pip install --upgrade pip
ユーザーが Python のバージョン引数を指定した場合は、python3 の代わりにそのバージョンを使用します:
$PYTHON_VERSION -m venv venv
ステップ 3:TA-Lib のシステム依存関係(任意)
OpenAlgo ta(from openalgo import ta)は、このプロジェクトのデフォルトのインジケーターライブラリです。100 種類以上のインジケーターが含まれており、別途システム依存関係をインストールする必要はありません。 TA-Lib が必要なのは、特定のバックテストで「talib を使って」と指定できるようにしたい場合のみです。
AskUserQuestion を使ってユーザーに確認します:
- 「バックテストで明示的に指定する場合に備えて、TA-Lib もインストールしますか?(任意 — OpenAlgo ta は同じインジケーターに加え、さらに 90 種類以上をカバーしています)」
- はい、TA-Lib もインストールする
- いいえ、スキップする(推奨 — 必要になったら後からインストールできます)
ユーザーがスキップする場合は、このステップ全体を省略し、ステップ 4 の pip install から ta-lib を除外します。インストールする場合、TA-Lib では pip install ta-lib の前に OS レベルで C ライブラリをインストールする必要があります。
macOS:
brew install ta-lib
Linux(Debian/Ubuntu):
sudo apt-get update
sudo apt-get install -y build-essential wget
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr
make
sudo make install
cd ..
rm -rf ta-lib ta-lib-0.4.0-src.tar.gz
Linux(RHEL/CentOS/Fedora):
sudo yum groupinstall -y "Development Tools"
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr
make
sudo make install
cd ..
rm -rf ta-lib ta-lib-0.4.0-src.tar.gz
Windows:
pip install ta-lib
失敗した場合は、https://github.com/cgohlke/talib-build/releases から適切な .whl ファイルをダウンロードして、次のコマンドでインストールします:
pip install TA_Lib-0.4.32-cp312-cp312-win_amd64.whl
ステップ 4:Python パッケージのインストール
必要なパッケージをすべてインストールします(最新バージョン)。ティアシートには QuantStats の代わりに openstatz を使用します。必ずインストールし、quantstats はインストールしないでください:
pip install openalgo vectorbt plotly anywidget nbformat pandas numpy yfinance python-dotenv tqdm scipy numba nbformat ipywidgets openstatz ccxt duckdb psutil
ステップ 3 で TA-Lib のインストールを選択した場合は、C ライブラリをインストールした後、このインストールコマンドに ta-lib を追加します。
ステップ 5:バックテスト用フォルダーの作成
最上位のバックテストディレクトリのみを作成します。戦略サブフォルダーは、バックテストスクリプトの生成時に /backtest スキルによって必要に応じて作成されます。
mkdir -p backtesting
戦略サブフォルダーを事前に作成しないでください。
ステップ 6:.env ファイルを設定する
6a. プロジェクトのルートに .env.sample があるか確認します。 ある場合は、テンプレートとして使用します。
6b. バックテストする市場を AskUserQuestion を使ってユーザーに確認します。
- インド市場(OpenAlgo)— OpenAlgo API キーが必要です
- インド市場(DuckDB)— データベースから直接読み込みます。API は不要です
- 米国市場(yfinance)— API キーは不要です
- 暗号資産市場(CCXT)— プライベートデータには任意で API キーが必要です
6c. ユーザーがインド市場を選択した場合、OpenAlgo API キーを尋ねます。
- 「OpenAlgo API キーを入力してください(OpenAlgo ダッシュボードから取得できます):」と尋ねます
- ユーザーがキーを入力した場合は、
.envに保存します - ユーザーがスキップした場合は、プレースホルダーを記入します
6d. ユーザーがインド市場(DuckDB)を選択した場合、DuckDB データベースのパスを尋ねます。
- 「DuckDB データベースファイルのパスを入力してください(例:D:/data/market_data.duckdb):」と尋ねます
- 形式を自動検出します。データベースに
symbol, exchange, interval, timestamp列を持つmarket_dataテーブルがある場合は、OpenAlgo Historify 形式として扱い、HISTORIFY_DB_PATHに保存します。それ以外の場合はDUCKDB_PATHに保存します。 - ユーザーが OpenAlgo Historify も利用している場合は、「これは OpenAlgo Historify データベースですか?(y/n)」と尋ねます
6e. ユーザーが暗号資産市場を選択した場合、取引所の API キーを設定するか尋ねます。
- 「認証が必要なデータ用の取引所 API キーをお持ちですか?(任意 — キーがなくても公開 OHLCV データを利用できます)」と尋ねます
- 「はい」の場合は、API キーとシークレットキーを尋ね、
.envに保存します - 「いいえ」の場合は、
.envでは空欄のままにします
6f. プロジェクトのルートディレクトリに .env ファイルを作成します。 以下のテンプレートを使い、ユーザーが入力したキーやパスを反映します。
# Indian Markets (OpenAlgo)
OPENALGO_API_KEY={user_provided_key or "your_openalgo_api_key_here"}
OPENALGO_HOST=http://127.0.0.1:5000
# DuckDB Data Sources (direct database loading - fastest)
# Custom DuckDB (user-created with OHLCV table)
DUCKDB_PATH={user_provided_path or ""}
# OpenAlgo Historify DuckDB (market_data table with epoch timestamps)
HISTORIFY_DB_PATH={user_provided_path or ""}
# Crypto Markets (CCXT) - Optional
CRYPTO_API_KEY={user_provided_key or ""}
CRYPTO_SECRET_KEY={user_provided_key or ""}
6g. .gitignore が存在する場合は、.env を追加します(シークレットは絶対にコミットしないでください)。
スクリプトは find_dotenv() を使って親ディレクトリをたどり、ルートにある単一の .env を自動的に探すため、サブディレクトリにコピーを作成する必要はありません。
grep -qxF '.env' .gitignore 2>/dev/null || echo '.env' >> .gitignore
ステップ 7:インストールを検証する
簡単な検証を実行します。
python -c "
import vectorbt as vbt
from openalgo import ta
import plotly
import duckdb
import anywidget
import nbformat
import openstatz
from dotenv import load_dotenv
print('All packages installed successfully')
print(f' vectorbt: {vbt.__version__}')
print(f' plotly: {plotly.__version__}')
print(f' duckdb: {duckdb.__version__}')
print(f' nbformat: {nbformat.__version__}')
print(f' openstatz: {openstatz.__version__}')
print(f' OpenAlgo ta: available (default indicator library)')
print(f' python-dotenv: available')
"
ユーザーが TA-Lib のインストールを選択している場合は、python -c "import talib; print('TA-Lib available')" でも検証します。このインポートに失敗した場合は、先に C ライブラリをインストールする必要があることをユーザーに伝えます(ステップ 3 を参照)。
ステップ 8:概要を表示する
以下を含む概要を表示します。
- 検出された OS
- 使用した Python バージョン
- 仮想環境のパス
- インストールされたパッケージとバージョン
- 作成されたバックテスト用フォルダー(戦略のサブフォルダーは
/backtestの実行時に作成されます) .envファイルの状態(キーを設定済み/プレースホルダー)— プロジェクトのルートにある単一のファイル- リマインダー:「設定をスキップした場合は、
cp .env.sample .envを実行し、API キーを入力してください」
重要事項
- パッケージをグローバルにインストールしないでください。必ず仮想環境を使用してください
- Linux での TA-Lib C ライブラリのインストールには、管理者/sudo 権限が必要です
- macOS では、
brew install ta-libを実行するために Homebrew が必要です - ユーザーがすでに仮想環境を利用している場合は、新しく作成する前に確認してください
- 生成されたバックテストスクリプトはすべて
backtesting/フォルダーに保存されます .envファイルはシークレットを含むため、絶対にコミットしないでください。必ず.gitignoreを使用してください。- セットアップ中にユーザーが API キーを入力した場合は、直接
.envに書き込んでください。手動でファイルを編集するよう求めないでください python-dotenvは pip install に含まれており、すべてのスクリプトで.envの読み込みに使用する必要があります