swing-quant  ·  research note 2010–2026 Ler em português

The cash was doing the work

Sixteen years of daily bars, two markets, and a question that kept getting bigger: one validated swing-trading system against four passive baselines, then against every asset a household could actually buy, against the ETFs it would really buy them through, and against a portfolio that tries to time the market cycle. In Brazil most of what looked like trading skill turned out to be interest on money the trader never invested — and the decision that moved the result most was not a trading rule at all.

IF YOU ONLY HAVE TWO MINUTES

This is a long piece because the question has many layers. It is organised in five parts, and every block of results opens with the answer in one sentence — you can read only the highlighted sentences and still know what the study concluded.

Part 1

Why this study exists

The question it answers, why almost every answer in circulation is wrong, and the minimum vocabulary to read the rest without stumbling.

THE SETUP

Two contenders, neither of them a strawman

The question sounds simple. Is actively trading a quantitative swing system better than buying an index and leaving it alone? Almost every attempt to answer it goes wrong in the same place, and it is not the place people expect.

The trading side here is a real production system, not a curve-fitted demo. Two sleeves that each passed a ten-point validation protocol — walk-forward, out-of-sample, Monte Carlo, block bootstrap, cost stress at three times the modelled rate, and a random-entry baseline: a Donchian breakout on Brazilian large caps, and cross-sectional momentum on the S&P 500. Signals fire at the close of day D and fill at the open of D+1. Costs are charged on both legs. Position size comes from risk, not conviction.

The investing side is four baselines rather than one, because "the index" is a narrower question than it sounds: index buy-and-hold, an equal-weight portfolio of the same universe, the risk-free rate (CDI in Brazil, T-bills in the US), and — the one that turns out to matter — a passive portfolio deliberately held at the same average equity exposure as the swing book.

On the risk-free rate. Sharpe and Sortino below are computed against the actual daily rate series, not against zero. Over this period CDI compounded at 9.8% a year. A zero-rate Sharpe would flatter every Brazilian strategy by roughly half a point and would rank a 5% strategy above cash that paid 10%.
VOCABULARY

The minimum vocabulary

Six terms show up in nearly every exhibit. With these six clear, the rest of the article reads without a dictionary.

Real return — the return after inflation is taken out. Over sixteen years of Brazilian inflation it is what ranks things: 10% nominal against 6% inflation is 3.8% real.
CAGR — the average compounded annual return. It is a summary, not a promise — and it hides completely when the return arrived.
Drawdown — how much was lost from a previous peak to the trough. It is the number that decides whether a person stays in the position, not the return.
Sharpe — how much return above cash was earned per unit of wobble. Here it is always computed against the real interest rate, never against zero.
Exposure — what share of the money is actually invested in equities. A swing book runs 28%; an index runs 100% — comparing them directly measures no skill.
Walk-forward — choosing parameters on an early slice of the data and measuring on a later slice the model never saw. Without it every backtest is beautiful.
Part 2

How the study was built

Where the data comes from and which rules keep a backtest from fooling itself. If all you want to know is whether the numbers can be trusted, read this part.

METHOD

The rules that keep the study from fooling itself

A backtest is a machine for producing pretty results. These six rules are what is left after the known ways of cheating are removed.

Every number comes from 2.3 million daily bars in the project's DuckDB store, January 2010 to August 2026, across both markets. The trading side uses the production engine — the same costs, sizing and risk rules that run live.

Signals form on D and execute at the open of D+1. No order uses a price that did not exist when the decision was made.
Cost is charged on both legs, then multiplied by three. Commission, fees and slippage hit every entry and every exit; the protocol repeats the backtest at 0×, 1×, 2× and 3× the modelled cost to find where it breaks.
Parameters are chosen in training and measured outside it. Rolling walk-forward, plus a final third of the data no choice ever touched. A strategy that only works in-sample does not reach this article.
Idle cash earns interest. The engine pays 0% on purpose — conservative for approving a strategy. But for a comparison against investing the cash earns the day's CDI or T-bill, otherwise the comparison deletes the biggest leg of the portfolio from one side only.
Every reported return is real. Deflated by IPCA in Brazil and CPI in the US. A nominal ranking over sixteen years of Brazilian inflation orders things wrongly, and not by a little.
The control always carries the candidate's exposure. Comparing a 28%-invested book with a 100%-invested index measures the market's mood, not the rule. Every comparison from here on has a control holding the same risk.
What is declared and not fixed. The universe is today's index membership walked backwards, so the companies that failed are missing — which helps the passive alternatives, not the strategy. It is survivorship bias, it is sized in Part 4, and it cannot be repaired with the data that exists.
Exhibit 1 — Growth of one unit of currency  log scale, dividends reinvested, monthly marks
Brazil · B3
United States

Read the two panels as separate experiments, because they disagree. The Ibovespa returned 5.7% a year while CDI paid 9.8% — sixteen years of equity risk, a 48.6% drawdown and 6.7 years underwater, to finish behind a money-market account. Against that backdrop nearly anything looks good. In the United States the opposite: SPY compounded at 14.2% while T-bills paid 1.3%, and the swing book's 10.5% lost by four points a year.

And yet the swing book has a higher Sharpe ratio than the index in both markets — 0.39 against −0.05 in Brazil, 1.10 against 0.79 in the US. Better risk-adjusted return, worse terminal wealth, in the same table. That contradiction is the study.

Part 3

The results

Five blocks of questions, fourteen findings. Each opens with the answer in one sentence; the rest of the block is the evidence.

Block A · findings 01–07

Is trading worth it?

The study's original question, and the only one in which a trading system is the thing on trial.

FINDING 01

The comparison everyone reaches for is broken

A swing book sized by risk does not hold stocks. It holds a little bit of stocks and a very large pile of cash.

Position size comes out of a risk budget: half a percent of equity divided by two ATRs of stop distance, then capped by a maximum weight per name, by participation in traded volume, and by available cash. Run that arithmetic across a whole portfolio and the book is roughly 72% cash on average, in both markets.

Comparing a 28%-invested portfolio to a 100%-invested index is not a test of trading skill. It is a test of how equities happened to do.

If stocks rose, the fully invested portfolio wins by construction. If they fell, the 28%-invested one wins by construction. Neither outcome says anything about whether the entry and exit rules added value. The fix is to hold the exposure constant: put w = 28% in the index and the rest at the risk-free rate, rebalanced daily. Same average equity exposure, no timing, no skill — just a passive portfolio that happens to be mostly cash, exactly like the swing book.

FINDING 02

In Brazil, 56% of the return was interest

The backtest engine pays 0% on idle cash. A real broker account does not.

Leaving idle cash at zero is the right call inside a validation protocol — it is conservative, and it stops a strategy from being approved on the strength of the money it never deployed. It is the wrong call when the question is "trading versus investing," because a Brazilian broker paying 100% of CDI turns 72% of the book into a money-market fund. So the honest curve credits it: each day's portfolio return, plus cash weight × risk-free.

Once the cash earns its keep, it becomes fair — and uncomfortable — to ask how much of the result came from the trades and how much came from the money sitting behind them.

Exhibit 2 — Where the swing return came from  compound annual growth, split into its two engines
Return attribution
Why: the share of the book sitting in cash
Of the Brazilian strategy's 12.35% a year, 6.92 points came from interest and 5.08 from the trades. Switch the cash yield off and the same system makes 5.1% — losing to a savings account by 4.7 points a year.

The same decomposition in the United States gives 9%, because that sleeve ran through a decade of zero rates. The strategy is identical in spirit; the environment is the whole difference. Which reframes what the product actually is:

A swing book run at half a percent of risk per trade is not an equity strategy. It is a money-market fund with a small equity overlay — and in a high-rate country, most of its return is the fund, not the overlay. It should be benchmarked, marketed and taxed as one.

FINDING 03

Most of the "edge over the index" is a rate signal

And the part that survives holding cash constant is small, steady, and real.

If a large share of the swing return is interest, then how good swing trading looks should rise and fall with the interest rate — and it should stop doing so once the comparison holds the same cash. Sorting every overlapping one-year window into quartiles by the prevailing rate tests exactly that.

Exhibit 3 — The swing book's edge, by interest-rate regime  mean excess return across overlapping 1-year windows
Brazil · B3
United States

Brazil gives a clean result. Measured against the index, the edge lurches from −0.3% to +10.7% depending on the quartile. Measured against a blend holding the same cash — and therefore earning the same interest — it sits in a narrow band of +2.3% to +4.5%, with a correlation to the rate level of −0.03.

The real edge is 3.2 percentage points a year, not the 6.7 the index comparison advertises. Roughly half the apparent skill was the Selic rate.

The US table does not decompose as cleanly: its blend-relative edge still climbs with rates, correlation +0.48. The honest reading is confounding rather than causation — the high-rate quartile in the US is 2023–2026, which is also when this particular momentum strategy did its best work. With one path through history there is no way to separate the two, and I would not claim the rate caused it.

FINDING 04

The risk numbers run the other way

Everything so far has been about return. Drawdown is what decides whether a person stays in the seat.

Exhibit 4 — Time spent underwater  drawdown from the prior peak, worst point in each month
Brazil · B3
United States

In Brazil the index lost money over 39% of all one-year windows and its worst year was −36%. The swing book lost money in 3% of windows, and its worst year was −4.1%. In the US the index's worst year was −19.7% against the swing book's −9.5%, and maximum drawdown was 33.7% against 13.0%.

The conditional rows carry the mechanism. When the index was down over a year, the Brazilian swing book still averaged +8.0% against the index's −9.8%. When the index was up, it made 15.9% against 18.6%. It gives up some of the upside and nearly all of the downside — which is exactly what holding 72% cash does, plus whatever a trend-following exit rule adds on top.

So the swing system is not worse. It is a different asset: lower risk, lower return. Whether that trade is worth making has a clean test.

FINDING 05

At equal return, whose risk is worse?

A better Sharpe ratio is only useful if you can scale it up.

Lever the swing book until its return matches the index, then compare the risk. This scales the strategy's excess return over the risk-free rate, which scales volatility and drawdown roughly in proportion — arithmetic that ignores borrowing spread, margin calls and path risk, all of which make the real levered version worse than this.

Exhibit 5 — Risk against return  every baseline, 16.6 years; up and to the left is better
Brazil · B3
United States

In Brazil the question does not arise — the swing book beat the index outright at a quarter of the volatility. In the US it does, and the answer is genuinely interesting: to match SPY's 14.2%, the sleeve needs about 1.40× leverage, and levered to that point it would have run at 11.5% volatility with an 18.1% maximum drawdown, against the index's 17.1% and 33.7%. Same return, roughly half the drawdown.

That is a real advantage. It also requires running 1.4× leverage on a book that trades 228 times a year, financed at a broker's margin rate, through a 2020-style gap. The arithmetic works; the arithmetic is not the part that fails.

FINDING 06

Costs bruise. Taxes are structural.

One of these is a modelling assumption. The other is a permanent asymmetry between trading and holding.

Backtested costs are a guess, so the sensible thing is to bracket them. Multiplying the whole cost model by 0×, 1×, 2× and 3× takes Brazil from 12.35% to 10.84% and the US from 10.52% to 8.40% — about half a point and seven-tenths of a point per turn of the dial. The US sleeve is more fragile because it trades 228 times a year against Brazil's 37.

Taxes are the part almost every backtest omits, and unlike costs they are not a calibration question. Trading realises gains and pays tax on them every month; buying and holding defers indefinitely and pays once, at the end, out of a base that compounded untaxed the whole way.

A swing book generates two taxable streams, under two regimes. Trading gains: 15% on each month's net gain in Brazil, losses carried forward, with the R$20,000 monthly-sales exemption applied where it genuinely applies; a flat 25% stands in for US short-term gains taxed as ordinary income. And interest on the cash sleeve, taxed on the Brazilian regressiva table, which bottoms out at 15% past two years — either on redemption, or twice a year by come-cotas if the cash sits in a fund.

The drag runs about 0.8 points a year in Brazil and 2.4 in the US for the swing book, against 0.6 and 1.0 for buying and holding. Turnover is taxed; patience is deferred. Brazil's number is smaller than it looks because losses carry forward and absorb later gains — this system wins only 38% of its trades — and because the R$20,000 exemption genuinely bites in the early years, while the book is still small.

Simplified, and not tax advice: no wrappers, no day-trade regime, no 0.005% withholding, and a flat stand-in rate for US short-term gains.
FINDING 07

Nobody actually invests a lump sum

And when you model what people really do, one number moves by 3.6 points.

Every figure so far assumes a single deposit on day one and no contact with the account for sixteen and a half years. The realistic pattern is a fixed monthly contribution, which is money-weighted rather than time-weighted: the returns that matter are the ones that happened while there was money in the account.

The ranking survives. But dollar-cost averaging into the Ibovespa returns an IRR of 9.27% against a lump-sum CAGR of 5.7% — because Brazil's bad years came early, when a monthly contributor had almost nothing invested, and the good years came late, when the account was full. Timing luck, not skill, worth 3.6 points a year.

Which is a useful warning about the entire exercise: a single sixteen-year path produces point estimates that are far less precise than they look printed to two decimals.

Block B · findings 08–12

Where should the money be?

Widen the frame to every asset a household could hold, and the argument about a few points of trading edge changes size.

FINDING 08

In Brazil, risk was not paid at all

Everything above argues about points of edge. Widen the frame to every asset a household could own, and the Brazilian stock market did not beat a savings-adjacent money market over sixteen years.

The comparison so far has two ingredients, stocks and cash, because those are the only two the engine trades. That is a narrow view of a portfolio. So here is the whole menu, rebuilt from the same database on month-end closes and ranked by the only figure that survives sixteen years of inflation — the real return.

Three of the lines do not come from the price feed, because the price feed gets them wrong. Listed property funds come from the B3's own IFIX: rebuilding the class from individual funds understates it by more than four points a year, since a property fund pays out almost its entire return in cash and the feed only knows the recent distributions. Physical property comes from the central bank's appraisal index of financed homes, which measures what a flat is worth and not what it earns — so a second row adds 4% a year of net rent. Government bonds come from the Treasury's own daily price file, marked to market and rolled at a fixed target maturity.

Exhibit 6 — Real return a year, by asset class  above IPCA in Brazil, above CPI in the US; each class over its own longest history
Brazil · B3
United States

The two markets are not two versions of one story. They are mirror images.

In the United States, cash was the worst asset you could own. T-bills lost 1.3% a year to inflation; the S&P 500 made 11.4% above it. Every equity line, the REITs and gold all beat the money market, and the only losers were the bond funds that a generation of balanced portfolios was built on.

In Brazil, the money market beat almost everything. The CDI paid 3.9% a year above the IPCA. The Ibovespa paid 0.5% — with 21% volatility and a 43% drawdown to get there. Small caps lost 1.6% a year. Listed property funds, the country's favourite income asset, paid 3.0%, a point below cash with ten times the variance. Bare physical property returned exactly zero: a flat bought in 2010 is worth, in purchasing power, what it cost, and rent is not the cherry on the cake of Brazilian property — rent is the return.

Read the column as a sentence: for sixteen years the Brazilian equity risk premium was negative. An investor who took the full risk of the stock market was paid three and a half points a year less than one who took none. Only three things beat the CDI by a real margin, and not one of them is a Brazilian risky asset: bitcoin, the S&P 500 in reais, and gold — two of which are the dollar wearing a different hat.

Exhibit 7 — What actually moved together, Brazil  correlation of monthly returns, 2014-10 to 2026-06

The correlations explain why the Brazilian result is not simply "everything fell". Domestic risk assets are one trade wearing three costumes: stocks, small caps and property funds correlate 0.61 to 0.90 with each other, so a portfolio spread across all three owned three copies of the same bet. Every genuine diversifier points abroad — the dollar at −0.62 against the Ibovespa, gold at −0.34 — or points nowhere at all, like bitcoin at 0.03.

Physical property correlates −0.00 with the stock market, which sounds like the perfect diversifier and is mostly an artefact: appraisal indices smooth away the shocks a market price records. Its −0.51 against the CDI is the real signal, and it is the one Brazilians lived through — property stops working when the money market starts paying.

And the swing sleeve, for all its cash, sits at 0.57 with the Ibovespa and 0.10 with the CDI. Two thirds money market by weight; still an equity product by behaviour.

FINDING 09

Nobody owns one asset

The correlation matrix contains an answer the last section never priced. Price it, and a worse-looking Brazilian portfolio beats a better-looking one on return and on risk.

Every table so far ranks asset classes one at a time, which is not how anyone holds money. So here are portfolios — the ones people are actually sold or actually hold, rebalanced once a year. Not optimiser output: a mean-variance frontier fitted on the same sixteen years it is then scored against would be the most flattering and least honest chart in this study.

Exhibit 8 — Portfolios against their ingredients  annual rebalancing; grey dots are the single classes from Exhibit 6
Brazil · B3
United States

The Brazilian panel holds the single most useful sentence in this study, and it has nothing to do with trading.

Moving a fifth of a 60/40 portfolio into the S&P 500 — same 40% in cash, Brazilian stocks cut from 60% to 40% — raised the real return from 2.2% to 5.5% a year while cutting volatility from 12.3% to 8.4% and the worst drawdown from 22% to 14%.

More return and less risk, from a portfolio holding less of the asset that performed best. That is not hindsight finding a free lunch; it is the mechanical consequence of the −0.62 correlation between the dollar and the Ibovespa. When the local market fell, the currency leg was rising, and the annual rebalance harvested the difference. The dollarised book never had a losing calendar year in sixteen and a half.

The US panel is the mirror image and far less interesting: stocks won, so the portfolio holding the most stocks won. Diversification cost return there, exactly as it should when one asset dominates for sixteen straight years.

Which brings up the folklore. Rebalancing is sold as a free bonus; over this sample it cost money in four of the six multi-asset portfolios — 1.8 points a year in the dollarised Brazilian book and in the American 60/40. The mechanism is not subtle: when one leg wins for sixteen years straight, selling it every January to top up the loser is a losing trade repeated sixteen times. It paid only where no single asset dominated. What it bought everywhere is the thing a CAGR cannot show — a portfolio that still holds the weights it claims to. Left alone, the dollarised book ends the period as a 47% bet on US equities: a fine outcome, and a portfolio nobody chose.

FINDING 10

One path is not a distribution

Every number so far is a sixteen-year CAGR: one draw, for an investor who started in January 2010 and never needed the money. Nobody is that investor.

The question a person actually faces is narrower and answerable for every start month in the sample: if I put money in and take it out five years later, what happens? Each row below is one asset class read across all of its overlapping five-year holding periods, in real terms.

Exhibit 9 — Every five-year holding period  dot: median · bar: 5th–95th percentile · line: full range, annualised and real
Brazil · B3
United States

Two numbers reframe the entire study.

In Brazil, 37% of all five-year holding periods in the Ibovespa ended below inflation, and 58% lost to the money market. Not the tail — the typical case, more than half the time. The worst five-year window compounded at −15.5% a year in real terms, and the index spent 15.8 of the 16.6 years below a previous real high. Someone who bought Brazilian stocks at almost any point in this sample spent almost the whole holding period underwater.

In the United States, 100% of five-year periods in T-bills ended below inflation, and cash spent 16.3 years underwater. Each country punished the opposite thing, and punished it almost without interruption.

Look also at what the distribution does to the assets that feel safe. The savings account lost purchasing power in 47% of five-year windows and lost to the CDI in 100% of them: not a low-return asset, a slow-motion loss. Bare physical property was negative in 91%. And time in the market narrows the spread without rescuing a bad asset — Brazilian stocks still lose to inflation in a quarter of all ten-year windows.

FINDING 11

What the taxman leaves

Brazilian tax is not neutral across these classes, and after it the ranking is not the one above.

Everything so far is gross. Property funds distribute tax-free to individuals, the savings account is exempt end to end, bonds and cash pay the regressive table, rent is taxed on the progressive one, and a flat carries about 11% of transaction costs that no index records.

The model is deliberately explicit about one mechanic: income — rent, coupons, distributions — is taxed as it arrives, and what is left is reinvested, which raises the cost basis. Only the remaining gain is taxed on sale. Skip that and you double-tax an exempt property fund into looking like a taxed one.

Exhibit 10 — What the taxman leaves  hollow: gross real return · solid: after tax, fees and transaction costs
Brazil · B3
United States

Three findings, in ascending order of how much they should annoy a Brazilian reader.

Property funds are the only untaxed risk asset in Brazil. Their drag is zero — the distributions that make up nearly all of the return are exempt for individuals, and reinvesting them lifts the cost basis, so there is almost no capital gain left to tax. Gross, the IFIX returned 3.0% against the CDI's 3.9% and looked like a loser. Net, it is 3.0% against 3.1%, and the gap disappears.

A flat is the most heavily taxed thing on the list. Rent on the progressive table plus ITBI, deed and agent's fee cost 2.2 points a year — more than half the gross return. Property bought for rental income returned 1.8% real after tax, against 3.1% for leaving the money in the bank and doing nothing.

About three quarters of the tax paid on cash was charged on inflation, not on gain. The rule taxes 15% of the nominal gain; the “inflation tax” column prices the difference against the same rate applied to the real gain. For the CDI that is 0.6 of the 0.8-point drag. Brazilian tax on fixed income is, to a first approximation, a tax on the IPCA.

And the headline, restated where it hurts: after tax, Brazilian stocks returned −0.1% a year in real terms over 16.6 years. The equity risk premium was not merely negative before tax. It was negative after it.

FINDING 12

It was a bet on the rate — and that cuts the other way too

Split the sample by what cash was paying at the time, and the folklore about low rates breaks in half.

The Brazilian conclusion rests on a period when the money market paid a large real rate, which is not a permanent feature of the world. One caveat decides how the table can be read: the real rate here is measured contemporaneously and after the fact — trailing twelve-month CDI deflated by trailing twelve-month IPCA. A low reading usually means inflation surprised upward, not that the central bank chose to be generous. The buckets describe the macro weather as much as monetary policy.

Exhibit 11 — Real return by what the money market was paying  sample split into thirds by the trailing real rate; bitcoin omitted, off-scale in every bucket
Brazil · B3
United States

Received wisdom says low rates are good for risk assets. In Brazil, over this sample, the opposite held and it was not close: in the lowest third of real rates, Brazilian stocks returned −10.8% a year, property funds −7.9%, long inflation-linked bonds −7.9%. Every domestic risk asset had its worst regime exactly when cash was paying least — because a low real rate in Brazil is what a currency crisis and an inflation shock look like from the inside, not what stimulus looks like.

One thing paid in that regime: the S&P 500 in reais, at +9.1% a year. The dollar leg is not merely a diversifier in the correlation-matrix sense. It is the only asset on the Brazilian menu that worked in the state of the world where everything else failed — which is the same conclusion Finding 09 reached from the portfolio side, arrived at from a completely different direction.

So does the central claim survive a rate cut? Partly, and the part that survives is the uncomfortable one. Cash's own real return collapses to 0.0% in the low bucket, so “hold cash” is indeed a bet on the rate. But the claim that domestic risk assets did not pay for their risk gets stronger in that regime, not weaker. In this sample there was no rate environment in which the Brazilian stock market was the right answer and the dollar was not.

Block C · finding 13 + one ruler

How you actually buy this

The asset classes above are indices, and nobody buys an index. This part asks what survives the fund, the currency crossing and the tax.

FINDING 13

Buying the dollar leg costs more than the fee sheet says

Every finding above points the same way: on the Brazilian menu, the thing that paid was the dollar leg. But Finding 08 bought it with an index — no fee, no spread, no tax, no ticker. A household has to buy an actual fund, and there are two ways to do it.

The B3 route is an index fund quoted in reais — IVVB11, WRLD11, NASD11 — that holds the American ETF abroad. It distributes nothing, so tax arrives once, on the day of the sale, at 15% of the nominal gain. No dollar account, no remittance, no IOF. The US route is the American share itself, bought through a broker abroad: a much cheaper fund, but the money crosses the border twice, at 1.1% of IOF plus a spread on the way out and 0.38% plus a spread on the way back. Dividends arrive with 30% already withheld by the IRS, and since Lei 14.754/2023 the gain is taxed at a flat 15% with the currency move inside it and no exemption for small sales.

One correction has to come before any number. An ETF's quote is already net of its own fee, so subtracting the published expense ratio again would count it twice. What is measured here instead is each Brazilian fund against its own underlying ETF converted at the spot rate — a single figure that contains the fee, the tracking error, the cash drag and the exchange rate the fund actually got.

Exhibit 12 — Where the return in reais came from  the ETF's own return in dollars against the currency, same funds, two windows

The two panels are the same chart over two windows, and they disagree completely. Over the long window the dollar paid 7.2% a year — a third of the S&P investor's return in reais and essentially all of the bond investor's. Over the last five years it paid −1.7%, and every fund in the right-hand panel earned its return in spite of the currency, not because of it.

That is not an argument about which window to trust. It is the reason the question has to be asked properly. Interest parity says a currency paying 9.9% should lose to one paying 1.3% by roughly the gap. The real lost 6.3% a year against an implied 8.4% — it underperformed the carry by two points a year. Someone who moved to dollars did not collect the rate difference; they paid it, and got most of it back in currency.

This is the flaw in “the dollar rises 6% and the ETF rises 10%, so I make 16%”. The currency leg is not an extra return. It is the compensation for giving up a money market paying 9.9%, and what the S&P investor in reais actually earned over the CDI is the US equity premium over T-bills, converted — a much smaller and much more honest number.

SAME RISK, TWO WRAPPERS

0.4 points a year against 2.4% at the door

Hold the exposure fixed and change only the vehicle, and the whole route argument reduces to two numbers. The Brazilian wrapper lags its own underlying by about 0.4 points a year, tracking the published fee — ACWI11 gives up 0.62 and NASD11 0.49, against 0.43 for the two S&P funds. The border costs 2.4% once. The cheaper fund abroad needs about seven years to earn that back, so below that horizon the B3 fund wins on arithmetic alone, no matter how cheap Vanguard is.

SPXB11 is the cautionary row. It listed at R$10 in September 2021 on volumes of a few hundred reais a day and spent six months converging to its own net asset value; its series here starts at the first month it traded a median of R$100 thousand a day, which is 2024. A newer fund with a lower fee is not automatically cheaper — the spread you pay to get in is a fee too.

There is also a tax result that runs backwards to the usual story. An accumulating fund is supposed to win by deferring tax. Here it does not: the dividend that reaches an investor abroad has already paid 30% to the IRS, that credit covers the 15% owed in Brazil, and reinvesting it raises the cost basis. Nothing was going to be taxed early, so there is nothing to defer — and the basis step-up belongs to the distributing fund. The B3 route's real advantages are simplicity and the border it never crosses.

Exhibit 13 — R$10,000, after tax, against leaving it in the CDI  5% real a year in dollars, currency drifting at the rate gap, 15% charged once at the end

Forward, with every assumption stated and none of them fitted to this sample: US equities at 3%, 5% or 7% real a year in dollars; the currency drifting at today's rate gap, about 10% a year; each fund's measured lag and its own distribution yield; and 15% of the nominal gain in reais at the end. The benchmark is not zero — it is the CDI at today's rate, net of its own tax.

Ten years, R$10,000, base case: about R$44 thousand through the B3 fund, R$45 thousand through a broker abroad, against R$34 thousand left in the CDI. In purchasing power that is R$28.6 thousand against R$22.3 thousand — real, worth having, and a great deal smaller than the nominal column suggests.

Three things this table says that the fee comparisons do not. The choice of route is worth less than one year of market noise — across every scenario and horizon the two land within 2% of each other, so anyone agonising over IVVB11 versus VOO is optimising the third decimal. The dividend is where the invisible fee lives: SCHD hands the IRS 1.07 points a year and VXUS 0.94, against 0.42 for an S&P fund and 0.18 for QQQ — for a Brazilian, a high-yield US ETF is a permanently taxed one, and no expense-ratio table shows it. And the bear case barely beats cash: at 3% real in dollars, ten years of US equities returns R$36.8 thousand against the CDI's R$34.5 thousand. The entire case for crossing the border rests on the equity premium being real, not on the currency.

ONE RULER

Everything on the Brazilian menu, after tax

Each finding above uses the ruler its own question needs, which makes them hard to lay side by side: the asset classes are indices, the ETFs are funds, and only some of the figures are net of tax. This last exhibit puts all of it on one scale — every asset a Brazilian household could actually hold, in reais, above inflation, after the tax that asset really pays. Index rows carry the study's tax assumptions; ETF rows carry their own costs, the 30% the IRS keeps from dividends and the 15% due on the sale.

Exhibit 14 — The whole menu, one scale, after tax  real return a year in reais; each asset over its own history, which is not the same length

Read the length of the bars, then read the years column in the table, because the two say different things. The ranking at the top is not a close call: after tax, in purchasing power, the assets that paid a Brazilian were bitcoin, the Nasdaq, the S&P 500 and the funds that hold them. Below them sit the government bonds and the CDI, clustered within a point of each other. Below those sit the Ibovespa, the dollar held as cash, and physical property without rent.

The years column is where the humility lives. WRLD11 and ACWI11 show five years and SPXB11 two, and those five years contained the worst stretch for the dollar in the sample — which is why a global fund lands near the bottom of a list its own index would sit halfway up. The head-to-head in Exhibit 12 is the one to trust for choosing between funds; this chart is for choosing between kinds of asset.

Block D · finding 14

Can the cycle be timed?

If allocation is the decision that matters, the next question is whether it can be changed at the right moment. This is the newest finding, and the most negative.

FINDING 14

The investment clock did not beat its own control

Switching allocation with the growth/inflation quadrant looks like the clever thing to do. In the Brazilian data it cost drawdown and delivered no return.

If allocation is the decision that moved the needle, the natural next question is whether it can be moved at the right moment. The idea is old and has a name — the investment clock. Two axes, growth and inflation, four quadrants, one allocation each.

Growth is read from the market itself: did equities beat cash over the last twelve months? Inflation is read from IPCA or CPI against its own moving average, lagged a month because a month's index is only published in the middle of the next one. The phase read at the end of one month governs the next month's portfolio — a single shift, and it is the whole guarantee that nothing is fed by the return it is about to earn. Each quadrant change moves about a third of the portfolio and pays 15 basis points of turnover.

And the test is built so it can fail. The opponent is not a 60/40: it is the average of the clock's own four allocations, rebalanced on the calendar alone. Same assets, same cost, no timing. Whatever separates the two lines is the timing and nothing else.

Exhibit 15 — The cycle portfolio against its control  real return a year; the control holds the same assets with no timing
Brasil · B3
United States

The two markets answer differently, and the sensitivity grid is what decides which answer deserves credit.

In Brazil it did not work. The rule made 6.2% real a year against 5.8% for the control — while taking a -12.5% drawdown against -8.1%, and turning over 65% of the portfolio a year against 5%. Run across eighteen different settings it beats its own control on return in 22% of cells, on Sharpe in 11%, and on drawdown in none.

Year by year it is 7 ahead and 8 behind out of 15 — a coin flip. And the +0.4% a year edge inverts to -0.3% if you drop 2015, the year of the Brazilian stagflation, when that phase's 40% in cash and 15% in dollars rescued the portfolio. The whole edge lives in one year.

In the United States it worked better — and still is not proof. There the rule made 4.9% against 3.0% for the control, beats the control on return in 100% of the eighteen cells, on Sharpe in 83%, on drawdown in 72%, and improves monotonically the slower the rule gets. That is a plateau, not a lucky cell. The edge survives dropping the best year: +1.8% becomes +1.2%.

Which still is not enough, and the reason is the hardest test in this section. Slide the same phase sequence through time, offset by offset — that preserves how many phases there were and how long each lasted, and destroys only the alignment with the market. The true calendar lands at the 80% percentile in Brazil and 69% in the US — and across the whole grid, at a median percentile of 51% and 71%. Fifty per cent is what getting nothing right produces.

What stands The ceiling is there: an oracle picking the best of the four baskets every month would make 19.7% real a year in Brazil and 19.9% in the US. The menu has room to spare. What does not exist, in this data, is the signal that reaches it — and the static portfolio of the same menu delivered nearly the same return with far less drawdown and 5% of annual turnover instead of 65%.
Exhibit 16 — The four phases and what each one buys
Exhibit 17 — The same rule across eighteen settings  each row against its own control; an edge that exists in one cell was not discovered, it was selected
Block E · one ruler

Everything, year by year

A CAGR says a thing won without ever saying when. The last table puts every candidate on one row per year.

ONE RULER

Everything the money could have been, year by year

The sections above compare one thing at a time. This one puts them all in a single table: the six swing strategies, the portfolios and every asset class.

A CAGR says a thing won without ever saying when, and two curves with the same CAGR and opposite years are not the same investment. Each row keeps its own history — the Since column says when it starts — but the CAGR column uses one shared window, otherwise whichever row was born in a better period would win the table for that reason alone.

Exhibit 18 — Real return year by year, everything in one table  ★ production sleeve · * short history, CAGR outside the common window · green: above inflation

Four things jump out, and none of them is about last year.

The production sleeves are the best swing rows in their own markets — donchian at 7.0% real in Brazil, momentum at 8.7% in the US — and the cross-market test confirms why each lives where it lives: momentum in Brazil drops to 5.5% and donchian in the US to 3.4%. It degrades rather than collapsing, which is the acceptable behaviour.

The failed strategies look failed. rsi2 made 0.0% real a year in Brazil — below CDI, below the savings account, below doing nothing at all. The validation protocol that blocked them was right, and this table is its audit.

And the whole hierarchy of the study appears in one column. In Brazil the swing book beats CDI (3.8%) and the Ibovespa (2.1%) comfortably — and loses badly to the S&P 500 in reais (16.8%). In the US the story inverts: momentum loses to the S&P itself (11.6%), while the T-bill returns -1.2% real a year. The swing edge exists against cash. It never existed against being long American equities.

How to read it Green is a positive year in real terms, red is negative, and the intensity is the size. Look for the columns that are coloured all the way down: 2021 in Brazil, when even CDI and the savings account lost to inflation, and 2022 in the US, when almost everything but commodities fell. Those are the years in which diversifying inside one country saved nobody.
THE OTHER COLUMN

What it costs to run

The Brazilian sleeve asks for 37 trades a year — 74 orders — plus a screening run every session. The US sleeve asks for 228 trades, 456 orders. The passive alternative asks for one order, ever.

At the Brazilian sleeve's residual edge over a cash-matched passive portfolio, 3.2 points a year, a R$100,000 account earns roughly R$3,200 a year for that work. Whether that is a good hourly rate depends entirely on the size of the account — which is the real argument for automating the whole thing, and the real limit on swing trading as a strategy for small capital.

Part 4

What this does not prove

The limits of the study, listed before the conclusion on purpose — anyone reading only the conclusion should have passed through here.

BOUNDS

What would change these numbers

Survivorship. The universe is today's index membership walked backwards. Dropped companies are missing, and they were dropped for doing badly. This helps the passive baselines most, and the equal-weight baseline enormously — treat its 17.7% US figure as an unreachable ceiling, not a portfolio.
One path. Every point estimate is a single draw from 16.6 years. The rolling-window sections give some spread; they are not a distribution.
In-sample parameters. Donchian's 40/10 lookbacks and momentum's 189/21 were selected by the validation protocol on the training portion — but selected on this data. The passive baselines have no parameters to select.
Cash yield is a broker decision. The Brazilian result assumes the broker pays 100% of CDI on idle balances. Many do; some pay nothing. At 0% the same system makes 5.1% a year instead of 12.4%.
Rates are not stable. The Brazilian result rests on a period when CDI averaged 9.8%. At a Selic near 2%, as in 2020, more than half the swing return simply disappears.
No borrowing costs. The leverage section is arithmetic, not a financing model.
The ETF section is a snapshot of one tax code. IOF at 1.1% on an investment remittance, 15% on the gain and 30% withheld on US dividends are the rules as they stand in 2026; all three have changed inside this sample and can change again. The exchange spread is assumed at 0.5% a side, which a good broker beats and a bad one doubles, and the projection holds today's CDI for twenty years, which nothing in this study suggests is likely.
US estate tax is not modelled. A Brazilian holding US-listed shares directly is exposed to it above US$60,000 of US-situs assets, at rates up to 40%. That risk sits entirely on the route this section otherwise scores slightly ahead.
The asset-class table is gross. No tax, no fund fees, no bid-ask. It also compares indices, which nobody can buy: a real investor pays a spread to track them, and pays income tax on the bond and property lines but not on the savings account. Netting those out would widen the gap between cash-like assets and everything else, not close it.
Overlapping windows are not independent draws. The 139 five-year periods in Finding 10 come from 16.6 years of data, so neighbouring windows share most of their months. They describe the experience of starting at different times, which is the question asked — they are not 139 independent samples, and no confidence interval should be read into them.
The tax model is a model. One resident individual, long holding periods, the 15% floor of the regressive table, and stated assumptions for the income share of each class — 8% a year for property funds, 4% net rent for a flat. No pension wrappers, no offsetting of losses across classes, no wealth tax, and the rules held constant across sixteen years in which they in fact changed.
Rate buckets are contemporaneous, not predictive. Finding 12 splits the sample by the trailing real rate, which is measured after the fact and is as much a description of the inflation shock as of policy. It says what happened alongside low real rates in this sample. It does not forecast the next cut.
Property is an appraisal, not a price. The IVG-R is built from bank valuations of financed homes, so it is smoothed: its volatility and drawdown are far too low to compare with a traded asset, and the 4% net rent added on top is an assumption, not a measurement.
The cycle portfolio's allocations are in-sample. The four weight sets were written while looking at the same history that then scores them. That is why the static control holds exactly the same classes — to isolate the timing — and why the eighteen-cell grid and the rotation test are in the article instead of a single number.
Fifteen years are few cycles. Part 3, block D, measures an investment clock over roughly fifteen years and twenty-four phase changes. That is a thin sample for a question whose natural unit is a whole cycle, and no result there — positive or negative — should be read as settled.
The year-by-year table mixes rulers. The swing rows include interest on idle cash and carry the universe's survivorship bias; the asset classes are indices with no tax and no fee. It is a table for comparing orders of magnitude, not for choosing between two neighbouring rows.
Part 5

Conclusion

Nine things the data says, and the one sentence I would defend in an argument.

CONCLUSION

Nine things the data says

01

The naive question is unanswerable

"Did the strategy beat the index?" cannot be answered, because the two do not hold the same equity risk. A book sized by volatility is 72% cash; comparing it to a fully invested index measures the market's mood over the sample, not the rules.

02

The real edge is half the advertised one

Against a passive portfolio holding the same average exposure, the Brazilian sleeve earned 3.2 percentage points a year — stably, across every interest-rate regime. Real, and roughly half of what the index comparison claims.

03

Risk-adjusted, the trader wins; in wealth, the investor usually does

Higher Sharpe in both markets and a third of the drawdown — and still US$106k against the index's US$182k, because the risk it declined to take was risk that paid. Converting Sharpe into money needs leverage, and leverage is where paper strategies go to die.

04

The environment decides, not the discipline

Same engine, same risk rules, same discipline — a clear win in Brazil and a clear loss in the US. The difference is mostly CDI at 9.8% against T-bills at 1.3%. Anyone reporting a Brazilian swing-trading record from the last decade is reporting, in large part, the Selic rate.

05

And in Brazil, risk itself went unpaid

Widen the frame past this strategy and the whole domestic risk menu — stocks, small caps, listed property, physical property — lost to a money market paying 3.9% real. The debate over a few points of trading edge sits on top of a market where the equity premium was negative for sixteen years, and where the only things that beat cash were priced in dollars.

06

The decision that mattered was the currency, not the strategy

Every finding here converges on the same unglamorous move. Twenty percent of a Brazilian portfolio in the S&P 500 raised the real return from 2.2% to 5.5% a year and cut the drawdown from 22% to 14%; it was the only asset that paid when real rates were low, which is precisely when everything domestic broke. No trading rule in this study moved the needle as much as that one allocation — and it requires no screening run, no stop-loss and no discipline beyond leaving it alone.

07

But the dollar leg is compensation, not alpha

The currency did not hand out 6% a year on top of the S&P. It paid 6.3% while the rate gap implied 8.4% — two points a year below parity — and what it pays is what you give up by leaving the CDI. Buying it costs 0.4 points a year through a Brazilian wrapper or 2.4% once at the border, and the two routes land within 2% of each other over any horizon. The allocation is the decision; the ticker is a rounding error.

08

Timing the cycle is harder than it looks — and the ceiling is high

A portfolio that switches allocation on the growth/inflation quadrant did not beat the average of its own allocations in Brazil: a worse drawdown in all eighteen tested variants, and its entire return edge living in a single year. In the US it beat the control in all eighteen, but the true phase calendar sits at the 71% percentile against random rotations of that same sequence. Meanwhile a look-ahead oracle would make about 20% real a year in both markets. The menu has room; it is the signal that failed to show.

09

The right control is nearly always the hardest thing to build

Every finding here became useful the moment it got a fair opponent: the same-exposure blend for the swing book, the average of the four phases for the clock, the ETF a Brazilian fund actually holds for the B3 route, the rotated phase sequence for the timing. Without them the same spreadsheets would tell a story of skill in all four cases. If this study has a method, that is it — and it transfers to any result anyone puts in front of you.

Not "trading beats investing," nor the reverse. Trading buys a different risk profile at a real but modest price — and in Brazil, the money-market leg has been doing most of the work.

Method. All figures computed from 2,309,558 daily bars in the project's DuckDB store, using its production backtest engine — same costs, same sizing, same risk rules that run live. Prices dividend-adjusted across the whole OHLC bar. Risk-free series are the Brazilian Central Bank's CDI (SGS 12) and US T-bills via BIL total return. The notebook that produces every number is notebooks/swing_vs_investing.ipynb; the helpers that add interest-on-cash, taxes and the passive baselines are in notebooks/study_lib.py.

The ETF section. Prices and distributions of all fourteen funds come from one yfinance call each, on the same split basis, so the dividend leg is measured rather than assumed; unadjusted B3 splits are repaired and printed in the notebook, and each series starts at the first month the fund traded a median of R$100 thousand a day. Route rules are Lei 14.754/2023 for the 15% on foreign gains, Decreto 6.306/2007 as amended in 2025 for the 1.1% IOF on an investment remittance, and the IRS's 30% withholding on dividends paid to a non-resident with no treaty. The code is notebooks/etf_routes.py and src/swing_quant/data/etfs.py.

The new sections. The cycle portfolio and the year-by-year table are notebooks/cycle_portfolio.py and notebooks/annual_comparison.py, with tests under tests/. Unlike the rest of the article, the numbers in those two sections are written in by a build step — notebooks/article_data.py — rather than copied by hand, so they cannot disagree with what the code produces.

Not investment advice. Backtested results, one historical path, simplified taxes.