Cal
cal/docs/litepaper.md v1.4.0 8 sections · updated 2026-09-12
§READMEabstract

CAL Litepaper.

CAL is a forecasting engine for tokenized equities on Robinhood Chain. It publishes a fair_value for every covered ticker, emits a signal when an edge and a dated catalyst coincide, writes both on-chain before the catalyst resolves, and scores itself when the window closes. This document specifies the method, the data contract, and the integration surface.

coverage
312
forecasts/day
500+
signals
1,204
win rate
65%
avg paper
+11.8%
01fair-value5 passes · per ticker

A fair value is an independent estimate of where a tokenized ticker should trade at the close of a named catalyst window, derived from primary filings and order-book evidence rather than from the prevailing quote. Five passes run on every ticker; the output is a price with a distribution, not a point guess.

#passreads
01classify_setupCatalyst, window, and exactly what the print must show, read from the filing not the coverage.
02map_chainSuppliers, customers, competitors, and correlated tokenized tickers.
03research_evidence6,000+ sources, 1,000+ ranked analysts, order books, and the source behind the source.
04build_scenariosReaction base rates, guidance paths, dependencies, and disconfirming evidence.
05publish_fair_valuePrice, distribution, citations, and a score once the window closes.
note Most tickers return priced fairly. A fair value is not a recommendation; it becomes a signal only under §02.
02signal-specSignal · v1.4

A signal is emitted when three conditions hold simultaneously: an edge against fair value, a dated catalyst inside the window, and a defined exit. Absent any one, CAL publishes the fair value only.

fieldtypedescription
tokenstringTokenized ticker, e.g. AMDt.
directionenumlong | short. Side of the gap.
fair_valuedecimalCAL price at window close.
reference_entrydecimalOn-chain price at publication. Measurement origin; never re-based.
edgedecimalfair_value − reference_entry, signed by direction.
catalystobject{ event, date }. Must fall inside the window.
windowintegerSessions measured. Default 5.
take_profitdecimalExit reference reachable before window close.
thesisstringCited reasoning. Immutable after publication.
published_attimestampBlock timestamp of the on-chain write.
worked example
AMDt · long
entry 164.00 → fv 189.00
edge +25.00 · window 5
outcome
close 186.00 @ session 5
paper +13.4%
status closed
03track-recordappend-only

Every published signal enters the record. No curation step, no retraction, no re-basing of an entry after publication. Measurement runs from reference_entry to window close, or to the exit price when take_profit is reached sooner.

+11.8%
avg paper return
65%
win rate
1,204
published
860
closed
344
open
disclosure Simulated paper returns do not represent actual trading and exclude fees, liquidity, slippage, and fills. Open positions mark to the current on-chain price. Positions held past the window are not measured.
04apiapi.cal.xyz/v1 · bearer
verbpathreturns
GET/fair-valuesCurrent fair value for every covered ticker.
GET/fair-values/{token}Fair value with distribution and citations.
GET/signalsOpen signals. ?token= &direction= &min_edge=
GET/signals/{id}Full signal with thesis, catalyst, publishing tx.
GET/track-recordEvery open and closed paper position.
WS/stream/signalsPush on publication, take-profit, window close.
json GET /v1/signals/8f21 200 OK
1 2 3 4 5 6 7 8 9 10 11 12
{ "id": "8f21", "token": "AMDt", "direction": "long", "fair_value": "189.00", "reference_entry": "164.00", "edge": "25.00", "catalyst": { "event": "data-center guide", "date": "2026-09-09" }, "window": 5, "published_at": "2026-09-02T13:41:08Z", "tx": "0x7c1a…e904" }
rate limit
120 req/min · 1 socket/key
errors
401 · 404 · 429 · 503
pagination
cursor · limit ≤ 200
05cli-mcpnode ≥ 20
bash copy
$ npm install --global cal-forecasting@latest $ cal setup # pairs a wallet, mints a key $ cal signals --min-edge 8 --direction long $ cal fair-value AMDt --citations $ cal record --closed --since 2026-06-01 --json $ cal mcp serve --port 7400 # optional MCP transport
cal-mcp
Exposes fair_value, signals, record as agent tools, scoped to your key.
keys
Issued per wallet. Rotate or revoke without losing history.
output
Table by default, --json for pipes, exit 1 on empty.
06contractsRobinhood Chain

Each forecast is written on-chain at publication, before the catalyst resolves. Forecast, reference entry, exit, and close land on the same ledger the tokenized equity settles on, which is what makes the edge verifiable rather than asserted.

contractrole
RegistryAppend-only. Signal hash, token, direction, fair value, reference entry, window. No update path, no owner key that can rewrite an entry.
ResolverReads settlement price at window close from the venue oracle, writes the outcome against the original entry.
RouterSignal to position in one call, on the same block as the quote it was priced against.
VerifyRecompute the hash from published fields, compare against the registry. Any id resolves to a tx.
07glossary8 terms
fair value
CAL's price for a ticker at window close.
edge
Signed gap between fair value and reference entry.
catalyst
Dated event that can close the gap inside the window.
window
Sessions over which a signal is measured.
reference entry
On-chain price at publication. Measurement origin.
paper return
Simulated result from entry to exit. Excludes fees and fills.
tokenized ticker
Equity represented on Robinhood Chain, suffixed t.
priced fairly
Edge below the publication threshold. No signal emitted.
08changelogsemver
verdatechange
1.4.02026-09-12Added take_profit to the signal contract; window default fixed at 5 sessions.
1.3.22026-08-28Resolver reads venue oracle directly; removes the one-block settlement lag.
1.3.02026-08-04MCP transport ships. /stream/signals pushes window-close events.
1.2.02026-07-09Track record opened publicly; every published signal is queryable by id.
← signals home © 2026 CAL
×
Wallet required
Connect your wallet to view signals.
Live signals, fair values, and the full track record are gated to connected wallets. Launch the app to continue.