Methodology Data Sources

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.

Example: 2-for-1 split → all pre-split prices divided by 2.

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.

Example: HK$0.50 dividend → pre-ex-date prices reduced by HK$0.50.

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.

Example: Rights at 30% discount → adjustment factor applied to history.

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.

Example: Acquired at HK$15/share → final trade recorded, symbol closed.

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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

Every trading day EOD OHLCV data for all primary markets (HK, US)
Every trading day Dividend & split announcement parsing
Weekly Secondary markets (EU, JP, AU, SG)
Weekly Alternative data refresh (VIX, yield curves)
Monthly Universe rebalancing — add new listings, mark delistings
Quarterly Full data audit — cross-validate against secondary sources

Report Data Disclosure

Every published report includes a data disclosure block specifying:

Data cut-off date (last trading day included)
Source provider name(s)
Any known data gaps or exclusions
Adjustment method (total-return vs. price-return)
Universe definition (index constituent vs. broad market)