How Tradune calculates your real return

Tradune measures your money-weighted return — the annualized internal rate of return (XIRR) on the actual dated cash flows in your account, not a simple percentage gain. This is a different measure from time-weighted return, the standard fund-manager measure that strips out the effect of when money moved; money-weighted return keeps that timing effect in, because for an individual investor who controls when cash goes in and out, it is part of the real result. Tradune reports the time-weighted figure too, on the Benchmark page and in the portfolio performance view — this page describes the money-weighted one. Tradune then replays those same cash flows, on the same dates, into SPY at its dividend-adjusted (total-return) price, and solves the same XIRR calculation for that hypothetical twin. The difference between the two, in percentage points, is your excess return — what your decisions added or cost relative to holding the market instead. Periods under one year are shown as the plain cumulative gain, never annualized into a misleading rate. The return nets out commissions you recorded; it excludes taxes and advisory fees. If your recorded history cannot support a trustworthy number, Tradune shows nothing rather than a wrong figure. All of it is computed from transactions and snapshots you provide — Tradune does not log into or link to a brokerage account.

Money-weighted return vs a broker’s simple return

Most brokerage apps show a simple return: current value divided by cost basis, minus one. That number ignores when money went in. If you added a large deposit the week before a market drop, a simple return blends that new money in as if it had been invested the whole time, distorting the picture of how your decisions actually performed.

Tradune instead computes XIRR — the annualized rate that makes the net present value of your dated cash flows equal zero, using actual/365 day-count and solved numerically. In the app, the solver is a bisection on net present value, which refuses to return a number at all when no sign change brackets a root. The free beat-the-market calculator on this site runs the same solver in your browser — the same bisection and day count, checked against the app on a shared set of test cases — on figures you type in rather than on recorded transactions. Where more than one rate fits a set of cash flows, the calculator says so instead of showing one. XIRR reflects both the size and the timing of every flow, which is why two investors with the same trades but different deposit timing can show different money-weighted returns even on the same stock.

Two modes: investment return and account return

Tradune reports exactly one of two modes for a given return figure — they are never mixed.

  • Investment return (trade flow). Each buy is a cash outflow, each sell is a cash inflow, and your current holdings value is treated as the final inflow. This measures the timing and sizing of your trades on the securities themselves. Idle, uninvested cash sitting in the account is not counted.
  • Account return. When you record deposits and withdrawals, those become the cash flows, and the terminal value is your full account value, including cash. This measures how the whole account performed, cash drag included.

"The same cash in SPY": the benchmark twin

To answer "how did I do compared to the market," Tradune builds a benchmark twin: it takes your exact dated cash flows — the same amounts, on the same days — and invests them in SPY at that date’s dividend-adjusted (total-return) closing price instead of your actual trades. The twin’s terminal value is constructed the same way as yours, and the same XIRR solver is run on it. The twin is modeled without trading costs, so any commissions you recorded weigh only on your side of the comparison — a deliberately conservative choice that can narrow, never inflate, your edge.

We use the dividend-adjusted price series, not a raw index-price overlay, because a price-only comparison would silently flatter your return in years SPY paid meaningful dividends, or penalize it in ways that have nothing to do with your decisions. The dividend-adjusted twin answers a specific, honest question: what would this same money, moved on these same days, have earned in SPY with dividends reinvested?

Why we call it "excess return," not "alpha"

Your excess return (also shown as "your edge") is your money-weighted return minus the SPY twin’s money-weighted return, expressed in percentage points. It is a direct arithmetic difference between two XIRR figures.

We deliberately avoid the word alpha for this number. Alpha, in its standard definition, is a beta-adjusted figure produced by regressing returns against the market to isolate the portion not explained by market exposure — a different calculation with different assumptions. Calling a simple difference "alpha" would overstate its precision, so Tradune does not use that term for this figure.

Costs, periods, and annualization

Returns are shown net of the commissions you recorded on your trades. They exclude taxes, advisory fees, and any cost you have not entered into Tradune — if it is not in your data, it is not in the number.

For periods under one year, Tradune shows the plain cumulative return over that period — a 5% gain over three weeks is shown as 5%, never annualized into a triple-digit rate that no one earned. For periods of one year or longer, the return is annualized, consistent with how XIRR is defined. See also how we define CAGR and max drawdown elsewhere on the site — related but distinct measures.

When we show nothing — or flag it — instead of a wrong number

Tradune suppresses the return figure rather than display one it cannot stand behind. That happens when:

  • Your recorded history is incomplete — for example, a holding with no recorded original purchase, so the true starting cash flow is unknown.
  • The cash-flow pattern is unusual enough that the XIRR solver cannot resolve it — we say so rather than force a number.
  • The prices underlying a figure are stale — the figure is flagged rather than shown as current.

We would rather show you nothing than a wrong number about your own money.

Your data, your privacy

Your return is computed entirely from your own transactions and daily portfolio snapshots — the trades and deposits you enter, plus any positions you import by CSV (each recorded as a buy funded by a matching deposit). Tradune never links to or logs into a brokerage account to obtain this data; you provide it directly. The SPY series used for the benchmark twin is standard, publicly available market price data, not anything drawn from your own account.

Illustrative example

The figures below are illustrative only — round, made-up numbers to show the mechanism, not a real account, a real result, or a performance claim.

Say an investor deposits $10,000 on January 1 and a further $5,000 on July 1, and the account is worth $16,500 on December 31 of the same year — a period under one year, so the return is shown cumulatively rather than annualized. Tradune’s benchmark twin takes the identical two cash flows, $10,000 on January 1 and $5,000 on July 1, and prices them into SPY’s dividend-adjusted close on those two dates, then values the hypothetical SPY position on December 31. If that hypothetical SPY position had grown to $16,000, the investor’s cumulative return and the SPY twin’s cumulative return are each computed by the same method on the same dates — and the gap between them, in percentage points, is the illustrative excess return.

Frequently asked questions

What is money-weighted return?

It is your annualized internal rate of return (XIRR) on your own dated cash flows — each deposit, buy, sell, or withdrawal on the day it happened. Unlike a simple percentage gain, it accounts for when money moved, so adding cash right before a rally or right before a drop changes the number, just as it changed your real outcome.

Is money-weighted return the same as time-weighted return?

No. Time-weighted return strips out the effect of cash-flow timing and is the standard for comparing fund managers who do not control when clients deposit or withdraw. Money-weighted return keeps the timing effect in, because for an individual investor who does control that timing, it is part of the real result. Tradune shows both, for different questions: the headline “your real return” figure described on this page is money-weighted (XIRR), and a separate time-weighted return is reported on the app’s Benchmark page and in the portfolio performance view, where the question is how the strategy did rather than how your timing did. Neither one is a paid feature.

Why do you compare me to SPY specifically?

SPY is a widely held, low-cost S&P 500 ETF and a common default benchmark. We use its dividend-adjusted (total-return) price series so the comparison reflects dividends reinvested, not just price movement.

Why "excess return" and not "alpha"?

Alpha, precisely defined, is a beta-adjusted figure from a regression against the market — it isolates return not explained by market exposure. Our number is a straight arithmetic difference between two XIRR figures. Calling it alpha would overstate what it measures, so we call it excess return, or your edge.

Does my return include taxes or advisory fees?

No. It nets out only the commissions you recorded. Taxes, advisory fees, and any other cost you have not entered are excluded. If you record trades net of commission already, do not enter them again.

Why does Tradune sometimes show no return figure at all?

When your recorded history cannot support a trustworthy calculation — for example a holding with no recorded original purchase, an unresolvable cash-flow pattern, or prices that have gone stale — we suppress the figure rather than display a number that could be wrong. We would rather show you nothing than a wrong number about your own money.

This page is educational and describes how a calculation works. It is not financial, investment, or tax advice, and it is not a recommendation to buy, sell, or hold any security. Past performance, including any benchmark comparison, does not indicate future results.