DurdenBTC · Research · May 6, 2026

MRE v5: Sharpe just crossed 1.0

Found a silent data bug. Fixing it improved every metric.

Quick one. Bear with me.

Yesterday I was looking at the daily MRE signal output and noticed something off. One of the 26 voters.. High Yield OAS, the credit-spread signal that’s supposed to catch things like the GFC and COVID before equities crack.. was showing only 13% historical coverage.

Where I should have had 30 years of data going back to 1996, I instead had only 3 years worth.. starting May 2023.

The engine was happily computing signals. The backtest stats still looked normal. Nothing alerted me. Just a quiet line in the diagnostic output saying “coverage 13%” that I happened to glance at.

So I dug in.

I’d bet this had been going on for weeks before I caught it.

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄► SURVIVAL IS ALPHA ◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►

The fix

Two parts.

One.. I spliced the original 30-year history back into the cache from a baseline copy I had saved on my local PC. That got the coverage back to 99%.

Two.. I rewrote the loader to do incremental upsert instead of fetch-and-overwrite. It now reads the existing cache, fetches whatever FRED returns, and merges them.. preserving any cached row older than the fresh pull’s first date.

So even if FRED keeps returning a 3-year window forever, the cache stays at full history, growing one new day at a time.

Tested it against a simulated truncated FRED response and confirmed the cache stayed at ~7,660 rows when given the same data that was breaking it before.

Deployed yesterday afternoon. This morning’s 7:30 AM cron fired, I checked, and the cache is fully intact.

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄► SURVIVAL IS ALPHA ◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►

The (new & improved) numbers

Here’s where it gets fun. With the full 30 years of credit-spread data back in the engine, MRE v5 improved on every metric.

Same engine. Same parameters. Same 26 voters. Just one of them with the full historical data it was supposed to have all along.

The improvements come from a tiny window of disagreement.. the engine made different decisions on about 50 days out of 5,871 trading days (0.85%). Two of those clusters mattered:

That’s the story. Sharpe crossed 1.0 because of one voter that was supposed to be there all along.

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄► SURVIVAL IS ALPHA ◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►

What’s changed going forward

A few things to keep this from happening again.

The loader hardening I described is now live for HY_OAS. Same pattern is going to get ported to the other 5 FRED voters (Treasury yields, breakeven inflation) this week as a defensive measure, even though those don’t carry the same ICE licensing risk.

I’m also adding a coverage sanity check. If a fresh data pull would shrink the cache by more than a small percentage, the loader rejects it and falls back to the existing cache with a loud warning. Catches the next ICE-style restriction the moment it happens instead of weeks later.

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄► SURVIVAL IS ALPHA ◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►

The takeaway

Two things I’m taking from this.

Silent data degradation is a real failure mode, especially for any system that relies on free public APIs for historical data. The data provider can change their access policy, the API can return less than it used to, and your code’s “OK (2.1s)” log line gives you no warning. The defense has to live in your loader logic, not in the API.

And the catch was lucky. I noticed because the diagnostic output happens to print coverage percentages, and I spotted “13%” looked off. If that line wasn’t in the output, this could have run for months. So I’m adding monitoring for “did anything important silently change?” across all 26 voters.

The site numbers refreshed this morning at 7:30 AM ET with the new MRE v5 stats. Sharpe reads 1.007, MaxDD -14.35%. The engine is genuinely better than it was 48 hours ago.. not because the engine changed, but because the data finally matches what it was always supposed to be.

— Durden out.

✊🧼

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄► SURVIVAL IS ALPHA ◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►

Disclaimer: This content is for educational and informational purposes only. It does not constitute financial advice, investment advice, or a recommendation to buy or sell any asset. Trading equities and futures involves substantial risk of loss, including the potential for loss exceeding your initial investment.

Past performance, whether backtested or live, does not guarantee future results. Backtested performance has inherent limitations: it is designed with the benefit of hindsight, does not reflect actual trading, and does not account for all factors that may affect real-world execution.

The author is not a licensed financial advisor. Always do your own research and consult a qualified financial professional before making investment decisions. You are solely responsible for your own trading decisions.

Want the live dashboards behind these insights?

Free subscribers get research updates. Paid subscribers get live macro tools + signal alerts.