Skip to content

Latest commit

 

History

History
310 lines (223 loc) · 18.4 KB

README_JA.md

File metadata and controls

310 lines (223 loc) · 18.4 KB

📈 quant-research

成功、失敗、前提条件をすべて見える状態に。

Jupyter Notebook Python 3.13 Data Last Commit Stars

A-shares Crypto Machine Learning Backtest Only


🧪  弱いファクターや失敗した戦略案も含め、調査の全経路を確認したいですか?
💸  リターンと並べて、取引コスト、アトリビューション、ドローダウン、検証結果も確認したいですか?
🗂️  セル単位で調べられるNotebookとデータスナップショットを好みますか?

✨ quant-researchは、体系的な戦略実験を公開するNotebookの記録です。

データ → 仮説 → シグナル → バックテスト → 検証 → 記録された知見


📣 スナップショット · 🧪 トラック · 🏆 結果 · ⚡ インストール · 🚀 再現 · 📐 手法 · 🗂 データ · 📂 構成 · 📌 制約

English · 简体中文 · Español · Deutsch · 日本語 · Русский · Português · 한국어


📣 調査スナップショット

項目 現在のリポジトリの状態
形式 保存済み出力を含む主要Jupyter Notebook 6冊
調査トラック 中国A株ファクター、BTC/USDTタイミング、XGBoostシグナル
中国A株スナップショット 2023-01-03から2026-03-27
暗号資産スナップショット 2026-03-28までの日次・時間足データ
実行範囲 バックテストと探索的分析のみ
本番運用層 ライブ取引モジュール、CLI、パッケージ、テストスイート、CIワークフローなし

このリポジトリは、フィルター、コスト、頻度、モデルを追加して検証するにつれ、結論がどう変化したかを記録しています。否定的な結果も調査履歴の一部として残しています。


🧪 調査トラック

トラック 中心となる問い 主な成果物
🇨🇳 中国A株ファクター モメンタム、リバーサル、売買回転率、ROEはクロスセクションリターンを説明できるか? IC検定、合成ファクター、リスク管理バックテスト、リターンアトリビューション
₿ BTCタイミング トレンド、センチメント、資金調達率、ストップルールでBTC/USDTタイミング戦略を改善できるか? パラメーター探索、ウォークフォワード検証、コスト推定、失敗した拡張案
🤖 機械学習 XGBoostは将来のリターン目標またはボラティリティ局面を分類できるか? 日次・時間足分類、リスクフィルター、手数料影響の実験
flowchart LR
    A([データスナップショット])

    A --> B[中国A株ファクター] --> E[IC検定] --> F[アトリビューション] --> L([記録された知見])
    A --> C[BTCタイミング] --> G[パラメーター探索] --> H[ウォークフォワード] --> I[コスト検証] --> L
    A --> D[XGBoostシグナル] --> J[方向モデル] --> K[ボラティリティモデル] --> L

    style A fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#000,font-size:12px
    style B fill:#DBEAFE,stroke:#3B82F6,stroke-width:2px,color:#000,font-size:12px
    style C fill:#DBEAFE,stroke:#3B82F6,stroke-width:2px,color:#000,font-size:12px
    style D fill:#DBEAFE,stroke:#3B82F6,stroke-width:2px,color:#000,font-size:12px
    style E fill:#F1F5F9,stroke:#64748B,stroke-width:1px,color:#000,font-size:12px
    style F fill:#F1F5F9,stroke:#64748B,stroke-width:1px,color:#000,font-size:12px
    style G fill:#EDE9FE,stroke:#8B5CF6,stroke-width:1px,color:#000,font-size:12px
    style H fill:#EDE9FE,stroke:#8B5CF6,stroke-width:1px,color:#000,font-size:12px
    style I fill:#FEF2F2,stroke:#EF4444,stroke-width:1px,color:#000,font-size:12px
    style J fill:#F1F5F9,stroke:#64748B,stroke-width:1px,color:#000,font-size:12px
    style K fill:#F1F5F9,stroke:#64748B,stroke-width:1px,color:#000,font-size:12px
    style L fill:#DCFCE7,stroke:#22C55E,stroke-width:2px,color:#000,font-size:12px
Loading

🏆 記録された結果

以下の数値は、現在のリポジトリスナップショットに保存されたNotebook出力です。下記の前提条件に基づく過去の実験を示しています。

BTC全サンプル・バックテストのスナップショット

記録に採用した参照用の全サンプル版は、MACD(16,35,9)、80未満のFear & Greedフィルター、日次3%ストップのシミュレーションを組み合わせています。Notebookには、より厳しい1%と2%のクリッピング閾値による+1335.98%と+612.25%も記録されており、この簡略モデルではストップ選択への感応度が非常に高くなっています。

指標 記録値 解釈
サンプル 2023-01-01 → 2026-03-28 BTC/USDT日次スナップショット
グロス累積リターン +423.22% 最終取引コスト推定前
コスト控除後の推定リターン +383.97% シグナル変更1回につき0.1%を使用
バイ・アンド・ホールドのリターン +301.59% 同じ日次バックテスト期間
推定コスト控除後最大ドローダウン -16.25% 日次ストップでリターンを切り詰めた最終コスト推定セル
報告Sharpe 1.7001 ストップと手数料調整前のシグナルリターンから算出
年間平均シグナル変更回数 約21回 Notebookでは年間約2.13%の手数料影響を推定

報告Sharpeとコスト控除後リターンには異なるリターン系列が使われています。コスト控除後Sharpeは改めて正確に再計算する必要があります。

ウォークフォワード検証

検証 記録結果 読み方
最終BTCワークフロー、検証Sharpe平均 0.6224 全サンプル結果より低く、パラメーターの安定性は限定的
以前のMACD単独ウォークフォワード、検証Sharpe平均 0.4348 平均はプラスだが、fold間の変動が大きい

維持できた結果と失敗した結果

実験 記録結果 状態
BTC MACD+センチメント+3%ストップ 参照用の全サンプル日次結果 このスナップショット内では有望。ストップ閾値への感応度が高い
中国A株タイミング単独のアトリビューション +65.28%、Sharpe 1.1479 銘柄選択部分より強い
中国A株3ファクター選択 +8.56%、Sharpe 0.2423 弱い
BTCマルチタイムフレームの一致 +199.01%、Sharpe 1.4897 単純なフルポジション戦略を下回る
BTCロング・ショート版 Sharpe 0.9833~1.1150 ロングのみのタイミングを下回る
日次リターン目標XGBoost 正解率約51% ランダムに近い
時間足ボラティリティ分類器 正解率約67% 探索段階。ラベル構築に全サンプル情報が漏れている
時間足MACD+ML、コスト控除後 +48.42%、Sharpe 1.1212 手数料の影響でコスト控除前の結果が大きく低下

🇨🇳 A株ファクター研究

ファクターICのスナップショット

ファクター IC平均 ICIR 読み方
20日モメンタム -0.0023 -0.0112 このサンプルでは有用なシグナルなし
5日リバーサル 0.0062 0.0323 このサンプルでは有用なシグナルなし
売買回転率 0.0290 0.1089 弱い
3ファクター合成 0.0328 0.2237 弱い
ROE — 0.0097 弱く、データも限定的

リターンアトリビューション

戦略部分 累積リターン Sharpe 最大ドローダウン
3ファクター選択 +8.56% 0.2423 -22.73%
タイミングとリスク管理 +65.28% 1.1479 -11.97%
20%ポジションの選択+リスク管理 +16.75% 0.4341 -15.06%

このアトリビューションでは、実験における過去のパフォーマンスの主な源泉がタイミングであることが示されています。構成銘柄の作成には現在のCSI 300リストを使っているため、中国A株研究には生存者バイアスが含まれる可能性があります。


₿ BTCタイミング研究

段階 累積リターン Sharpe 最大ドローダウン
既定MACD 12,26,9 +135.44% 0.9987 -32.10%
最適化MACD 16,35,9 +338.95% 1.6079 -21.65%
MACD+Fear & Greed+3%ストップ グロス+423.22% コスト控除前系列1.7001 シミュレーション-15.66%
最終コスト推定 ネット+383.97% 再計算待ち -16.25%

追加実験には、資金調達率フィルター、オンチェーンのアクティブアドレス、出来高、マルチタイムフレーム確認、ショート、動的ポジションサイジングが含まれます。パフォーマンスが低下した分岐もNotebookに残しています。


🤖 機械学習シグナル

予測対象 頻度 サンプル数 正解率 読み方
5日リターンが1%超 日次 1,123 51% ランダムに近い
10日リターンがプラス 日次 1,123 45% ランダム以下
24時間価格方向 時間足 28,217 47% ランダムに近い
24時間ボラティリティ水準 時間足 28,217 67% 探索段階。閾値に全サンプルを使用

ボラティリティ分類器はリスクフィルターとしても検証されました。分類スコアは比較的高かったものの、高頻度戦略の手数料問題は解消されませんでした。


⚡ インストール

保存されたNotebookは最後にPython 3.13.5カーネルで実行されています。

git clone https://github.com/okht/quant-research.git
cd quant-research

python -m venv .venv
source .venv/bin/activate
python -m pip install jupyterlab pandas numpy matplotlib akshare ccxt requests xgboost scikit-learn

jupyter lab

Windows PowerShellでは、次のコマンドで環境を有効化します。

.\.venv\Scripts\Activate.ps1

このリポジトリにはロックファイルも自動環境チェックもありません。パッケージの動作はバージョンによって異なる場合があります。


🚀 調査を再現する

推奨する閲覧・実行順序:

順序 Notebook 目的
1 01_data/01_data_cleaning.ipynb 中国A株データの取得、クリーニング、最初のファクター検証
2 02_factors/02_factor_ictest.ipynb モメンタム、リバーサル、売買回転率、合成ファクターのIC検定
3 03_backtest/03_backtest.ipynb 中国A株バックテスト、リスク管理、ポジションサイジング、アトリビューション
4 03_backtest/03_roe_factor.ipynb ROEデータ実験
5 04_crypto/01_crypto_data.ipynb 暗号資産データ、タイミング戦略、検証、コスト確認
6 02_factors/04_ml_factor.ipynb 暗号資産データスナップショットを使うXGBoost実験

一部のセルはコミット済みCSVスナップショットを読み込み、他のセルは公開市場データのエンドポイントを呼び出します。Binance資金調達率セクションを更新する際、現在は127.0.0.1:7897のローカルプロキシを前提としています。別の環境で再実行する前に、このプロキシ設定を削除または調整してください。

Notebookには連続した探索的セルが含まれます。カーネルを再起動して慎重に実行し、後続セルが引き継ぐ変数とデータ期間を確認してください。


📐 手法と前提

項目 現在の実装
シグナルのタイミング 戦略シグナルは通常、リターンへ適用する前に1期間シフト
BTC取引コスト 最終推定ではシグナル変更時に0.1%を控除
スリッページとスプレッド 未考慮
ストップロス 日次戦略リターンを選択した閾値で切り詰めてシミュレーション
パラメーター探索 複数のMACDグリッドを検証し、全サンプルとウォークフォワードの両結果を保持
中国A株ユニバース 現在のCSI 300構成銘柄を取得して構築し、生存者バイアスの可能性あり
MLボラティリティラベル 全サンプルの中央値閾値を使い、テスト期間の情報が漏れている
再現性 データスナップショットと出力をコミット。依存関係のバージョンは固定していない

これらの前提は結果に大きく影響します。本番品質の評価には、ポイント・イン・タイムのユニバース、明確な学習・検証・テスト境界、スリッページ、執行制約、コスト控除後リスク指標、独立した再実行が必要です。


🗂 データスナップショット

ファイル 行数 対象期間または用途
03_backtest/close_data.csv 781 × 296銘柄 中国A株終値パネル
03_backtest/volume_data.csv 781 × 296銘柄 中国A株売買回転率パネル
03_backtest/roe_data.csv 781 × 46銘柄 部分的なROEパネル
04_crypto/btc_daily.csv 1,183 BTC/USDT日次、2023-01-01 → 2026-03-28
04_crypto/btc_1h.csv 28,385 BTC/USDT時間足、2023-01-01 → 2026-03-28
04_crypto/btc_funding_full.csv 7,174 BTC無期限先物の資金調達率
04_crypto/btc_fng.csv 2,000 Fear & Greed Index
04_crypto/btc_active_addr.csv 2,000 オンチェーン・アクティブアドレスのスナップショット
04_crypto/crypto_close.csv 1,183 × 10銘柄 複数暗号資産の終値パネル

コミット済み市場データには、ライセンス、再配布、改訂、タイムスタンプに関する注意点があります。他の場所で再利用する前に、提供元の利用条件を確認してください。


📂 プロジェクト構成

quant-research/
├── README.md
├── README_CN.md
├── 01_data/
│   └── 01_data_cleaning.ipynb
├── 02_factors/
│   ├── 02_factor_ictest.ipynb
│   └── 04_ml_factor.ipynb
├── 03_backtest/
│   ├── 03_backtest.ipynb
│   ├── 03_roe_factor.ipynb
│   ├── close_data.csv
│   ├── volume_data.csv
│   └── roe_data.csv
└── 04_crypto/
    ├── 01_crypto_data.ipynb
    ├── btc_daily.csv
    ├── btc_1h.csv
    ├── btc_funding_full.csv
    ├── btc_fng.csv
    ├── btc_active_addr.csv
    └── crypto_close.csv

現在、リポジトリに02_live_trading.ipynbまたはライブ執行モジュールはありません。


📌 制約

  • このリポジトリは、過去データと探索的Notebookで構成された調査アーカイブです。
  • 全サンプル結果には、モデル選択とパラメーター選択のリスクがあります。
  • 最終的なコスト控除後BTCリターンと報告Sharpeは、異なるリターン系列に基づきます。
  • 日次ストップモデルは、日中の価格経路、ギャップ、板の厚み、スプレッド、スリッページを考慮しません。
  • 厳しすぎる日次リターンのクリッピングはシミュレーションリターンを機械的に膨らませる可能性があり、実行可能なストップロス動作を表しません。
  • 中国A株ユニバースには生存者バイアスが含まれる可能性があります。
  • MLボラティリティラベルには全データセットの情報が使われています。
  • データ提供者が履歴を改訂した場合や依存関係が変わった場合、保存出力と異なる結果になる可能性があります。
  • ブローカー連携、注文管理、リスクサービス、監視、ライブ取引の安全対策は含まれません。

調査・教育目的に限ります。投資助言や本番取引システムは提供していません。


前提と失敗を確認できる状態に保つことで、調査結果は役に立つ。


Maintained by okht