Methodology

How Fund Compare works

The technical approach behind returns, dividends, volatility, and portfolio projections — so you can read every number with context.

What this site is for

Fund Compare is a research tool for placing stocks, ETFs, and robo-advisor portfolios side by side. You pick a time period and an investment amount; the app then shows price performance, estimated dividend income, and how bumpy the ride has been.


The Canada Robo vs ETF page groups Canadian robo advisors with all-in-one ETFs (VBAL, VGRO, and similar) by conservative, balanced, growth, and aggressive styles.


It is built to make comparisons consistent: the same date range, the same dollar amount, and the same formulas for every holding. It is not a brokerage, tax engine, or recommendation service.

How returns are calculated

Each fund’s price return uses the closest available closing prices on or before the start and end of the selected period:

Price return = (end price − start price) / start price × 100

That number is capital gain or loss only. It does not include cash you would have received as dividends.

Total return

The figure labelled Total return adds an estimated dividend contribution for the same window:

Dividend return = annual yield × (days in period / 365.25) Total return = price return + dividend return

Example: a fund that rose 8% in six months with a 4% annual yield is shown as about +10% (8% price + 2% dividends).

Projected value applies that total return to the investment amount you entered:

Projected value = investment × (1 + total return / 100)

On the portfolio table, that projected value does include dividends, because it uses each fund’s total return, not price return alone.

How dividend dollars are estimated

Yield and payout frequency come from stored fund fundamentals (refreshed from Yahoo Finance and Eulerpool in admin). Period dollar estimates still prorate the current annual yield — we do not replay each historical ex-dividend date inside the selected window.

For a single fund, estimated cash at each payout is:

Payout $ = investment × (yield / 100) / payouts per year

Frequency mapping: monthly = 12, quarterly = 4, semi-annual = 2, annual = 1. If frequency is unknown, the annual amount is shown instead.

Portfolio dividend totals

Portfolios treat holdings equally — the same approach used for average return. The investment is split evenly across the portfolio’s funds, then each fund’s prorated yield is summed:

Period dividends = investment × average(fund dividend returns) Annual dividends = investment × average(fund yields)

The portfolio column shows the period estimate in dollars, with the annual run-rate underneath.

What standard deviation means

Standard deviation (std. dev.) is a measure of volatility: how much daily returns have bounced around their average. A higher number means a wider typical range of outcomes — more uncertainty, not necessarily a worse investment.


We compute it from daily closing prices in the selected period:

  1. Turn each pair of consecutive closes into a daily return: (today − yesterday) / yesterday
  2. Take the sample standard deviation of those daily returns (divide by n − 1)
  3. Annualize so different periods are comparable: daily σ × √252 × 100

252 is the usual count of US trading days in a year. The result is a percent, such as 18.40%.

Colour bands

Highlights are a simple reading aid, not a risk rating from a regulator or a fund fact sheet:

  • Under 15% Lower volatility — typically steadier holdings
  • 15–25% Moderate — common for broad equity funds
  • Over 25% Higher — larger day-to-day swings

A low-volatility fund can still lose money. A high-volatility fund can still compound well over long periods. Use the colour as a scan cue, then read it next to return and dividend income.

Portfolio std. dev.

The portfolio figure is the average annualized std. dev. of its funds, equally weighted. It describes how volatile the holdings have been, not a full portfolio risk model. It does not adjust for correlation (diversification can make a real portfolio less volatile than this average).


The separate Risk /10 pill is different — see portfolio risk.

How we use risk in portfolio composition

The Risk /10 column on the home page is calculated from the portfolio’s composition — the funds listed for that portfolio in admin. It answers a different question from std. dev.: not “how jumpy is each holding day to day?”, but “how far apart did those holdings finish over this period?”

What it measures

We take each holding’s total return for the selected period, then measure how spread out those returns are:

σ = standard deviation of the funds’ period returns Risk /10 = min(10, round(σ / 2))

A portfolio whose funds all returned about the same number gets a low score. A mix where one holding surged and another fell gets a high score — the composition is less even over that window.

Colour bands

  • 0–3 /10 Holdings moved together
  • 4–6 /10 Moderate spread across funds
  • 7–10 /10 Wide gap between best and worst holdings

What it is not

  • It is not the Growth / Balanced / Aggressive label you pick when creating a portfolio in admin. That label is a category for the portfolio itself; it does not feed this score.
  • It is not the Std. dev. column. Std. dev. averages each fund’s daily volatility. Risk /10 looks at how different the funds’ period returns are from one another.
  • It needs at least two holdings with return data. A one-fund portfolio shows a dash or 0, because there is no spread to measure.

Composition weights affect average return, std. dev., and dividend estimates. The Risk /10 spread currently treats each holding’s period return equally, so a small sleeve that behaved very differently can still move the score.

How portfolios are aggregated

Each visible robo-advisor portfolio is summarised from the funds assigned to it:

  • Avg return — average of each fund’s total return (price + prorated dividends), weighted when composition weights are set
  • Risk /10 — how spread out those fund returns are from each other (see portfolio risk)
  • Std. dev. — average of each fund’s annualized daily volatility
  • Est. dividends — investment × average dividend return for the period
  • Projected value — investment grown by the average total return, so dividends are included

Return averages still come from the portfolio composition list in admin — those are the sleeves used for performance. If you set weights, averages are weight-based; otherwise each fund is treated equally. A fund can belong to more than one portfolio. The Canada Robo vs ETF page uses the same weighted averages for robos and the fund’s own return for all-in-one ETFs, grouped by risk style.


Click a portfolio name on the home page to open composition details. That page lists every sleeve, lets you change the investment amount and performance period, shows each fund’s weight and contribution to the portfolio return (those contribution percentages add up to the portfolio total), and charts daily prices for the window.

Fund backtesting

The Backtest page runs historical simulations on monitored funds through Eulerpool. Pick a date range, a starting amount, one or more funds, a strategy, and an optional benchmark. Results are not a forecast. They omit taxes, account fees, and most trading costs.

Eulerpool only changes the path for three strategies. Other template names (value, quality, low volatility, and similar) accept the request but come back as equal-weight rebalance on a small custom universe.

  • Buy and hold — keep the selected funds for the whole window. Run still compares how often the mix is rebalanced.
  • Momentum (12-1) — each rebalance, buy the strongest 12-month names and skip the latest month. The strategy only evaluates on a schedule, so “none” is omitted.
  • Mean reversion — buy when RSI is oversold and sell when it is overbought. Also needs a rebalance schedule.

The benchmark dropdown is optional (default none). When you pick a ticker such as SPY or XIU.TO, a dashed buy-and-hold line of the same starting amount is drawn on the equity chart.

Run

Run sends the same strategy and funds to Eulerpool once for each rebalance Eulerpool actually honors: none, weekly, monthly, and daily. Quarterly and annual are ignored by the API. A single fund looks the same at every frequency because there is nothing to re-weight.

The table shows total return, CAGR, max drawdown, annualized volatility from the equity curve, Sharpe, and ending value. Volatility can be well above 100% for concentrated momentum paths — that is annualized standard deviation, not a formatting leftover. The chart overlays every rebalance and the benchmark when one is set.

Optimize

Optimize runs that same rebalance grid, then ranks the paths by the Optimize for objective:

  • Sharpe — highest Sharpe ratio
  • Total return — highest cumulative return
  • Max drawdown — smallest peak-to-trough loss

Changing Optimize for re-ranks the same four runs. It does not start a new Eulerpool parameter search. The winner strip updates immediately; you do not have to press the button again.

Walk-forward

Walk-forward splits the date range into repeating train and test windows so you can see whether a setup held up out of sample.

  • Train window (days) — in-sample length used to fit or select the path. Default 252 trading days (about one year).
  • Test window (days) — out-of-sample length that is scored. Default 63 days (about one quarter).
  • Step (days) — how far the window jumps after each fold. Default matches the test window.
  • Rolling — both train and test slide forward together.
  • Anchored — the train start stays fixed and the train end grows as you step forward.

The page reports each window plus an aggregated row. Empty extras (trades, monthly returns, drawdowns) mean Eulerpool did not send them for that call.

Celebrity and investor portfolios

The Famous Fortunes page loads live from Eulerpool: Superinvestors 13F-style books and recent Congress Trading STOCK Act disclosures. Superinvestor share counts come from Eulerpool and are marked to the latest Yahoo price on the detail page. Congressional lines use reported amount ranges (midpoints for weights). The list shows each person’s latest reported add, reduce, buy, or sale — not a complete return history.

The return is a weighted mix of the names we list, using the same live Yahoo prices as the rest of the site. It is a research proxy for that disclosed book — not the person’s actual profit and loss, and not a complete picture of cash, private companies, options, or trades made after the filing date.

Home-page return tiles

When this feature is on, the Compare home page adds tiles for average return and best performer across every monitored holding, equally weighted. Those figures are a scan of the watchlist — not a market index and not a portfolio you can buy.

Fund logos

Issuer or ticker logos appear next to fund and stock names on Compare, Monitored funds, Canada Robo vs ETF, and related pages. They come from Eulerpool (or a fallback issuer map) when a fund is refreshed in admin. Turn the feature off to show names only.

Fund descriptions

Short Eulerpool blurbs sit under fund names where space allows. They are a reading aid from the latest admin refresh, not the official prospectus wording.

ETF inflows

Monitored funds can show the latest monthly ETF net-flow column from Eulerpool. The API only supplies about one month of flows. Stocks and funds without flow data show a dash.

Market index

Monitored funds can show which major index a stock belongs to: S&P 500, Dow, Nasdaq-100, S&P/TSX Composite, or FTSE 100. A stock in more than one index lists every membership. ETFs and other symbols stay blank unless an admin sets the value. Turn the column off in Admin → Features.

Dividend payout history

On Monitored funds, Eulerpool can supply recent payouts, fiscal-year totals, upcoming dates, and quality or safety badges for equities. Those extras sit beside the prorated yield used in return math. They are a reading aid, not a substitute for the fund fact sheet, and they do not change the period dividend dollar estimate.

What’s inside the fund

Composition details and Canada Robo vs ETF can show Eulerpool’s book: top holdings plus sector and country pies. A robo’s book is a look-through — each sleeve’s holdings scaled by its admin weight. An all-in-one ETF such as VBAL uses that fund’s own book. Refresh the fund in admin if the book is empty.

Where the data comes from

  • Prices — daily adjusted closes fetched live from Yahoo Finance and cached at Cloudflare’s edge for a few minutes. Returns and std. dev. still use Yahoo only.
  • Fund extras — Eulerpool fills descriptions, logos, ETF flows, dividend history, and fund books (holdings, sectors, countries) when we refresh a fund in admin. Those values are stored and shown when the matching feature is enabled in Admin → Features.
  • Yield, frequency, next payout — Yahoo Finance fundamentals, or values edited in admin
  • Names, types, portfolios — maintained in the admin panel

If a fund has too few daily prices in the window (fewer than three closes), std. dev. is shown as a dash. If yield has not been filled in, dividend estimates are omitted rather than guessed.

Limits you should know

  • Dividend return uses the current yield spread across the period. Actual dividends paid in that window may have been higher or lower.
  • Prices are split-adjusted closes from Yahoo Finance. Very new listings or symbols Yahoo does not cover will show dashes until data is available.
  • No fees, taxes, FX conversion, or reinvestment compounding beyond the simple yield proration.
  • Past volatility and returns are not forecasts.

Figures are for illustration and comparison only. They are not financial advice. Check official fund documents and a qualified advisor before investing.