tradeblocks-wfa
Walk-forward analysis for trading strategies. Tests whether optimized parameters hold up on out-of-sample data. Use when checking parameter robustness, detecting potential overfitting, or validating a backtest.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Walk-Forward Analysis
Test whether strategy parameters hold up when applied to data the optimizer never saw.
What is Walk-Forward Analysis?
Walk-forward analysis (WFA) tests parameter robustness by:
- Dividing history into segments
- In-Sample (IS): The data used to find "optimal" parameters
- Out-of-Sample (OOS): Data the optimizer never saw, used to test those parameters
- Rolling forward: Repeat across the entire history
|------ IS Period 1 ------|-- OOS 1 --|
|------ IS Period 2 ------|-- OOS 2 --|
|------ IS Period 3 ------|-- OOS 3 --|
If OOS performance is close to IS performance, the parameters may be capturing real patterns. If OOS significantly underperforms, the parameters may be fitting to noise.
Prerequisites
- TradeBlocks MCP server running
- Block with sufficient trade history (50+ trades for meaningful analysis)
Process
Step 1: Select Strategy
Use list_blocks to show available blocks.
Ask:
- "Which backtest contains the strategy you want to analyze?"
- "Do you want to test a specific strategy or the full portfolio?"
Note the block ID and optional strategy filter for subsequent steps.
Step 2: Understand User Goals
Walk-forward analysis answers different questions:
| Goal | What to Look For |
|---|---|
| Test if parameters are robust | Overall WF efficiency, OOS vs IS degradation |
| Check for potential overfitting | High IS but low OOS performance |
| Evaluate consistency | How many OOS periods were profitable |
| Understand parameter sensitivity | Parameter stability across windows |
Ask: "What are you trying to understand about this strategy?"
Step 3: Run Analysis
Call run_walk_forward with the selected block.
Key parameters:
-
isWindowCount: Number of in-sample windows (default: 5) -
oosWindowCount: Number of out-of-sample windows (default: 1) -
optimizationTarget: Metric to optimize (default: sharpeRatio) -
minInSampleTrades: Minimum trades in IS period (default: 10) -
minOutOfSampleTrades: Minimum trades in OOS period (default: 3)
For shorter histories (< 100 trades):
- Consider reducing
isWindowCountto 3 - Lower minimum trade counts
For longer histories (> 500 trades):
- Consider
isWindowCountof 7+ - Can use explicit
inSampleDaysandoutOfSampleDaysfor more control
Step 4: Interpret Results
The tool returns a verdict with three components, each rated as "good", "moderate", or "concerning":
Walk-Forward Efficiency (degradationFactor):
- Measures how well IS performance transfers to OOS
- Calculated as: OOS Performance / IS Performance
| Efficiency | Rating | What It Suggests |
|---|---|---|
| >= 80% | Good | OOS retained most of IS performance |
| 60-79% | Moderate | Some degradation, but meaningful signal may remain |
| < 60% | Concerning | Significant gap between IS and OOS |
Thresholds based on Pardo's work, adjusted upward because TradeBlocks uses ratio metrics (Sharpe, profit factor) which should degrade less than raw returns.
Parameter Stability:
- Coefficient of variation < 30% = "good" (stable parameters)
- 30-50% variation = "moderate"
-
50% variation = "concerning" (parameters sensitive to data window)
Consistency Score:
- Percentage of OOS periods that were profitable
-
= 70% = "good"
- 50-70% = "moderate" (around random chance)
- < 50% = "concerning"
Step 5: Present Findings
Synthesize the analysis into what it reveals about the strategy:
Walk-Forward Results:
- Efficiency: [value]% ([rating]) - OOS retained [value]% of IS performance
- Stability: [rating] - Parameters [were consistent / showed variation] across windows
- Consistency: [value]% of OOS periods profitable ([rating])
- Overall verdict: [good/moderate/concerning]
What this suggests:
- [If efficiency is high]: OOS performance tracked IS reasonably well
- [If efficiency is low]: Significant gap between optimized and real-world performance
- [If stability is low]: Optimal parameters varied significantly between windows
- [If consistency is low]: Many OOS periods were unprofitable
Individual period breakdown (if relevant):
- Show IS vs OOS performance for each window
- Highlight any windows with unusual behavior
Present these as insights about what the historical data shows, not as trading advice.
Interpretation Reference
For detailed walk-forward concepts, see references/wfa-guide.md.
Related Skills
After walk-forward analysis:
-
/tradeblocks-health-check- Full metrics review -
/tradeblocks-risk- Position sizing analysis
Common Issues
"Insufficient trades for walk-forward analysis"
- Need at least 20 trades total
- Reduce window count or expand date range
Low consistency but decent efficiency:
- Small sample size causing noise
- Consider running with more windows if data permits
Individual periods show high variance:
- May indicate regime changes during the historical period
- The tool's
periodsarray shows per-window breakdown
Notes
- WFA tests parameter robustness, not profitability
- Strong WFA results don't guarantee future performance
- Weak WFA results suggest the optimization may be fitting to noise
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-31
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!