Your bot asks about the coin it's about to trade, and we answer hold or cash for that one coin. We never see or impose our own picks. Every daily per-coin signal is published once and cryptographically committed to the public ledger. When the feed is live, your bot audits that history itself and decides whether we're worth listening to. No vendor trust required.
// spec — the feed goes live with the public ledger // your bot asks about the coin it's about to trade GET https://unhodl.io/v0/regime/BTC { "coin": "BTC", "as_of": "2026-06-03", "regime": "CASH", // risk-off — your policy decides what to do with it "state": "risk_off", // plain state, not our formula "model_version": "1.0.0", "ots_proof": "ots://bafy…3kd9", // anchored to Bitcoin "verifiable": true } // a coin outside our coverage never gets a guessed answer GET https://unhodl.io/v0/regime/SHIB → "regime": "NO_OPINION" // overlay no-ops // verify any call yourself: re-hash it, check the anchor, no key > verify_signal("BTC", "2026-06-03") ✓ matches the anchor committed in a Bitcoin block
A human judges a signal vendor on impressions: the founder seems credible, the chart looks good. An automated strategy has none of that. As bots and agents move real capital under drawdown ceilings and kill-switches, "just trust the feed" stops being good enough. The honest options collapse to two: blindly trust an unverifiable source, or check it cryptographically.
A private list of past calls is worthless as evidence: the vendor can rewrite, cherry-pick, or back-date it. Every unhodl call is hashed and anchored to Bitcoin at publication, so we can't have edited it after the fact. The chain says when.
The signal never opens a trade and never tells your bot what to buy. On HOLD the reference overlay does nothing; on CASH it stops opening and exits. It fails open if the feed is stale. The honest cost: a CASH call can cut a winner short. Whipsaws are real, and we timestamp ours. What it can never do is add exposure you didn't choose.
We never impose a basket on you. You bring the coin your strategy already picked, and we return its regime, or NO_OPINION if it's outside our coverage. Our own record basket is published in the ledger so the track record stays auditable. Nothing we answer depends on your portfolio looking like ours.
Start with the open-source Freqtrade overlay; it's the worked example. Ask for any covered coin's call over plain HTTPS. Verification is a first-class, free operation, not a dashboard you have to trust. The API gives you the state; the policy is yours: advisory, entry-gate, exposure-reduction, or hard-exit. The reference overlay implements the last one.
Ask about the coin your bot is about to trade: HOLD, CASH, or NO_OPINION if it's outside coverage. One cached GET per coin. Free.
Re-derives the hash, checks it against the on-chain anchor, returns the Bitcoin block height. Always free.
~15 lines you graft into your own strategy: HOLD = no-op, CASH = block entries and exit. MIT-licensed; exercised end-to-end in a Freqtrade 2025.6 backtest.
A drop-in server so LLM agents can call the oracle and verifier natively, with an optional structured risk rationale a risk-management node can reason over. On the roadmap.
# MaxDrawdown stops you AFTER the hit. this steps aside before it. def custom_exit(self, pair, trade, *a, **k): if self._is_cash(pair): return "unhodl_risk_off" # flatten on a regime turn # exercised in a Freqtrade 2025.6 backtest: # exit fired on the CASH flip, re-entry blocked until HOLD returned.
Every call is hashed and anchored to Bitcoin via OpenTimestamps the moment it's published, an append-only record. We cannot retrospectively edit any signal that has already been published and timestamped. When the feed goes live, that ledger is public: point your bot, or your own eyes, at the proof.
We timestamp the calls we get wrong as loudly as the ones we get right: every false exit, every whipsaw, anchored and undeniable. A vendor that nails its own mistakes to an immutable chain can't edit or back-date a published call. We can't quietly delete a loser we already published. That's the entire point.
Backtested with real costs and explicit guards against look-ahead. We don't promise returns. The system is designed to reduce catastrophic drawdowns.
| Metric | unhodl | BTC buy & hold |
|---|---|---|
| Worst drawdown | −26.7% | −76.6% |
| 2022 bear market | −8.9% | −64.2% |
Figures are from our reference portfolio following the signals across all covered coins (equal-weight), not BTC-with-signals. Whether the signal improves your strategy is yours to test. The overlay makes that a ten-minute backtest.
// full-window backtest with transaction costs. pre-live estimate. the number that matters is the live ledger, so verify it yourself.
Live signal ledger: Every signal published after launch will be timestamped with OpenTimestamps and independently verifiable against Bitcoin.
unhodl-freqtrade-overlay is a small, MIT-licensed Freqtrade integration that flattens-to-cash and re-enters on the per-coin call. It's not the product; it's the worked example that makes the whole chain (signal → proof → execution) inspectable end to end. It already runs end-to-end in a Freqtrade 2025.6 backtest.
The overlay is open-source today. Join the waitlist and we'll email you once, when the live feed and public ledger go up.