Impact-Site-Verification: 0eedbe8d-4e05-4893-8456-85377301e322

Data Sources

  • Crypto prices: CoinGecko (USD spot prices). Historical backfill via CoinMarketCap CSV exports for some pre-2023 series.
  • Equities/ETFs: Tiingo (daily close and adjusted close, split/dividend adjusted).
  • Precious metals (spot): Stooq historical data for XAU, XAG, XPT (gold, silver, platinum).
  • Risk-free rate: FRED 3‑Month Treasury (DGS3MO). This series updates on U.S. business days; we average available values over the analysis window.

We store at most one row per asset per date. If data is re-ingested, the newer value overwrites the older value for that date.

Price Series & Adjustments

For equities and ETFs, we use adjusted close when available to reflect dividends and splits. For crypto assets, we use a daily USD spot series from CoinGecko and treat the last observed price for each UTC date as that day’s “close”. All returns are computed from daily closing prices.

Crypto markets trade 24×7, while equities trade on exchange business days. This shows up in both “how we align dates” and “how we annualize risk”.

Calendars, Alignment & Coverage

Different assets have different trading calendars. We use two approaches depending on the metric:

  • Pairwise metrics (need both assets on the same dates): We use the intersection of dates (shared timestamps) and do not forward-fill missing prices. For crypto vs. trading-day assets, weekend moves are carried into the next shared-date return (Friday → Monday).
  • Single-asset metrics (can be computed per asset): We use each asset’s native series. This avoids forcing crypto onto a 252‑day calendar (which would smooth away weekend moves).

Returns

For “simple returns” we use percent changes:

rt=PtPt11r_t = \frac{P_t}{P_{t-1}} - 1

Total return is the percentage change from the first to the last available price in the window. We also compute trailing returns for standard lookbacks: 30, 90, 180, and 365 calendar days.

Trailing returns use the closest available price on or before the lookback date. If an asset does not have enough data for a lookback window, the return is shown as N/A.

For distribution and tail-risk analysis, we use log returns:

t=ln(PtPt1)\ell_t = \ln\left(\frac{P_t}{P_{t-1}}\right)

Log returns are additive across time (multi-day log return is a sum), and they line up with the common “lognormal prices” baseline model. For small day-to-day moves, log returns and simple returns are very close.

Volatility

Volatility is the annualized standard deviation of daily simple returns:

σannual=std(rt)×N\sigma_{\text{annual}} = \text{std}(r_t) \times \sqrt{N}

Annualization uses the asset calendar: 252 for trading-day assets (equities/ETFs) and 365 for daily assets (crypto and stablecoins). For other series (for example some commodities), we infer the effective frequency from the observed data.

Daily volatility is derived by dividing annualized volatility by the square root of the annualization factor. Comparisons align overlapping dates, but annualization still uses the asset calendar above.

Sharpe Ratio

Sharpe ratio is return per unit of total risk:

Sharpe=E[r]rfσ\text{Sharpe} = \frac{E[r] - r_f}{\sigma}

We annualize expected return using the arithmetic mean of daily simple returns (mean(r_t) × N) and annualize volatility using the same N. This “expected return” input is not the same thing as CAGR (compound annual growth rate).

The risk-free rate is the average 3-month Treasury rate (FRED series DGS3MO) over the analysis period, expressed as an annual rate. For example, if the average rate during the period was 4.5%, we use 0.045.

Max Drawdown & Recovery

Max drawdown is the largest peak-to-trough percentage decline during the analysis window. Recovery time is the number of days from the trough until the price reaches or exceeds the prior peak.

Drawdown is computed from the price series (not returns). On compare pages, we compute drawdowns over the shared date range (same start/end dates) so both assets are evaluated over the same window.

Correlation

Correlation is computed using Pearson correlation on daily simple returns with a rolling window of 30 days. We report:

  • Current: The most recent 30-day rolling correlation value.
  • Average: The mean of all 30-day rolling correlation values across the full analysis period.
  • Min/Max: The historical range of the 30-day rolling correlation.

Correlation calculations use shared dates for the two assets (no forward filling). The interpretation (strongly/moderately/weakly correlated) is based on the average rolling correlation over the full period.

When one asset trades 24×7 and the other doesn’t, a “daily” return here is the move from one shared close to the next (so Friday → Monday includes weekend volatility).

For S&P 500 correlations shown in the comparison table, we use a variable window (30-90 days depending on data availability) and report the average correlation over the overlapping period.

Sortino Ratio

Sortino ratio is similar to Sharpe but only penalizes downside volatility, not upside gains. It is calculated as (annualized return minus risk-free rate) divided by downside deviation.

Sortino=E[r]rfσdown\text{Sortino} = \frac{E[r] - r_f}{\sigma_{\text{down}}}

Downside deviation measures the volatility of returns that fall below the daily risk-free threshold (the "target return"). This makes Sortino more relevant for investors concerned with avoiding losses rather than total volatility—a large upside move doesn't hurt your Sortino ratio the way it would hurt your Sharpe.

Tail Risk & Distribution Shape

Some compare pages include an extra “tail risk” section based on daily log returns. This is aimed at questions like: “How fat are the tails?”, “Are extreme days mostly down or up?”, and “Do big downside days co-occur?”

  • Skew: whether the distribution leans toward bigger up days (positive skew) or bigger down days (negative skew).
  • Excess kurtosis: how fat the tails are versus a normal distribution (0 means “normal-like” tails).
  • Historical VaR (5%): the 5th percentile of daily log returns (a “loss threshold” on a bad day).
  • Expected Shortfall / CVaR (5%): the average daily log return on the worst 5% of days (what bad days look like on average, not just the cutoff).
  • Tail co-moves (2σ downside): conditional probability of a big down move in one asset given a big down move in the other. Thresholding is done on shared-close log returns (z-scores), while we display simple returns (%) for readability.

These metrics are noisy in short samples. When we show conditional tail probabilities, we include counts/denominators so you can see how much data is driving the estimate. For pairwise “co-move” analysis, returns are computed between consecutive shared dates (for example, a Friday-to-Monday return includes weekend moves).

Data Quality & Limitations

  • Data can be delayed, revised, or re-stated by upstream providers.
  • Crypto trades 24×7; equities/ETFs do not. Pairwise metrics use shared dates to avoid inventing data.
  • Adjusted close is used for equities/ETFs when available; crypto has no dividends or corporate actions.
  • We do not model transaction costs, taxes, funding rates, borrow costs, or slippage.
  • Gale Finance is for informational purposes only and does not provide investment advice.

Explore the Analysis

Start with our asset comparisons to see these metrics in action. Each comparison page includes correlation, returns, volatility, Sharpe, Sortino, and drawdown data.