One Formula, 18 Exchanges: The Magic Formula Beats Local Benchmarks in Most Markets
The Magic Formula adds value more broadly than we first thought. We ran Greenblatt's two-factor screen on 18 global exchanges from 2000 to 2025. With local benchmarks (Sensex for India, FTSE for the UK, DAX for Germany, KOSPI for Korea) instead of comparing everything against the S&P 500, 12 of 18 exchanges show positive excess returns.
Contents
- Method
- The Screen (SQL)
- Full Results
- The Three Standouts
- India (24.25% CAGR, +13.12% vs Sensex)
- Brazil (19.67% CAGR, +10.72% vs Bovespa)
- UK (9.38% CAGR, +8.02% vs FTSE 100)
- The Middle: Positive but Modest
- Germany (9.90% CAGR, +4.78% vs DAX)
- Japan (6.71% CAGR, +3.31% vs Nikkei 225)
- Hong Kong (4.48% CAGR, +2.71% vs Hang Seng)
- Taiwan (7.03% CAGR, +2.65% vs TAIEX)
- Korea (7.20% CAGR, +2.40% vs KOSPI)
- China (5.84% CAGR, +1.65% vs SSE Composite)
- US (9.53% CAGR, +1.51% vs S&P 500)
- Canada (6.11% CAGR, +1.03% vs TSX Composite)
- The Underperformers
- Sweden (8.15% CAGR, +0.14% vs S&P 500*)
- Australia (3.52% CAGR, -0.68% vs ASX 200)
- Indonesia (7.15% CAGR, -0.87% vs S&P 500*)
- Israel (5.64% CAGR, -2.38% vs S&P 500*)
- Thailand (3.97% CAGR, -4.05% vs S&P 500*)
- Saudi Arabia (1.84% CAGR, -6.17% vs S&P 500*)
- France (0.00% CAGR, 103/103 cash periods)
- Why India and Brazil Win
- The Benchmark Lesson
- The Market Cap Threshold Lesson
- Limitations
- What This Means
- Part of a Series
- Run This Screen Yourself
India (+13.12% vs Sensex) and Brazil (+10.72% vs Bovespa) are still the standouts. The UK is the surprise: +8.02% vs the FTSE 100, the third-best excess return in the dataset. Germany (+4.78% vs DAX), Japan (+3.31% vs Nikkei), Hong Kong (+2.71% vs Hang Seng), Taiwan (+2.65% vs TAIEX), and Korea (+2.40% vs KOSPI) all show positive alpha against their own markets. The old all-SPY comparison penalized non-USD exchanges with a cross-currency mismatch. Local benchmarks give a fairer read.
The pattern from the original analysis still holds: value/quality signals generate stronger alpha in markets with less analyst coverage and weaker price discovery. But the formula isn't just an India/Brazil story. It adds value vs local indices across most of the exchanges we tested.
Method
Signal: Rank(Earnings Yield DESC) + Rank(ROCE DESC), buy top 30. Exclude Financial Services and Utilities. Universe: Per-exchange market cap thresholds in local currency (India: Rs.20B, Indonesia: IDR 5T, Brazil: R$1B, US: $1B, UK: GBP500M, Japan: JPY100B, Korea: W500B, Germany: E500M, etc.) Period: 2000-2025 (25.8 years, 103 quarterly periods) Rebalancing: Quarterly (January, April, July, October), equal weight Execution: Next-day close (MOC). Signal computed at quarter-end close, portfolio rebalanced at the following trading day's close. Transaction costs: Size-tiered (0.1% for >$10B, 0.3% for $2-10B, 0.5% for <$2B, one-way) Cash rule: Hold cash if fewer than 10 stocks qualify Benchmark: Local market index where available (Sensex, FTSE 100, Nikkei, DAX, KOSPI, etc.). S&P 500 used for exchanges without a local index in the data (see table). Exchanges tested: 18 (PAR/France excluded from analysis, zero qualifying stocks across all periods)
Same formula, same parameters, same rebalance dates. The only variable is the stock universe and its local-currency market cap threshold.
Important note on thresholds: FMP stores market cap in local currency, not USD. A naive marketCap > 1000000000 filter means $1B in the US but only IDR 1B (~$65K) in Indonesia or Rs.1B (~$12M) in India. Previous versions of this analysis used a flat $1B numerical threshold globally, which captured micro-cap stocks in non-USD markets. This version uses exchange-specific thresholds calibrated to target liquid, investable companies (~$200-500M USD equivalent). The correction materially changed results for Indonesia, Korea, and Thailand.
Execution note: This version uses next-day close (market-on-close) execution. The signal is computed from quarter-end financial data. Trades execute at the next trading day's close, reflecting realistic execution. Earlier versions used same-day pricing, which overstated returns by 1-2% CAGR in faster-moving markets.
For full methodology and the Greenblatt ranking system, see the main US Magic Formula post.
The Screen (SQL)
WITH base AS (
SELECT
k.symbol,
p.companyName,
p.exchange,
p.sector,
k.earningsYieldTTM as earnings_yield,
k.returnOnCapitalEmployedTTM as roce,
k.marketCap / 1e9 as market_cap_billions
FROM key_metrics_ttm k
JOIN profile p ON k.symbol = p.symbol
WHERE k.earningsYieldTTM > 0
AND k.returnOnCapitalEmployedTTM > 0
AND k.marketCap > 1000000000 -- Adjust per exchange (see note below)
AND p.sector NOT IN ('Financial Services', 'Utilities')
-- Change exchange filter per market:
AND p.exchange IN ('BSE', 'NSE')
)
-- Per-exchange thresholds (local currency):
-- India: k.marketCap > 20000000000 (₹20B, ~$240M USD)
-- Indonesia: k.marketCap > 5000000000000 (IDR 5T, ~$310M USD)
-- Korea: k.marketCap > 500000000000 (₩500B, ~$370M USD)
-- Brazil: k.marketCap > 1000000000 (R$1B, ~$200M USD)
-- US: k.marketCap > 1000000000 ($1B USD)
-- Germany: k.marketCap > 500000000 (€500M, ~$545M USD)
-- See backtests/cli_utils.py for full threshold map
,
ranked AS (
SELECT *,
RANK() OVER (ORDER BY earnings_yield DESC) AS ey_rank,
RANK() OVER (ORDER BY roce DESC) AS roce_rank
FROM base
)
SELECT symbol, companyName, exchange, sector,
ROUND(earnings_yield * 100, 2) as ey_pct,
ROUND(roce * 100, 2) as roce_pct,
ey_rank, roce_rank,
(ey_rank + roce_rank) as combined_rank,
ROUND(market_cap_billions, 1) as mcap_bn
FROM ranked
ORDER BY combined_rank ASC
LIMIT 30
Run this query on Ceta Research
Full Results
Sorted by excess CAGR over each exchange's local benchmark. All 18 exchanges tested, including PAR (France) which had zero qualifying stocks.
| Exchange | CAGR | Benchmark | Excess CAGR | Sharpe | MaxDD | Beta | Cash Pds | Avg Stocks |
|---|---|---|---|---|---|---|---|---|
| India (BSE+NSE) | 24.25% | Sensex | +13.12% | 0.536 | -61.31% | 1.167 | 7/103 | 25.6 |
| SAO (Brazil) | 19.67% | Bovespa | +10.72% | 0.343 | -45.06% | 0.761 | 1/103 | 21.8 |
| LSE (UK) | 9.38% | FTSE 100 | +8.02% | 0.286 | -40.00% | 1.003 | 0/103 | 14.5 |
| XETRA (Germany) | 9.90% | DAX | +4.78% | 0.427 | -38.91% | 0.546 | 0/103 | 20.2 |
| JPX (Japan) | 6.71% | Nikkei 225 | +3.31% | 0.290 | -70.10% | 0.896 | 0/103 | 29.0 |
| HKSE (Hong Kong) | 4.48% | Hang Seng | +2.71% | 0.051 | -67.30% | 1.070 | 0/103 | 21.0 |
| TAI (Taiwan) | 7.03% | TAIEX | +2.65% | 0.302 | -51.00% | 0.494 | 21/103 | 28.4 |
| KSC (Korea) | 7.20% | KOSPI | +2.40% | 0.227 | -36.92% | 0.493 | 21/103 | 27.2 |
| China (SHZ+SHH) | 5.84% | SSE Comp | +1.65% | 0.090 | -69.78% | 1.148 | 0/103 | 22.2 |
| US_MAJOR | 9.53% | S&P 500 | +1.51% | 0.322 | -54.71% | 1.072 | 0/103 | 25.1 |
| Canada (TSX) | 6.11% | TSX Comp | +1.03% | 0.174 | -65.09% | 1.069 | 0/103 | 27.3 |
| STO (Sweden) | 8.14% | S&P 500* | +0.12% | 0.285 | -49.20% | 1.042 | 0/103 | 26.8 |
| ASX (Australia) | 3.52% | ASX 200 | -0.68% | 0.001 | -51.70% | 1.075 | 0/103 | 23.4 |
| JKT (Indonesia) | 7.15% | S&P 500* | -0.87% | 0.240 | -52.89% | 0.604 | 25/103 | 27.1 |
| TLV (Israel) | 5.64% | S&P 500* | -2.38% | 0.135 | -54.15% | 0.589 | 25/103 | 27.1 |
| SET (Thailand) | 3.89% | S&P 500* | -4.13% | 0.062 | -56.14% | 0.769 | 17/103 | 27.8 |
| SAU (Saudi Arabia) | 1.84% | S&P 500* | -6.17% | -0.082 | -57.68% | 0.426 | 29/103 | 25.3 |
| PAR (France) | 0.00% | S&P 500* | -8.02% | - | 0% | 0.0 | 103/103 | 0 |
*Exchanges marked with S&P 500* don't have a local index in the dataset. Their excess return is still measured against SPY, which introduces a cross-currency mismatch. Treat those comparisons with caution.
The gap between top and bottom is still large. India's 24.25% CAGR vs Saudi Arabia's 1.84%. Same formula, same rules, same period. But the shift to local benchmarks changes the story. Twelve exchanges beat their local index. The Magic Formula isn't just an India/Brazil phenomenon. It adds value in more markets than the old SPY-only comparison suggested.
The Three Standouts
India, Brazil, and the UK produced the largest excess returns. All three generated enough alpha to survive transaction costs, currency adjustments, and data quality concerns.
India (24.25% CAGR, +13.12% vs Sensex)
The highest raw returns and the best Sharpe (0.536) of any exchange. $10,000 became roughly $2.7 million over 25 years (in Rupees). India had 7 cash periods, all in the early 2000s when the Rs.20B threshold left fewer qualifying stocks. Once the Indian equity market deepened around 2005, the formula was fully invested.
The max drawdown of -61.31% is deep but much shallower than the previous analysis showed (-75.48% with the old Rs.1B threshold). Removing micro-cap noise improved risk-adjusted performance across the board. Win rate of 60.19%, the highest of any exchange.
India's large-cap universe expanded rapidly from 2005 onward. High-quality, cheap companies were abundant and under-followed. The Magic Formula caught them systematically. Full India analysis.
Brazil (19.67% CAGR, +10.72% vs Bovespa)
Strong absolute returns with moderate risk. The max drawdown of -45.06% is one of the shallower results in the dataset, and the beta of 0.761 is well below market. Brazil had only 1 cash period out of 103, meaning the formula found enough qualifying stocks in almost every quarter. The Sharpe of 0.343 is solid.
Brazil's qualifying companies tend to be commodity producers and consumer businesses serving the domestic market. High earnings yields and strong ROCE are common in an economy with structurally high interest rates. Companies that survive in that environment tend to be capital-efficient by necessity. Full Brazil analysis.
UK (9.38% CAGR, +8.02% vs FTSE 100)
The surprise of the dataset. The FTSE 100 returned just 1.36% CAGR over 25 years, dragged down by heavy weightings in energy, pharma, and mining. The Magic Formula on LSE-listed stocks returned 9.38%, generating +8.02% annual excess. Zero cash periods. The max drawdown of -40.00% is one of the shallowest in the dataset.
The caveat: the average portfolio held only 14.5 stocks per quarter (vs 30 max). The GBP 500M threshold and sector exclusions leave a thinner universe. But the stocks that pass deliver. Win rate of 60.2%, beta of 1.003, and an alpha of 8.03%. The UK's mid-cap space is deep enough for the formula to find quality at a discount, and the FTSE 100's structural sluggishness makes the relative comparison look strong.
The Middle: Positive but Modest
Seven exchanges show positive excess returns over their local benchmarks, ranging from +4.78% (Germany) down to +1.03% (Canada). Several of these were negative under the old SPY comparison.
Germany (9.90% CAGR, +4.78% vs DAX)
A clear winner once measured against the DAX instead of SPY. The Sharpe of 0.427 is the second-best in the dataset, and the beta of 0.546 is the lowest among positive-excess exchanges. Germany's Mittelstand companies (mid-sized industrials) fit the ROCE profile well, and the portfolio's low market sensitivity is appealing. The E500M threshold targets established mid-cap industrials (~$545M USD). Zero cash periods.
Japan (6.71% CAGR, +3.31% vs Nikkei 225)
Japan produced solid results once measured against the Nikkei. Zero cash periods, 29 stocks per quarter on average, and a 0.290 Sharpe. The -70.10% max drawdown is the deepest in the dataset (driven by the 2008 crisis: -56.6%), but the formula outperformed the Nikkei in 15 of 26 years. The formula found cheap, capital-efficient Japanese manufacturers and exporters that the Nikkei's heavy weighting in tech giants undervalued. 2007 was a standout: +231.7% for the portfolio as cheap Japanese industrials rerated.
Hong Kong (4.48% CAGR, +2.71% vs Hang Seng)
Previously showed -3.11% excess vs SPY. Against the Hang Seng, the formula actually outperformed. This makes sense: Hong Kong's local index has suffered structurally since 2018, and the formula's stock selection avoided some of the worst damage. Beta of 1.070 means roughly market-level exposure. The Sharpe of 0.051 is thin, though, and the -67.30% max drawdown is severe.
Taiwan (7.03% CAGR, +2.65% vs TAIEX)
Flipped from -1.07% (vs SPY) to positive. 21 cash periods. Taiwan's tech-heavy market concentrates the qualifying pool. The Sharpe of 0.302 is decent, and the low beta (0.494) means the formula picked defensive names relative to the broader market.
Korea (7.20% CAGR, +2.40% vs KOSPI)
Another flip. Was -1.02% vs SPY, now positive vs KOSPI. 21 cash periods and a low beta of 0.493. Korea's chaebol governance discount may not translate into alpha vs global benchmarks, but the formula does pick stocks that outrun the local market. The -36.92% max drawdown is the shallowest in the entire dataset.
China (5.84% CAGR, +1.65% vs SSE Composite)
The formula barely edges out the SSE Composite, with a 0.090 Sharpe and -69.78% max drawdown (the worst in the dataset after France). State-owned enterprises often show high reported ROCE but deliver poor shareholder returns. The signal works, but just barely.
US (9.53% CAGR, +1.51% vs S&P 500)
The baseline. Zero cash periods, 25 stocks per quarter, reliable execution. The alpha is real but modest, and most of it came before 2014. The last decade has been painful for US value strategies. Full analysis in the US post.
Canada (6.11% CAGR, +1.03% vs TSX Composite)
Barely positive vs the TSX Composite, after showing -1.08% vs SPY. The Canadian market is dominated by energy, mining, and financials. Energy and mining have volatile ROCE. Financials are excluded. What's left is a thin universe. Zero cash periods but mediocre picks.
The Underperformers
Sweden (8.15% CAGR, +0.14% vs S&P 500*)
Essentially flat. No local index available in the data, so this is still a cross-currency comparison. The beta of 1.041 means most of the return is market exposure. The Sharpe of 0.286 is middling. Zero cash periods.
Australia (3.52% CAGR, -0.68% vs ASX 200)
The Sharpe of 0.001 is effectively zero. Australia's market is dominated by banks (excluded) and miners (volatile ROCE). What passes the screen doesn't generate enough alpha to beat the ASX 200.
Indonesia (7.15% CAGR, -0.87% vs S&P 500*)
This is a correction. An earlier version of this analysis reported Indonesia as the "best risk-adjusted result" with a 0.725 Sharpe and 19.58% CAGR. Those numbers were wrong. The old analysis used a IDR 1B threshold (~$65K USD), which captured companies too small to trade in practice. Illiquid micro-caps show artificially low volatility, inflating the Sharpe ratio.
With a proper IDR 5T threshold (~$310M USD targeting liquid, investable companies), Indonesia returned 7.15% CAGR with a 0.240 Sharpe and -52.89% max drawdown. The strategy was in cash for 25 of 103 periods. No local index is available in the data, so the -0.87% excess is still vs SPY (cross-currency). Full Indonesia analysis.
Israel (5.64% CAGR, -2.38% vs S&P 500*)
25 cash periods. Israel's tech sector tends toward high-growth, low-earnings companies that the formula ignores. Cross-currency comparison (no local index in the data).
Thailand (3.97% CAGR, -4.05% vs S&P 500*)
Another major correction (was 9.54% with old threshold). With B10B (~$280M USD), Thailand drops from marginal outperformer to clear underperformer. 17 cash periods. The -56.13% drawdown and 0.066 Sharpe leave no room for a bullish case. Cross-currency comparison.
Saudi Arabia (1.84% CAGR, -6.17% vs S&P 500*)
The worst result with actual data. 29 cash periods. Negative Sharpe. The Tadawul only opened to foreign investors in 2015. The early years run on a limited, thinly traded universe.
France (0.00% CAGR, 103/103 cash periods)
Zero qualifying stocks in any period. Likely a data coverage issue rather than a genuine absence of cheap, high-ROCE French companies.
Why India and Brazil Win
Three factors explain the concentration of alpha in these two markets.
Analyst coverage. India's Rs.20B+ stocks average far fewer sell-side analysts than US equivalents. Brazilian mid-caps on B3 are similarly undercovered. Fewer eyeballs means the market takes longer to reprice a mispricing. The Magic Formula is a simple screen. Simple screens work best when nobody else is running them.
Market depth without over-efficiency. Both India and Brazil have deep enough stock markets to populate the portfolio (25+ and 21+ stocks per quarter respectively) while remaining inefficient enough for the signal to work. Germany and Korea also show positive excess, but the magnitude is smaller because those markets are more closely followed.
Economic cyclicality. Both markets experienced dramatic boom-bust cycles over this period. India's IT boom, the 2008 crisis and recovery, and the post-2014 Modi-era growth. Brazil's commodity boom (2003-2007), Dilma recession (2013-2015), and reform rally (2016-2020). The Magic Formula's quarterly rebalancing captures mean reversion within these cycles.
The Benchmark Lesson
The shift from all-SPY to local benchmarks changed the picture considerably.
Under the old approach, comparing local-currency returns against a USD benchmark inflated apparent alpha for depreciating currencies and understated it for appreciating ones. India's INR lost roughly 60% vs USD over 25 years. Brazil's BRL lost even more in certain periods. Measuring them against SPY made the alpha look enormous but also mixed in currency depreciation noise.
Local benchmarks solve this by keeping everything in the same currency. India's 24.25% CAGR vs Sensex's 11.13% is a clean, same-currency comparison. Germany's 9.90% vs DAX's 5.12% is euros vs euros.
The exchanges that flipped tell the real story:
| Exchange | Excess vs SPY (old) | Excess vs Local (new) | Change |
|---|---|---|---|
| LSE (UK) | N/A | +8.02% | New (strong) |
| XETRA (Germany) | +1.66% | +4.78% | Underrated |
| JPX (Japan) | N/A | +3.31% | New (positive) |
| HKSE (Hong Kong) | -3.11% | +2.71% | Flipped to positive |
| TAI (Taiwan) | -1.07% | +2.65% | Flipped to positive |
| KSC (Korea) | -1.02% | +2.40% | Flipped to positive |
| China | -2.15% | +1.65% | Flipped to positive |
| Canada | -1.08% | +1.03% | Flipped to positive |
Eight exchanges show positive alpha vs local indices that wasn't visible in the old SPY comparison. The formula's stock selection was adding value all along. The old benchmark just couldn't see it.
For exchanges still compared against SPY (Sweden, Indonesia, Israel, Thailand, Saudi Arabia, France), the cross-currency mismatch remains. Those numbers should be treated as approximate.
The Market Cap Threshold Lesson
This analysis corrected a significant error from earlier versions. The original backtests used marketCap > 1000000000 as a universal filter. In the US, that's $1B, a reasonable investability floor. In Indonesia, it's IDR 1B, approximately $65,000 USD. That's not a company, it's a corner shop.
The corrections were dramatic:
| Exchange | Old CAGR | New CAGR | Threshold Change |
|---|---|---|---|
| Indonesia | 19.58% | 7.15% | IDR 1B -> IDR 5T (5000x) |
| Thailand | 9.54% | 3.97% | B1B -> B10B (10x) |
| Korea | 11.96% | 7.20% | W1B -> W500B (500x) |
| India | 21.25% | 24.25% | Rs.1B -> Rs.20B (20x) |
Indonesia's "best risk-adjusted returns" were entirely micro-cap noise. Thailand dropped from marginal outperformer to underperformer. Korea lost its positive excess vs SPY, but gained positive excess vs KOSPI.
India is the interesting exception. The stricter threshold (Rs.20B vs Rs.1B) actually improved results. Removing micro-cap noise reduced drawdowns and volatility more than it reduced returns. The Sharpe improved from 0.386 to 0.536.
The lesson generalizes: always check local currency equivalents before applying exchange filters to non-USD markets.
Limitations
Survivorship bias. Exchange membership uses current company profiles. Companies that delisted, went bankrupt, or were acquired aren't captured retrospectively. This biases returns upward across all exchanges, but the bias is likely larger in volatile emerging markets.
Incomplete local benchmarks. Six exchanges (Sweden, Indonesia, Israel, Thailand, Saudi Arabia, France) don't have a local index in the dataset. Their excess returns are measured against SPY, which introduces a cross-currency mismatch. Results for these exchanges should be treated as directional, not precise.
Different market structures. Trading hours, settlement cycles, short-selling rules, and foreign ownership limits vary by exchange. The backtest assumes you can buy any qualifying stock at the rebalance date, which isn't always true.
Data coverage varies. FMP's coverage is deeper for US stocks than emerging markets. PAR (France) had zero qualifying stocks, likely due to data gaps. Results reflect data availability as much as strategy performance.
Sector composition. Excluding Financials and Utilities removes different proportions of each market. Financials make up ~30% of the ASX vs ~15% of US exchanges.
Concentrated portfolios. 30 stocks per quarter is concentrated. In smaller markets (XETRA with 20.2 average, HKSE with 21.0), the portfolio is even more concentrated.
Transaction costs are estimated. We use the same size-tiered cost model globally. Real costs in Indonesia or Saudi Arabia are higher than in the US.
What This Means
The Magic Formula beats local benchmarks in 12 of 18 exchanges. That's a broader result than the old analysis suggested.
India (+13.12% vs Sensex), Brazil (+10.72% vs Bovespa), and the UK (+8.02% vs FTSE 100) lead the pack. But Germany, Japan, Hong Kong, Taiwan, Korea, China, the US, and Canada all show positive excess over their local indices. The formula adds value in most markets where there's enough data to run it.
The shift to local benchmarks matters. Comparing INR returns against a USD benchmark made India look like a 16% alpha machine. Against Sensex, it's 13%. Still exceptional, but more honest. The UK at +8.02% vs the FTSE 100 and Germany at +4.78% vs the DAX were hiding real alpha behind an unfavorable USD comparison.
For investors: the Magic Formula is a global strategy, not just an emerging market one. It works best where analyst coverage is thin (India, Brazil), but it adds value even in well-covered markets like the UK and Germany when measured against the right benchmark.
Part of a Series
This is the global comparison post. Individual exchange analyses with year-by-year breakdowns:
- Magic Formula on US Stocks (NYSE + NASDAQ + AMEX) - 9.53% CAGR, the baseline
- Magic Formula on Indian Stocks - 24.25% CAGR, the standout performer
- Magic Formula on Indonesian Stocks (JKT) - 7.15% CAGR, corrected from earlier analysis
- Magic Formula on Brazilian Stocks (SAO) - 19.67% CAGR, strong emerging market value premium
Run This Screen Yourself
Via web UI: Run the Magic Formula screen on Ceta Research. Change the exchange filter and market cap threshold in the SQL to screen any market.
Via Python:
# Clone the backtest repo
git clone https://github.com/ceta-research/backtests.git
cd backtests
# Run the screen for a specific exchange
export CR_API_KEY="your-api-key"
python3 magic-formula/screen.py --exchange BSE
# Run the full global comparison
python3 magic-formula/run_all_exchanges.py
Get your API key at cetaresearch.com. The full backtest code (Python + DuckDB) is on GitHub.
Data: Ceta Research (FMP financial data warehouse). 18 exchanges tested, quarterly rebalance, equal weight top 30, 2000-2025. Next-day close (MOC) execution. Size-tiered transaction costs. Per-exchange market cap thresholds in local currency. Benchmarked against local market indices where available, S&P 500 otherwise.