Fund choice moves what Brazilian investors earn. We measure how much.

Same category, same 12 months: the median sovereign fixed income fund returned 97.7% of the CDI, while the average holder got 87.6%. We measure gaps like this across funds in public filings and inside a single client portfolio, with every number traced to its source. Agents do much of the work, so each new study or portfolio costs compute, not analyst hours.

What we think

  1. 1. The difference is large, and it’s in public data.Sovereign fixed income: 97.7% of the CDI for the median fund, 87.6% for the average holder. Equities: the median fund trailed the Ibovespa by 11.0 points. → Study 01, Study 02
  2. 2. It’s concentrated, so it can be found.Two thirds of holders in study 01 sat in 51 funds that returned under 90% of the CDI. A gap that sits in specific funds shows up in specific portfolios. → Study 01
  3. 3. Current methods, checked before we trust them.We use the methods recent research uses and hold them to strict rules: point-in-time data with a test that blocks look-ahead, walk-forward validation, survivorship counts, and statistical tests before calling one model better than another. When a published result fails those checks, we publish that too. → Studies 04, 05, Methods
  4. 4. Checking only matters if it’s cheap.An advisor’s book has hundreds of positions. Agents maintain the data and run the checks: 281 of 435 merged changes in the last 30 days came from agent branches, each gated by tests. → System

So the product is the same toolkit run on one client: look-through to holdings, fees against filed peers, liquidity, credit and concentration risk, and return against the benchmark. The advisor decides.

What funds returned vs. what investors got.

Across 231 low-duration sovereign fixed income funds, the median fund returned 97.7% of the CDI in the 12 months to September 30, 2026. Weighted by their 1.03 million holders, investors got 87.6%.

97.7%of the CDI, median fund
87.6%of the CDI, weighted by holders
Return as a share of the CDI, 12 months to September 30, 2026 Two bars on a scale from 0% to 110% of the CDI, with a reference line at 100%. Median fund: 97.7%. Weighted by holders: 87.6%.
Upper bar: median fund. Lower bar: each fund weighted by its number of holders. The line marks 100% of the CDI (14.48% over the window).

How we measured it

  • UniverseFunds whose latest CVM filing classifies them as ANBIMA Renda Fixa Baixa Duração Soberano and that report a quota on both September 30, 2025 and September 30, 2026: 231 of 337.
  • ReturnChange in each fund's quota over the window (net of fund fees, before income tax), divided by the CDI over the same days.
  • SourceCVM daily fund reports and fund extracts. CDI from Central Bank series 12.
  • WeightingEach fund counts by the holders it reported on September 30, 2026. A person in two funds counts twice.

Two thirds of the holders were in the 51 funds that returned less than 90% of the CDI.

SQL and method on GitHub. Past returns don't predict future returns.

Equity funds vs. the Ibovespa.

Across 620 equity funds that declare the Ibovespa as their benchmark, the median fund returned 16.4% in the 12 months to September 30, 2026, against 27.4% for the index: 11.0 points behind. Weighted by their 3.22 million holders, the gap was 7.1 points. Over 3 and 5 years the median gap is about 4 points a year, but those longer windows count only the funds still open today. Over 12 months the gap weighted by holders was smaller than the median gap, the opposite of the CDI study.

−11.0 p.p.vs. the Ibovespa, median fund
−7.1 p.p.vs. the Ibovespa, weighted by holders

Same method as the CDI study: fund quota over the window, net of fees, before tax; holders as filed on September 30, 2026. Benchmark as each fund declares it to CVM. Long-short, small caps, sectoral, dividend and foreign equity funds are left out. SQL and method on GitHub.

All research

  1. 01

    Fixed income funds vs. the CDI Original study

    The median fund returned 97.7% of the CDI over 12 months; weighted by holders, investors got 87.6%. Method and SQL.

  2. 02

    Equity funds vs. the Ibovespa Original study

    The median fund trailed the index by 11.0 points over 12 months; weighted by holders, by 7.1. Method and code.

  3. 03

    Stocks and bonds in Brazil Replication

    Brazilian government bonds diversify but do not hedge equities: the correlation was never reliably negative from 2005 to 2026. Results.

  4. 04

    Volatility forecasting, re-run ReplicationNegative result

    With two protocol errors corrected, the model ranking published in Khan (2026), “Volatility Forecasting with Machine Learning: A Horse Race Across GARCH, HAR, and Tree-Based Models” (SSRN 6663418), does not hold. Code and audit.

  5. 05

    DUSTIN-BR: rates regimes on SILO data Negative result

    A walk-forward model on point-in-time daily data since 2008 showed no reliable edge over simple baselines. Study.

  6. 06

    Fund screening Screening

    Statistical screens over public CVM fund filings that flag unusual patterns in returns, flows and holdings. A flag is a lead for review, not an allegation. Screening results.

  7. 07

    Research-agent evaluation Evaluation

    An agent answered 12 professional research questions through the SILO API; the first baseline passed 2 of 12, and most failures pointed to the API. How it works. Grading.

What we run

Only methods that exist in code with a test or a published use. Each line says where it runs and links to the code.

Research

  • Point-in-time as-of join with a no-look-ahead testEach value enters only after it was published; a test fails if any row sees later data. SILO, rates regimes study · Code
  • Walk-forward evaluation with label purge, against climatology and Markov baselinesL2-regularised multinomial logistic regression scored from 2012; the published verdict is no edge. SILO, rates regimes study · Code
  • Moving-block bootstrap intervalsA 90% interval on the forecast gain, resampled in 21-session blocks. SILO, rates regimes study · Code
  • Fund return against a benchmark, in percentage pointsQuota return per fund, median and holder-weighted mean, annualised for long windows, with closed funds counted apart. SILO, study 02 · Code
  • Market-model residual returns with ridge, chronological splits and a crossed block bootstrapDebenture to equity pilot with a placebo permutation test; no result published yet. SILO, pilot · Code
  • GARCH(1,1), EGARCH, GJR-GARCH, HAR-RV, LightGBM and XGBoostThe published volatility horse race, re-run model by model. Volatility re-run · Code
  • Walk-forward split with embargo and a runtime leakage checkThe correction behind the re-run: validation before each batch, a 5-day embargo, and parameters fixed before scoring. Volatility re-run · Code
  • Diebold-Mariano test with Newey-West errors; Model Confidence Set, SPA and Reality CheckStatistical tests run before calling one model better than another. Volatility re-run · DM, MCS
  • Correlation with Fisher-z intervals and block-bootstrap testsTests whether correlations differ across regimes and countries, including a difference-in-differences test. Stock-bond study · Code
  • Forbes-Rigobon adjusted correlation, tail correlation and tail dependenceSeparates real contagion from higher volatility in a crisis. Stock-bond study · Code
  • DCC(1,1) on GARCH(1,1)-t residuals and copula fits ranked by AIC and BICTime-varying correlation and the shape of joint tails. Stock-bond study · Code
  • Gaussian VaR at a 10-day horizon with correlation stress, and historical crisis P&LHow a 60/40 portfolio behaved in past crises. Stock-bond study · Code

Assessment

  • Return per position over 12 and 6 months, against the CDIFund quota return net of fees; the CDI compounded on B3’s DI factor over the same dates; contribution per line. SILO, advisor report · Code
  • Volatility, maximum drawdown and fee per point of gross returnAnnualised volatility of monthly returns and the drawdown on month-end values. SILO, advisor report · Code
  • Direct credit valuationCRA and CRI on the securitiser’s curve, debentures on the median mark of the funds that hold them; the contracted rate kept apart. SILO, advisor report · Code, contracted
  • Look-through of fund holdingsFollows each fund into its CVM portfolio filings, level by level, with a cycle guard, and finds the same asset held through several lines. SILO, advisor report · Code
  • Fee in R$ a year against the filed peer medianDisclosed fee times position value, compared with funds of the same class (25th, 50th and 75th percentile, at least 30 peers). SILO, advisor report · Fees, peers
  • Market equivalent and class return distributionThe largest ETF on the class index, beside the spread of returns in the fund’s class. SILO, advisor report · Code
  • Tax per position from versioned rulesRate, next bracket, gross-up, come-cotas, IOF and PGBL against VGBL. SILO, advisor report · Code
  • Exposure by asset class, indexer and sectorSums of statement values; anything unclassified is shown apart. SILO, advisor report · Code

Risk

  • ConcentrationLargest credit issuer, maturity ladder, FGC coverage per issuer and exposure per manager. SILO, advisor report · Code
  • Liquidity ladderBuilt from each fund’s filed redemption terms, business and calendar days kept apart. SILO, advisor report · Code
  • Fixed-threshold risk table and credit flagsIssuer, fund, indexer and liquidity limits, plus CRA and CRI status and debenture price against the funds’ mark. SILO, advisor report · Code
  • Unusual movement z-scoreA fund’s monthly return against its ANBIMA class, with class statistics winsorised at the 1st and 99th percentile. SILO, advisor report · Code
  • Fund and filing screensFixed-threshold screens over public filings, including late, silent and restated filings. Signals, not verdicts. SILO, read API · Screens, filings

How it fits together

  1. Public sourcesCVM fund and company filings, Central Bank and IBGE series, the B3 market tape, lending book and rate curves, FNET documents, ANBIMA monthly class figures.
  2. Nightly ingestEach file is fetched, validated and written with an audit row per slice. A failed fetch stops the run instead of writing a guess.
  3. One warehouseFund and B3 quote history from 2019, rate curves from 2008, the Ibovespa from 1968.
  4. Read surfacesA public read API, a read-only MCP server at https://zcjbtpxuhdekpwcxmepn.supabase.co/functions/v1/silo-mcp, and a dashboard rebuilt after each ingest.
  5. Agents on topA daily agent checks the sources for changes the pipeline would miss. Research agents and the advisor report read through the same API.

ChangesAgents propose code changes as pull requests. The offline test suite must pass before any change merges.

To read the code by topic: a generated wiki of the repository, last indexed on October 9, 2026.

How we handle data

  • Nothing is filled in. A number the source did not publish stays missing.
  • Every row keeps the source key it came from and the original source row.
  • Validation runs before anything is written, and reruns are safe.

Where each part stands

Data Live
The pipeline above runs every night, with a public read API, a read-only MCP server and a dashboard.
Operations Live
Agents propose changes to ingestion, treatment and serving as pull requests, and a daily agent checks the sources for changes the pipeline would miss. The test suite gates every change. 281 of 435 merged pull requests in the last 30 days came from agent branches.
Research Live
Seven pieces of work published, listed under All research.
Agent replication workflow In development
An agent workflow that rebuilds a paper or methodology on SILO data and checks whether the result holds.
Advisor reports In development
Portfolio diagnosis for investment advisors. It reads a brokerage statement (spreadsheet or PDF), looks through funds to their holdings, compares each fund’s fee with filed peers, and flags liquidity, credit and concentration risks: cost in R$ per year, return vs. the CDI, tax. A language model writes the report in Portuguese; every number comes from the engine. The original statement is never stored. Next: evidence-based adjustment the advisor can defend line by line. The advisor decides.

Who it’s for

  • Fee-based investment advisors and wealth teams who need to defend every line of a recommendation.
  • Researchers and developers, through the public read API and the MCP server.