Skip to main content

Correlation Analysis for Crypto Trading Bot Portfolios

· 8 min read
VolatiCloud Team
VolatiCloud

Most crypto portfolios are diversified in name only. A trader runs five bots across BTC, ETH, SOL, and a handful of large-cap alts and calls it "spread risk" — but if all five pairs fall 20% in the same afternoon, there was never any real diversification to begin with. The number that would have told you this in advance is correlation, and almost nobody checks it before allocating capital.

Why Pair Count Isn't the Same as Diversification

Adding a fourth or fifth trading pair feels like it should reduce risk. In equities, it often does — a retailer and a utility company respond to different economic forces. In crypto, most large-cap assets move together most of the time. BTC and ETH have historically shown 30-day rolling correlations in the 0.7-0.9 range for extended stretches, and altcoins tend to track BTC even more tightly during risk-off moves. Running five bots on five "different" pairs can mean running one trade five times over, with five times the position sizing risk and no offsetting benefit.

This matters most exactly when it matters most: during sharp drawdowns. Correlations that look moderate in calm markets tend to spike toward 1.0 during liquidity shocks — exchange outages, regulatory shocks, or a large exchange's insolvency event. A portfolio that looked diversified in a backtest covering a quiet quarter can behave like a single leveraged position the day it actually needs diversification. That's the exact failure mode covered in how stablecoin depegs cascade through a bot portfolio — a shock hits one asset and every correlated position gets hit at once.

What Correlation Actually Measures

Correlation, in the trading context that matters, is not about the price series of two assets — it's about the returns of two positions or strategies over the same time window. The Pearson correlation coefficient between two return series ranges from -1 (perfectly inverse) to +1 (perfectly synchronized), with 0 meaning no linear relationship at all.

Three numbers to know:

CorrelationWhat it means for a portfolio
0.7 to 1.0Effectively one position. Adds size risk, not diversification.
0.3 to 0.7Partial diversification. Smooths the equity curve but both can still drawdown together.
-0.3 to 0.3Genuine diversification. One position's losses are largely independent of the other's.
-1.0 to -0.3Hedge-like behavior. Rare between crypto assets, common between a long bot and a short/mirror bot on the same pair.

Two things get conflated constantly and shouldn't be: asset correlation (does ETH's price move with BTC's price) and strategy correlation (do your RSI mean-reversion bot's trades line up in time with your EMA crossover bot's trades). You can run two genuinely different assets through the same strategy logic and still get highly correlated equity curves, because the strategy — not the asset — is what determines entry and exit timing. Conversely, two different strategies on the same asset can produce nearly uncorrelated equity curves if one is a trend-follower and the other is a range-bound mean-reverter, since they're active in different market conditions. Strategy correlation is what actually determines your combined drawdown risk, not asset correlation alone.

Calculating It Without a Spreadsheet Detour

You don't need a statistics background to get a usable correlation estimate. The practical method:

  1. Pull the daily (or equity-curve-point) percentage returns for each bot or backtest over the same date range.
  2. Compute the Pearson correlation coefficient between each pair of return series.
  3. Build a correlation matrix if you're comparing more than two.

In Python, with returns already aligned to the same dates:

import pandas as pd

# returns_df: columns are bot names, rows are daily % returns
correlation_matrix = returns_df.corr(method='pearson')
print(correlation_matrix)

For a quick manual check with two backtests exported from VolatiCloud, drop the daily equity values into two columns and use CORREL() in a spreadsheet — no code required. The key discipline isn't the math, which is trivial — it's making sure both return series cover the identical date range, including the same market regimes. Comparing a bot's Q1 backtest against another bot's Q2 backtest will produce a meaningless number even if the correlation formula runs without error.

tip

Compute correlation on returns, never on raw price or equity curve level. Two equity curves that are both trending up will show high correlation even if the underlying trades never overlap — the upward drift dominates the calculation. Percentage returns strip that drift out and isolate co-movement.

Using Correlation to Choose What to Backtest Next

The highest-value use of correlation analysis isn't retrospective — it's deciding what to add to a portfolio before you commit capital. Before backtesting a fourth bot idea, ask what correlation it's likely to have with the three you're already running:

  • Same strategy family, different pair (RSI mean-reversion on SOL when you already run it on ETH) — expect high correlation. Both fire on similar oscillator conditions, and large-cap alts co-move.
  • Different strategy family, same pair (add a trend-following EMA crossover bot on the same ETH pair as your existing mean-reversion bot) — expect lower correlation, since the two strategies are active in opposite market regimes.
  • Different strategy family, different asset class (a DCA bot on a low-cap pair with idiosyncratic catalysts alongside a BTC trend-follower) — the best odds of low correlation, but also the hardest to size confidently since low-cap pairs carry their own liquidity and volatility risk.

This is the same principle behind multi-bot portfolio orchestration: a portfolio of average, uncorrelated strategies tends to outperform a single excellent one over a multi-year horizon, because the combined equity curve is smoother and less prone to the single catastrophic drawdown that ends most retail trading careers. Correlation analysis is what turns "these feel different" into a number you can actually act on.

Position Sizing Once You Know the Correlation

Correlation should directly change how much capital you allocate, not just which strategies you pick. A reasonable framework:

  • Correlation above 0.7 between two bots — treat their combined position sizing as if they were one bot. Halve the per-bot allocation rather than running both at full size.
  • Correlation between 0.3 and 0.7 — allocate normally but cap combined exposure so that a simultaneous drawdown across both stays within your overall risk tolerance, per the framework in risk management and position sizing.
  • Correlation below 0.3 — size each bot independently based on its own backtest statistics; the correlation benefit is already doing the risk-reduction work.

This is also where drawdown management intersects with correlation: max portfolio drawdown isn't the sum of individual bot drawdowns, it's a function of how correlated those drawdowns are. Two bots that each have a 15% max drawdown but never draw down at the same time might produce a combined portfolio drawdown closer to 15% than 30% — but only if the correlation estimate holds up in live conditions, which brings up the next point.

Correlation Is Not Static — Recheck It

A correlation estimate from a six-month backtest window is a snapshot, not a law. Correlations between crypto assets and between strategies shift with market regime — regime detection work has shown that assets which trade independently in a range-bound market often converge sharply during a trending or panic phase. Treat your correlation matrix as something to recompute quarterly, or immediately after any period of unusual volatility, rather than a number you calculate once during initial portfolio construction and never revisit.

A practical cadence: recompute correlation across your active bots every time you're considering adding a new one, and again after any month where more than one bot hit its max drawdown limit — that's usually a signal the correlation regime has shifted and your existing estimates are stale.

VolatiCloud's bot monitoring dashboard surfaces every active bot's recent PnL and equity trend side by side, which makes the "did these two draw down at the same time" check a visual one rather than a spreadsheet exercise — genuinely uncorrelated bots visibly diverge in the trend lines even during volatile weeks, while correlated ones move in lockstep. Pulling the underlying daily returns for a formal correlation calculation is a matter of exporting the backtest or live trade history for each bot from its detail page and comparing the return series over the same window.

Building the Habit

Before adding a new pair or bot to a live portfolio:

  1. Backtest the candidate strategy over the same date range as your existing bots.
  2. Compute the return correlation against each active bot.
  3. If correlation exceeds 0.7 with anything already running, either skip it, pick a different pair, or explicitly size it as additional exposure to an existing bet rather than new diversification.
  4. Recheck the full matrix quarterly, not just on day one.

None of this requires exotic tooling — a backtest, an exported return series, and a correlation function get you most of the way there. What it does require is treating "diversified" as a number to check rather than a feeling based on how different the ticker symbols look.

Ready to test whether your bots are actually uncorrelated? Run backtests for each strategy over an identical date range in the VolatiCloud Strategy Studio, export the equity curves, and see what the numbers say before you size up the next allocation.