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.
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.
The question it answers, why almost every answer in circulation is wrong, and the minimum vocabulary to read the rest without stumbling.
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.
Six terms show up in nearly every exhibit. With these six clear, the rest of the article reads without a dictionary.
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.
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.
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.
Five blocks of questions, fourteen findings. Each opens with the answer in one sentence; the rest of the block is the evidence.
The study's original question, and the only one in which a trading system is the thing on trial.
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.
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.
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.
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.
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.
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 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.
Everything so far has been about return. Drawdown is what decides whether a person stays in the seat.
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.
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.
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.
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.
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.
Widen the frame to every asset a household could hold, and the argument about a few points of trading edge changes size.
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.
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.
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.
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.
The Brazilian panel holds the single most useful sentence in this study, and it has nothing to do with trading.
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.
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.
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.
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.
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.
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.
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.
The asset classes above are indices, and nobody buys an index. This part asks what survives the fund, the currency crossing and the tax.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
A CAGR says a thing won without ever saying when. The last table puts every candidate on one row per 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.
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.
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.
The limits of the study, listed before the conclusion on purpose — anyone reading only the conclusion should have passed through here.
Nine things the data says, and the one sentence I would defend in an argument.
"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.
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.
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.
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.
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.
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.
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.
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.
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.
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.