Cross-asset correlations methodology
How portfolIQ computes rolling Pearson correlations across crypto, equities, ETF, commodities, and forex. What the confidence_score means, multi-currency support, and AI narrative layer.
Cross-asset correlations methodology
Disclaimer: Correlation data provided by portfolIQ is factual and statistical. It does not constitute financial advice, investment recommendations, or guidance on portfolio construction. Correlation is a backward-looking statistical measure — it does not predict future co-movement. Not financial advice. Methodology disclosed.
Overview
portfolIQ computes rolling Pearson correlations across asset classes using its internal derived price series. The /v1/correlations endpoint returns a pairwise correlation matrix — no raw source prices are ever exposed.
The methodology identifier in each API response is data_methodology: "pearson_rolling_v1".
Asset classes supported
| Asset class | Identifiers | Price source |
|---|---|---|
| Crypto (top 100) | CoinGecko ID (bitcoin, ethereum, …) | VWAP consensus (Binance, Bybit, OKX — internal derivative) |
| US equities (S&P 500 + Russell 2000) | Ticker (AAPL, MSFT, …) | stock_consensus_v1 (Tier 1 fusion — internal derivative) |
| ETF | Ticker (IWDA, QQQ, …) | stock_consensus_v1 (same engine) |
| Commodities (11 core) | Symbol (XAU, XAG, CL, …) | FRED (public domain) + metals.dev |
| Asia equities | Local ticker (7203, 005930, …) | EDINET / DART / TWSE — Tier 0 |
| Forex pairs | Currency pair reference | BoJ / HKMA / RBI / BoK / RBA / MAS / ECB (all Tier 0) |
All price series are normalised to the requested base_currency using Tier 0 FX rates before correlation is computed. This means a USD/EUR/JPY base currency change can produce meaningfully different correlation values for assets quoted in different native currencies.
Algorithm
1. Price series alignment
For each pair (asset_a, asset_b) in the requested asset list, portfolIQ:
- Fetches the internal derived daily close price series for each asset in the
base_currency. - Aligns both series to a common calendar of trading days within the requested
window(30d,90d,180d,365d). - Excludes days where either asset has no price data (market holiday or coverage gap). The resulting overlap is recorded as
observations.
2. Pearson correlation
The correlation coefficient is computed over the aligned log-return series:
r = Σ[(Ra - mean_Ra)(Rb - mean_Rb)] / sqrt[Σ(Ra - mean_Ra)² × Σ(Rb - mean_Rb)²]
Where Ra and Rb are the daily log-returns of assets A and B respectively over the aligned window.
Why log-returns? Log-returns are additive across time, better approximate a normal distribution for short windows, and reduce the influence of price-level differences between assets.
3. Confidence score
Each response includes a confidence_score (range 0.0 to 1.0) reflecting statistical reliability:
| Component | Penalty applied |
|---|---|
| Fewer observations than 70% of window length | Proportional reduction |
observations < 15 | Hard cap: max 0.40 |
| Missing price data on > 20% of aligned days | Additional −0.10 |
| Score range | Interpretation | Recommended use |
|---|---|---|
0.7 – 1.0 | High confidence | Production use |
0.5 – 0.69 | Moderate | Use with caution — flag in your application |
Below 0.5 | Low observation count | Not recommended for automated decisions |
The observations field in each matrix entry allows you to apply your own statistical significance test (e.g., Fisher z-transform, t-test for r ≠ 0).
4. Multi-currency support
base_currency is a first-class parameter. Supported values: USD, EUR, JPY, HKD, INR, KRW, AUD, SGD.
FX conversion uses end-of-day rates from Tier 0 central bank sources. All conversions are applied before return computation — meaning the correlation reflects co-movement as experienced by an investor in that base currency.
| Currency | FX source | Tier |
|---|---|---|
| EUR | European Central Bank (ECB SDW) | Tier 0 |
| JPY | Bank of Japan (BoJ) | Tier 0 |
| HKD | Hong Kong Monetary Authority (HKMA) | Tier 0 |
| INR | Reserve Bank of India (RBI) | Tier 0 |
| KRW | Bank of Korea (BoK) | Tier 0 |
| AUD | Reserve Bank of Australia (RBA) | Tier 0 |
| SGD | Monetary Authority of Singapore (MAS) | Tier 0 |
AI narrative layer — /v1/correlations/ai
The /v1/correlations/ai endpoint adds an interpretive layer on top of the statistical matrix. It does not modify the numerical output — it adds a narrative and an alerts[] array.
Models used:
| Task | Model | TTL cache |
|---|---|---|
| Screening for anomalous pairs (threshold breach) | Claude Haiku 4.5 | 6h |
| Macro regime narrative + cross-asset context | Claude Sonnet 4.6 | 6h |
Regime classification: risk-on / risk-off / structural-decorrelation. Inferred from the pattern of correlations across the matrix — not from external sentiment feeds.
Alerts: Generated when a pair crosses alert_threshold_high (default 0.8) or alert_threshold_low (default −0.3). Thresholds are configurable via query parameters.
Important: The AI narrative contextualises statistical observations. It does not recommend any portfolio action. portfolIQ is not a registered investment advisor. The model does not have authority over investment decisions.
Limitations
| Limitation | Detail |
|---|---|
| Max assets per request | 20. Above limit: HTTP 422 too_many_assets. |
| Historical window max | 365 days. Requests beyond this: HTTP 422 window_too_large. |
| Intraday correlations | Not available. EOD (end-of-day) prices only. |
| EU stocks OHLCV | UCITS ETF and EU equity price consensus: Sprint 32+. Correlations for EU equities may have lower confidence_score until coverage is complete. |
| China A-shares | Excluded Phase 1. See Asia stocks coverage. |
nonPermissibleRevenue | Not relevant for correlations. Methodology boundary: correlations-methodology.mdx does not cover halal screening. See Halal screening. |
What the API exposes
{
"data": {
"matrix": [
{
"asset_a": "bitcoin",
"asset_b": "AAPL",
"correlation": 0.41,
"window": "90d",
"observations": 87
}
],
"assets_requested": ["bitcoin", "AAPL", "XAU"],
"assets_resolved": ["bitcoin", "AAPL", "XAU"],
"base_currency": "USD",
"as_of_date": "2026-05-21",
"window": "90d"
},
"meta": {
"data_methodology": "pearson_rolling_v1",
"confidence_score": 0.91,
"licensed_for_commercial_use": true,
"computed_at": "2026-05-21T22:00:00Z",
"methodology_url": "https://portfoliq.io/docs/methodology/correlations-methodology"
}
}
licensed_for_commercial_use is true on all /v1/correlations responses. The correlation value is portfolIQ's own computed derivative — no raw Tier 1 price is exposed.
Related pages
- Multi-source fusion — how stock price consensus series are built (input to correlation)
- Multi-tier data sourcing — licensing framework and redistribution rights
- Asia stocks coverage — multi-currency, multi-exchange coverage
- API reference — full endpoint schema for
/v1/correlations
Not financial advice. Methodology disclosed. Correlations are statistical measures computed from historical data — they do not predict future co-movement and do not constitute investment signals. portfolIQ is not a registered investment advisor.