Compare aligned returns, not price levels
This tracker requests historical daily prices for two to six preset assets, intersects their date labels, and calculates log returns between consecutive common dates. Rolling Pearson correlations describe how those returns varied together. A separate chart summarizes each return series’ historical volatility. The tool does not calculate correlation between volatility series.
- Choose the asset set, start and end dates, and a 20, 30, 60 or 90-return window. Click Analyze to apply the draft controls. No market-data request runs automatically on page load.
- Read the applied asset list and actual common date range. A failed or empty request stops the whole comparison. Invalid prices and conflicting duplicate dates are errors; missing prices never become zero returns.
- Inspect the rolling chart and latest-window matrix together. Current means the last returned common date, which may precede the requested end date. Retrieval time is not a live-market timestamp.
- Repeat with a different window or date range, recording the changed sample. Adding one asset can shorten the common history used for all pairs.
What a common date does and does not align
Suppose one series has Friday, Saturday, Sunday and Monday prices, while another has only Friday and Monday. The intersection contains Friday and Monday, so both use a Friday-to-Monday return. The weekend moves are combined, not filled with zeros. Those date labels still do not prove both markets closed at the same instant.
All-crypto selections use √365 annualization; any selection containing a non-crypto asset uses √252. This is a disclosed scaling convention, not an exchange-calendar reconstruction. Missing sessions, holidays and asynchronous closes affect interpretation. The page does not convert currencies, verify futures-roll adjustments or establish a common dividend-adjusted total-return series.
Reproduce the statistics
For consecutive aligned closes, r[t] = ln(P[t]) − ln(P[t−1]). For each window, Pearson correlation is the sum of centered cross-products divided by the square root of the two centered sums of squares. The NIST correlation reference defines this linear association and requires paired series of equal length.
As a hypothetical check, return vectors (−0.01, 0, 0.01) and (−0.02, 0, 0.02) have correlation +1. Reversing the second vector gives −1. A constant vector has zero centered sum of squares, so its correlation is undefined; the matrix displays N/A, not zero. Zero correlation means no linear association in this sample, not independence or guaranteed diversification.
Historical volatility uses the sample standard deviation, with n − 1 in the denominator, multiplied by the square root of the stated annualization factor and by 100. For (−0.01, 0, 0.01), sample standard deviation is 0.01: the annualized display is 15.8745% at 252 periods, or 19.1050% at 365. A window of n returns requires n + 1 common closes. The tool requires at least n + 5 common closes to display five rolling estimates.
Keep the portfolio conclusion separate
A correlation coefficient does not include position sizes or calculate portfolio losses. Even a low historical correlation can coexist with simultaneous losses, and relationships can change. Investor.gov’s diversification guidance notes that diversification does not guarantee protection when markets decline.
The charts do not estimate expected returns, establish causation, detect a regime before it occurs or produce a hedge ratio. Green and red encode positive and negative association only. Before using any result in a trading study, check instrument identity, quote currency, sampling times, data adjustments and costs independently.
Data source and update limits
The page calls FMP historical-price light endpoints for each asset type; the stock endpoint documentation describes dated prices and volume. Availability varies by symbol and response. The application caches historical requests ending before the current UTC date for up to 24 hours, and current-date requests for up to 15 minutes. Another click can reuse that cached response; this is not a real-time monitoring service.