Walk-forward rebalance backtest chạy hoàn toàn trong năm 2025, dùng các model qua NVIDIA NIM để tạo absolute views (LLM-BLM) và relative pairwise views (PairBL / RelView-BL). Tại mỗi rebalance, LLM và optimizer được chạy lại với cửa sổ formation là ~252 phiên gần nhất (khoảng 1 năm, gồm 2024-H2 và 2025), rồi giữ nguyên bộ trọng số cho N phiên kế tiếp. Kết quả là một đường NAV liên tục cho mỗi method ở mỗi chu kỳ holding period.
Trong các bảng, in đậm là giá trị tốt nhất cho metric đó và gạch chân là tốt thứ hai (với drawdown/recovery, giá trị thấp hơn là tốt hơn).
| Model | Trạng thái | Ghi chú |
|---|---|---|
| GPT-OSS-20B | ✅ Chạy xong | Bảng kết quả chi tiết bên dưới |
| GPT-OSS-120B | ✅ Chạy xong | So sánh PairBL chi tiết: experiments/nvidia_nim_2025_walkforward_120b/PAIRBL_COMPARISON.md |
| Llama-3.1-8B | ✅ Chạy xong | Knowledge cutoff Dec 2023 (trước 2025, tránh leakage) |
| Llama-3.1-70B | ✅ Chạy xong | Knowledge cutoff Dec 2023 (trước 2025, tránh leakage) |
| Llama-3.3-70B | ~80-300s/call, không khả thi (~1-3 ngày) | |
| Qwen3-Next-80B | ❌ Không tồn tại | 404 Gone trên NVIDIA NIM |
| Mistral Medium 3.5-128B | ❌ Hết hạn | EOL 2026-08-07 (410 Gone) |
| Mixtral 8x7B | ❌ Hết hạn | EOL 2026-07-27 (410 Gone) |
Điểm nổi bật của GPT-OSS-120B: PairBL đạt Sharpe 3.09 ở Cross-Asset ETFs 30 ngày (GPT-OSS-20B: 2.13) và Sharpe 2.27 ở US Technology 60 ngày. Llama-3.1-70B dẫn đầu cumulative return PairBL ở US Technology 30 ngày (81.6%) và US Financials 30 ngày (36.2%).
Đường NAV PairBL (RelView-BL) của 4 model:
GPT-OSS-20B (xanh dương), GPT-OSS-120B (cam), Llama-3.1-8B (xanh ngọc),
Llama-3.1-70B (hồng). Dữ liệu tổng hợp tại results/nav_4models_2025/.
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 81.6% | 104.7% | 41.6% | 1.93 | 3.05 | 4.50 | -23.3% | 1.82 | 7 |
| MVO | 50.4% | 63.2% | 32.5% | 1.67 | 2.66 | 3.40 | -18.6% | 1.50 | 7 |
| EW | 39.1% | 48.5% | 29.0% | 1.51 | 2.33 | 2.48 | -19.5% | 1.39 | 7 |
| LLM-BLM (GPT-OSS-20B) | 44.3% | 55.3% | 30.7% | 1.59 | 2.47 | 2.98 | -18.6% | 1.44 | 7 |
| PairBL (GPT-OSS-20B) | 78.6% | 100.6% | 33.6% | 2.24 | 3.63 | 5.88 | -17.1% | 1.79 | 7 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -5.5% | 43 | 23 | 26.3% | 0.23 | 60.5% | 0.94 | 1.43 | -3.9% | -5.7% | -7.1% | -8.3% | -5.9% |
| MVO | -4.4% | 46 | 23 | 20.4% | 0.19 | 59.0% | 0.95 | 1.36 | -3.1% | -4.4% | -4.7% | -5.9% | -4.6% |
| EW | -3.7% | 46 | 23 | 18.8% | 0.20 | 62.9% | 0.80 | 1.35 | -2.5% | -4.1% | -5.2% | -6.5% | -4.2% |
| LLM-BLM (GPT-OSS-20B) | -4.1% | 46 | 23 | 19.7% | 0.19 | 59.5% | 0.91 | 1.34 | -2.7% | -4.1% | -4.2% | -5.8% | -4.3% |
| PairBL (GPT-OSS-20B) | -4.5% | 44 | 21 | 20.7% | 0.17 | 59.0% | 1.04 | 1.49 | -3.4% | -4.3% | -4.6% | -5.3% | -4.4% |
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 36.2% | 44.9% | 29.0% | 1.42 | 2.01 | 2.41 | -18.6% | 1.36 | 7 |
| MVO | 21.5% | 26.3% | 25.4% | 1.05 | 1.43 | 1.51 | -17.5% | 1.21 | 7 |
| EW | 23.9% | 29.4% | 22.3% | 1.27 | 1.74 | 1.94 | -15.1% | 1.24 | 7 |
| LLM-BLM (GPT-OSS-20B) | 30.4% | 37.5% | 21.2% | 1.61 | 2.36 | 2.90 | -12.9% | 1.30 | 7 |
| PairBL (GPT-OSS-20B) | 32.9% | 40.7% | 28.3% | 1.35 | 1.88 | 2.19 | -18.6% | 1.33 | 7 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -3.4% | 46 | 25 | 20.6% | 0.19 | 59.0% | 0.91 | 1.32 | -2.5% | -4.5% | -5.1% | -7.4% | -4.7% |
| MVO | -3.2% | 35 | 28 | 18.6% | 0.17 | 61.0% | 0.79 | 1.23 | -2.3% | -4.1% | -4.7% | -6.8% | -4.3% |
| EW | -2.6% | 32 | 23 | 16.2% | 0.15 | 58.1% | 0.92 | 1.28 | -2.0% | -3.5% | -4.1% | -6.1% | -3.7% |
| LLM-BLM (GPT-OSS-20B) | -2.7% | 52 | 17 | 14.4% | 0.13 | 57.6% | 0.99 | 1.35 | -1.8% | -3.1% | -3.4% | -5.1% | -3.2% |
| PairBL (GPT-OSS-20B) | -3.5% | 46 | 25 | 20.3% | 0.19 | 59.5% | 0.88 | 1.30 | -2.5% | -4.4% | -5.2% | -7.4% | -4.6% |
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 24.6% | 30.2% | 17.7% | 1.58 | 2.36 | 2.21 | -13.6% | 1.25 | 7 |
| MVO | 31.3% | 38.7% | 12.2% | 2.73 | 4.17 | 5.61 | -6.9% | 1.31 | 7 |
| EW | 18.7% | 22.9% | 11.7% | 1.82 | 2.71 | 2.41 | -9.5% | 1.19 | 7 |
| LLM-BLM (GPT-OSS-20B) | 21.5% | 26.4% | 12.0% | 2.02 | 3.01 | 3.14 | -8.4% | 1.22 | 7 |
| PairBL (GPT-OSS-20B) | 33.1% | 40.9% | 16.7% | 2.13 | 3.17 | 3.38 | -12.1% | 1.33 | 7 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -1.9% | 32 | 23 | 11.8% | 0.14 | 57.1% | 1.04 | 1.39 | -1.5% | -2.6% | -2.9% | -4.4% | -2.7% |
| MVO | -1.3% | 16 | 11 | 8.0% | 0.07 | 61.4% | 1.00 | 1.59 | -1.1% | -1.8% | -2.0% | -2.4% | -1.8% |
| EW | -1.2% | 27 | 24 | 7.9% | 0.10 | 61.9% | 0.88 | 1.44 | -1.0% | -1.7% | -1.9% | -2.9% | -1.8% |
| LLM-BLM (GPT-OSS-20B) | -1.3% | 28 | 11 | 8.0% | 0.08 | 61.0% | 0.91 | 1.42 | -1.0% | -1.6% | -2.2% | -2.6% | -1.7% |
| PairBL (GPT-OSS-20B) | -1.8% | 26 | 23 | 11.3% | 0.12 | 61.4% | 0.95 | 1.51 | -1.4% | -2.4% | -3.0% | -4.3% | -2.5% |
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 80.8% | 129.1% | 42.3% | 2.17 | 3.54 | 5.54 | -23.3% | 1.81 | 3 |
| MVO | 44.3% | 67.1% | 32.3% | 1.75 | 2.86 | 3.62 | -18.6% | 1.44 | 3 |
| EW | 34.9% | 52.1% | 30.1% | 1.54 | 2.42 | 2.66 | -19.5% | 1.35 | 3 |
| LLM-BLM (GPT-OSS-20B) | 73.6% | 116.5% | 39.4% | 2.16 | 3.52 | 5.40 | -21.6% | 1.74 | 3 |
| PairBL (GPT-OSS-20B) | 69.0% | 108.4% | 41.0% | 1.99 | 3.25 | 4.88 | -22.2% | 1.69 | 3 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -4.9% | 33 | 23 | 25.9% | 0.23 | 60.0% | 1.00 | 1.51 | -3.4% | -5.7% | -7.4% | -8.9% | -5.7% |
| MVO | -4.1% | 46 | 23 | 19.7% | 0.19 | 60.0% | 0.93 | 1.39 | -2.9% | -4.3% | -4.8% | -6.5% | -4.3% |
| EW | -3.6% | 46 | 23 | 19.2% | 0.20 | 62.2% | 0.83 | 1.36 | -2.5% | -4.3% | -5.6% | -7.1% | -4.3% |
| LLM-BLM (GPT-OSS-20B) | -4.7% | 33 | 23 | 24.1% | 0.22 | 60.6% | 0.98 | 1.50 | -3.4% | -5.3% | -6.5% | -7.9% | -5.3% |
| PairBL (GPT-OSS-20B) | -4.7% | 33 | 23 | 25.2% | 0.22 | 59.4% | 0.99 | 1.45 | -3.5% | -5.4% | -6.8% | -8.2% | -5.4% |
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 19.1% | 27.8% | 30.5% | 0.96 | 1.33 | 1.49 | -18.6% | 1.19 | 3 |
| MVO | 12.2% | 17.5% | 27.1% | 0.73 | 0.99 | 1.00 | -17.5% | 1.12 | 3 |
| EW | 12.0% | 17.2% | 23.5% | 0.79 | 1.07 | 1.14 | -15.1% | 1.12 | 3 |
| LLM-BLM (GPT-OSS-20B) | 8.9% | 12.7% | 26.6% | 0.58 | 0.80 | 0.76 | -16.8% | 1.09 | 3 |
| PairBL (GPT-OSS-20B) | 20.6% | 30.0% | 29.4% | 1.04 | 1.44 | 1.68 | -17.9% | 1.21 | 3 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -3.6% | 46 | 25 | 22.0% | 0.19 | 57.8% | 0.88 | 1.20 | -2.7% | -4.9% | -5.6% | -8.5% | -4.9% |
| MVO | -3.2% | 32 | 25 | 20.0% | 0.17 | 58.3% | 0.82 | 1.15 | -2.6% | -4.5% | -5.3% | -7.8% | -4.5% |
| EW | -2.8% | 32 | 23 | 17.4% | 0.15 | 57.2% | 0.87 | 1.17 | -2.1% | -3.9% | -4.7% | -7.0% | -3.9% |
| LLM-BLM (GPT-OSS-20B) | -3.1% | 35 | 25 | 19.4% | 0.17 | 56.7% | 0.86 | 1.12 | -2.4% | -4.4% | -5.0% | -7.8% | -4.4% |
| PairBL (GPT-OSS-20B) | -3.5% | 32 | 25 | 21.3% | 0.18 | 60.0% | 0.82 | 1.22 | -2.6% | -4.8% | -5.7% | -8.2% | -4.8% |
Core metrics:
| Method | Cum. return | Ann. return | Ann. vol | Sharpe | Sortino | Calmar | Max DD | Final NAV | Rebal |
|---|---|---|---|---|---|---|---|---|---|
| BL | 15.6% | 22.4% | 18.1% | 1.21 | 1.80 | 1.65 | -13.6% | 1.16 | 3 |
| MVO | 20.8% | 30.3% | 11.7% | 2.32 | 3.52 | 4.39 | -6.9% | 1.21 | 3 |
| EW | 13.9% | 19.9% | 12.2% | 1.55 | 2.31 | 2.10 | -9.5% | 1.14 | 3 |
| LLM-BLM (GPT-OSS-20B) | 20.7% | 30.2% | 14.4% | 1.90 | 2.91 | 3.12 | -9.7% | 1.21 | 3 |
| PairBL (GPT-OSS-20B) | 24.7% | 36.1% | 17.5% | 1.85 | 2.79 | 3.01 | -12.0% | 1.25 | 3 |
Drawdown, downside & tail-risk metrics:
| Method | Avg DD | Max DD days | Recovery days | Downside dev | Ulcer index | Win rate | Gain/Loss | Profit factor | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% | Worst 5% avg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BL | -1.9% | 32 | 23 | 12.2% | 0.14 | 56.7% | 0.99 | 1.30 | -1.3% | -2.7% | -3.3% | -5.2% | -2.7% |
| MVO | -1.2% | 17 | 13 | 7.7% | 0.07 | 61.1% | 0.95 | 1.49 | -1.0% | -1.7% | -2.0% | -2.6% | -1.7% |
| EW | -1.3% | 27 | 24 | 8.2% | 0.10 | 60.6% | 0.90 | 1.38 | -1.0% | -1.9% | -2.2% | -3.4% | -1.9% |
| LLM-BLM (GPT-OSS-20B) | -1.3% | 36 | 13 | 9.4% | 0.10 | 61.1% | 0.91 | 1.43 | -1.3% | -2.1% | -2.5% | -3.7% | -2.1% |
| PairBL (GPT-OSS-20B) | -1.9% | 32 | 23 | 11.6% | 0.12 | 61.7% | 0.89 | 1.44 | -1.3% | -2.5% | -2.8% | -5.0% | -2.5% |
| Method | Loại |
|---|---|
| BL | Baseline (Black-Litterman equilibrium prior) |
| MVO | Baseline (Mean-Variance Optimization) |
| EW | Baseline (Equal Weight) |
| LLM-BLM (GPT-OSS-20B) | LLM absolute views + Black-Litterman |
| PairBL (GPT-OSS-20B) | LLM pairwise relative views + RelView-BL |
run.py— thu thập LLM views (absolute) và relative pairwise viewscollect_relative_views.py— thu thập sparse pairwise LLM viewsrelview_bl.py— RelView-BL (PairBL) implementationrun_nvidia_nim_walkforward_2025.py— walk-forward 2025 backtest runnerbacktest_compare.py— backtest và so sánh nhiều phương phápportfolio_backtest.py— shared realized-return metricsbaselines.py— baseline portfolio strategies (BL/MVO/EW)responses/— LLM predictions và viewsresults/— kết quả đánh giáyfinance/— dữ liệu giá cổ phiếuexperiments/nvidia_nim_2025_walkforward/— kết quả backtest 2025 (README chi tiết)
| Tham số | Giá trị |
|---|---|
| Năm backtest | 2025 (01-02 → 12-31) |
| Holding periods | 30 ngày và 60 ngày |
| Formation look-back | ~252 phiên giao dịch (~1 năm) |
| Rebalance đầu tiên | sau ≥40 phiên formation |
| Model | openai/gpt-oss-20b (NVIDIA NIM) |
| Repeats / min calls | 2 / 2 |
| Max pairs (views) | 15 |
| Temperature | 0.3 |
| Calibration | none |
| Tau | 0.025 |
| Risk aversion | 0.1 |
| Max weight | 15% |
| Transaction cost | 10 bps |
| Reasoning effort | low (ổn định output) |
$env:NVIDIA_API_KEY = "<key>"
py run_nvidia_nim_walkforward_2025.py --dry-run # ước lượng số calls
py run_nvidia_nim_walkforward_2025.py # chạy đầy đủ- Các LLM calls được thực hiện sau cửa sổ test với tên asset nhận diện được, nên kết quả có thể chịu ảnh hưởng của training-cutoff hoặc leakage phía nhà cung cấp dù pipeline số là point-in-time.
- Đây là kết quả nghiên cứu, không phải bằng chứng cho hiệu suất live.





















