Chapter 1
Data Sources & Coverage
Every backtest is only as good as the data it runs on. This chapter documents exactly where our market data comes from, how we validate it, and what coverage you can expect in every report.
1. Types of Data We Collect
Our backtests rely on three categories of market data. Each category is sourced, validated, and stored independently to prevent cross-contamination errors.
OHLCV Price Data
Primary backtest feed
End-of-day Open, High, Low, Close, and Volume data from verified exchange feeds. This is the core data used in every signal calculation and trade simulation.
- ● Adjusted close prices (split & dividend adjusted)
- ● Unadjusted close for reference
- ● Daily volume in shares and notional
- ● VWAP where available
- ● Intraday data for select strategies (1-min, 5-min, 15-min, hourly)
Index & Benchmark Data
Performance comparison
Index levels and constituent weights used for benchmark comparison, beta calculation, and market regime detection. We track 30+ major indices across 12 countries.
- ● Hang Seng Index (HSI) & sub-indices
- ● S&P 500, NASDAQ-100, Russell 2000
- ● MSCI World, MSCI Emerging Markets
- ● FTSE 100, DAX 40, CAC 40
- ● Nikkei 225, TOPIX, Kospi
Alternative Data
Context & regime signals
Supplementary datasets used for market regime classification, volatility context, and strategy filtering. Not used directly in trade signals — only for environmental context.
- ● VIX and regional volatility indices
- ● Treasury yield curves (US, HK, JP)
- ● Sector ETF relative flows
- ● Earnings calendar & ex-dividend dates
- ● Central bank rate decisions
2. Exchange & Market Coverage
We maintain verified data feeds for the following exchanges. Coverage depth varies by market — Hong Kong and US markets have the most complete history.
| Exchange | Market | History | Universe Size | Status |
|---|---|---|---|---|
| HKEX | Hong Kong Equities | 20+ years | 2,500+ symbols | Primary |
| NYSE | US Equities | 20+ years | 3,000+ symbols | Primary |
| NASDAQ | US Equities | 20+ years | 3,500+ symbols | Primary |
| TSE (Japan) | Japanese Equities | 15+ years | 3,800+ symbols | Secondary |
| LSE | UK Equities | 15+ years | 2,000+ symbols | Secondary |
| SSE / SZSE | China A-Shares | 10+ years | 5,000+ symbols | Secondary |
| ASX | Australian Equities | 10+ years | 2,200+ symbols | Secondary |
| SGX | Singapore Equities | 10+ years | 700+ symbols | Secondary |
| HKEX Crypto | HK-listed Crypto ETFs | 3+ years | 15+ symbols | Emerging |
| CME/COMEX | US Futures (Commodities) | 15+ years | Major contracts | Secondary |
3. Corporate Action Adjustments
Raw price data contains distortions from corporate actions. A stock trading at HK$10 before a 1:5 split appears to have dropped 80% overnight — but no actual loss occurred. Backtesting on unadjusted data produces completely wrong results. We apply the following adjustments retroactively to all historical price series.
Stock Splits & Reverse Splits
When a company splits its shares (e.g. 2:1), the historical price series is multiplied by the split ratio so the chart shows a continuous, comparable price history.
Dividend Adjustments
Cash dividends cause an instantaneous price drop on ex-date that has nothing to do with strategy performance. We use total-return adjusted prices that reinvest dividends.
Rights Issues & Capital Raises
Rights issues at a discount to market price cause dilution-related price drops. These are adjusted out to prevent false sell signals on ex-date.
Mergers, Acquisitions & Delistings
When a company is acquired or delisted, we record the final transaction price and mark the symbol as terminated. Delisted symbols remain in the historical universe.
4. Data Validation Pipeline
Raw data feeds contain errors: missing bars, extreme outliers, zero-volume days, and timestamp mismatches. Before any data enters our backtest engine, it passes through a six-stage automated validation pipeline.
Ingestion & Deduplication
All incoming records are checked against existing entries using a composite key (symbol + date). Duplicate rows from feed redundancy are discarded. Each trading day produces exactly one OHLCV record per symbol.
OHLC Consistency Check
We verify that H ≥ max(O,C), L ≤ min(O,C), and all values are positive. Any bar failing this test is flagged for manual review. Approximately 0.02% of raw bars fail this check annually — usually data feed errors.
Outlier Detection
Single-day price moves exceeding ±50% trigger an automatic comparison against exchange announcements. If no corporate action explains the move, the bar is quarantined. This catches fat-finger data entries and feed glitches.
Volume Sanity Check
Zero-volume days are cross-referenced against the exchange trading calendar. Genuine market holidays are accepted; zero volume on a confirmed trading day flags a potential data gap. We backfill from a secondary source where possible.
Continuity & Gap Analysis
For each symbol we verify continuous coverage over the stated backtest period. Gaps longer than 5 consecutive trading days (excluding known exchange closures) are documented in the report footnotes.
Adjustment Factor Verification
After applying corporate action adjustments, the resulting adjusted price series is checked for remaining step-changes. Any discontinuity not explained by a known event triggers a second-pass correction using a redundant data source.
5. Update Cadence & Data Freshness
Reports are backtested on data up to a specific cut-off date, clearly stated in each report header. Our data pipeline runs on the following schedule:
Automated Pipeline Schedule
Report Data Disclosure
Every published report includes a data disclosure block specifying: