HedgeFriend
← All posts
Product4 min readHedgeFriend

Why we built HedgeFriend

Public-domain data is free, but it is not cheap. Here is the friction we set out to delete.

Almost every dataset we serve is free to the public. That is the point, and it is also the problem. "Free" describes the license, not the effort. Between a government portal and a usable feature column sits a long tail of pagination quirks, silent schema changes, fixed-width text files, entity names that never quite match a ticker, and revisions that quietly rewrite last month's numbers.

Most quants who go looking for alternative data end up writing the same scrapers everyone else wrote, discovering the same edge cases, and maintaining them forever. HedgeFriend exists so that work happens once.

What we actually do

  • Ingest on a schedule and keep history, so a source that rewrites its own past does not rewrite your backtest.
  • Normalize entities to a stable symbol identity that survives ticker renames.
  • Serve everything as predictable JSON behind one bearer token, with rate limits you can see.
  • Expose the same surface to agents over MCP, so an LLM can query it without a custom integration.

A concrete example

Futures positioning is published weekly as a wide, delimited file whose column layout has changed several times over the last two decades. Turning that into a per-market time series means reconciling report formats, handling the reporting lag, and deciding what to do with combined versus futures-only rows. The API answer is two requests — one to find the contract code, one to pull its history:

curl
bash
curl -H "Authorization: Bearer $HEDGEFRIEND_KEY" \
  "https://api.hedgefriend.dev/v1/alt/cftc/contracts"

curl -H "Authorization: Bearer $HEDGEFRIEND_KEY" \
  "https://api.hedgefriend.dev/v1/alt/cftc/positions/088691?from=2020-01-01"

What comes next

We are adding sources continuously and writing up the ones that turn out to carry signal. The free tier covers 500 requests a day, which is enough to prototype anything on this site. If a dataset you want is missing, tell us — the backlog is mostly driven by requests.

Try it on your own data

The free tier covers 500 requests a day — enough to reproduce anything in this post.

Get a free key