Skip to content
Official $BASKTR contract0x3E15fa82bE4d2F420ca95C43Cd8f42C991a9e4a2Verify on explorer@basktrhqAny other address or account is not BASKTR.
BASKTR

The docs. Read them before it happens.

How a basket is built, sealed, scored and faded. What the contract can and cannot do. How to check every claim on this site without trusting this site.

Network
Robinhood Chain
Chain id
4663
Horizons
7 · 30 · 90 · 365 days
Benchmark
basktr-core-10-v1
Universe
694 assets
Fee
None. Gas only.

What BASKTR is

BASKTR is a public scoreboard for market opinions. You build a basket, a weighted and time-bound market call across crypto and tokenized stocks, and publish it. The price of every asset at that moment is frozen, a fingerprint of those prices is written to Robinhood Chain, and the basket is scored against a fixed benchmark over the horizon you chose.

It records what someone claimed, when they claimed it, and whether it worked. Nothing more.

  • Not a trading app. No order is ever placed. Nothing is bought, sold or held.
  • Not a prediction market. Nothing is staked and there is no payout.
  • Not a portfolio tracker. It records a claim, not a position.
  • Not advice. A basket is someone's opinion with a timestamp on it.

Say it before it happens.

Publish a basket

Six steps, a couple of minutes, one signature.

  1. 1

    Pick what you believe in.

    Open Build and choose from 694 assets: crypto, memes across Solana, BNB Chain, Ethereum, Base and Robinhood Chain, tokenized stocks, ETFs and commodity funds. Search, or browse by group.

  2. 2

    Weight your conviction.

    New assets split the basket evenly. Drag a slider and everything else rebalances. The basket has to add up to 100%.

  3. 3

    Name it. Say why.

    A name of up to 40 characters and a one-line thesis of up to 140. Both are published with the basket.

  4. 4

    Preview it and choose a horizon.

    7, 30, 90 or 365 days. The preview shows the publication price of every asset and the fingerprint that will be committed. Once published, none of it can change.

  5. 5

    Record it on chain.

    Connect a wallet on Robinhood Chain and sign once. No funds move and nothing is held. BASKTR charges no fee; you pay only the network's gas.

  6. 6

    Share it.

    Every basket gets its own page and a share link. The link carries the publication snapshot, so anyone who opens it can see the score.

Baskets and horizons

Think of a basket as a ballot, not a purchase. You have 100 points of belief to give out, and giving one asset more means giving another less. That trade-off is the claim. A bigger slice means that asset counts for more, whichever way it moves.

PartRule
AssetsAny mix from the 694-asset universe.
WeightsMust total 100%. Stored on chain in basis points, so 30% is 3000.
NameUp to 40 characters.
ThesisUp to 140 characters.
Horizon7, 30, 90 or 365 days. Fixed at publication.

When a basket resolves

When the horizon passes, the result is frozen. Resolution is observed rather than scheduled: there is no always-on job, so a basket is measured the first time it is opened after its horizon passes. The observation time and the lag are recorded and shown on the basket.

The snapshot and its fingerprint

This is what makes the record checkable rather than merely asserted. At the moment you open the preview, the app takes a snapshot and holds it fixed, so what is committed is exactly what you were shown.

  1. 1

    Capture.

    Every holding's price, its source and the source's own timestamp, plus the full benchmark universe and its prices.

  2. 2

    Canonicalise.

    Prices become decimal strings at fixed precision, never floats, and the snapshot is serialised to JSON with keys in a fixed order and no whitespace. The bytes are identical on every machine.

  3. 3

    Fingerprint.

    keccak256 of those bytes is the snapshot hash.

  4. 4

    Commit.

    The hash is written to the registry in the same transaction that records the basket.

The commitment, in outline
snapshot     = holdings + benchmark, each price with its source and timestamp
canonical    = JSON, fixed key order, no whitespace, prices as fixed-precision strings
snapshotHash = keccak256(canonical)          // stored on chain with the basket

Every time a basket is opened, the hash is recomputed from the prices on screen and compared with the chain. If they differ, the prices are not the ones that were published, and the basket is shown as unverified instead of being scored. Snapshot format version 2.

Receipt, or it didn't happen.

How a basket is scored

The headline figure is outperformance, not raw return. Raw return mostly measures when someone published. Measuring against the same window measures whether the weighting was any good. A basket can make money and still be scored as wrong if the market did better.

GET /api/v1/benchmark · formula
assetReturn    = (currentPrice - publicationPrice) / publicationPrice
basketReturn   = sum(weight * assetReturn)
outperformance = basketReturn - benchmarkReturn

The benchmark

basktr-core-10-v1 is an equal weight of 10 liquid assets across crypto, large-cap equity and the broad market, measured over exactly the same window as the basket.

  • BTC
  • ETH
  • SOL
  • AAPL
  • MSFT
  • NVDA
  • AMZN
  • TSLA
  • SPY
  • QQQ

It is deliberately a fixed list, not every asset the app offers. If it were the whole universe, adding an asset would quietly change what every score meant. Its prices are frozen into each snapshot, and if the list ever changes it becomes a new version: baskets keep the benchmark they were published under.

Rules that are never bent

  • Nothing is estimated. If any price in a basket is unavailable, the basket is shown as unscored. Nothing is interpolated or backfilled to produce a number.
  • Corporate actions are applied. Stock Tokens carry a share-per-token multiplier from the issuer. It is read on every pass and applied to every return.
  • Sources are traceable. Every price records its source and that source's own timestamp, so a bad one can be found.

Fading a basket

Disagree with a basket? Fade it. Press Fade this basket on any basket page and its weights load into your builder. Change what you disagree with, then publish your version.

Your basket records the id it came from, on chain, so the lineage stays visible. It is judged entirely on its own terms: its own snapshot, its own timestamp, its own expiry. A fade is a disagreement placed on the record, and where both sides can be scored they sit side by side against the same benchmark.

Callers delete. Basktrs don't.

The registry contract

Every published basket lives in one contract on Robinhood Chain. It is small on purpose, and what it cannot do matters more than what it does.

NetworkRobinhood Chain (chain id 4663)
Registry0xDa750B3E019E5d8166DE8E12025d52e3bEb30053
SourceVerified on the block explorer

What it cannot do

  • It holds nothing. No payable function and no token transfer. There is no balance to take.
  • It has no owner. No admin, no roles, no pause. Nobody can alter a published basket, including us.
  • It cannot be upgraded. Not a proxy. The deployed bytecode is final.
  • It never trades. No execution, custody, pooling or rebalancing.

What it stores for each basket

Id, creator address, name, thesis, asset symbols, token addresses, weights in basis points, the block timestamp of publication, the id it was faded from, the snapshot fingerprint and the horizon in days.

What immutability does not cover

A list of nothing but absences would be marketing, so here is what is still off chain:

  • Which registry you are shown. The contract cannot change; the address this site reads is set in its configuration.
  • The interface. It is hosted, and hosted code can change. That is why every figure is reproducible from the chain and the API.
  • The prices. They come from third parties. The chain holds only their fingerprint.
  • The benchmark. Published, frozen into each snapshot and versioned, but chosen by this project.

Verify it yourself

You do not need this site to check a basket. Four steps on the public block explorer:

  1. 1

    Open the registry.

    Find the registry contract on the explorer, choose the Contract tab, then Read contract.

  2. 2

    Find getBasket.

    Expand it in the list of read functions.

  3. 3

    Enter the id.

    Set the multiplier next to the input to ×10⁰ (it defaults to ×10¹⁸, which asks for a different basket), enter the basket id and press Read.

  4. 4

    Compare.

    Name, thesis, symbols and weights should match the basket page exactly. createdAt is the block timestamp, in a block nobody can move. snapshotHash is the fingerprint of the prices it started from.

Don't take our word for it. Take the chain's.

Assets and prices

GroupCountPrice source
Crypto, including memes500CoinGecko, with Coinbase spot as a fallback
Tokenized stocks177Robinhood Stock Token API
ETFs14Robinhood Stock Token API
Commodity funds3Robinhood Stock Token API
  • Stock Tokens. Contract addresses come from the issuer's own endpoint, never inferred from a ticker. Quotes are bid and ask; the midpoint is used. No previous close is published, so no 24h change is shown for them.
  • What a Stock Token is. A debt instrument issued by Robinhood Assets (Jersey), not a share. It carries no shareholder rights, and its value depends on the issuer. Every equity figure here is the price of that instrument.
  • Crypto. The Coinbase fallback is only used for coins where Coinbase's ticker is the same asset, so a coin can never be priced as a stranger with the same symbol.
  • Tiny prices. Coins priced below $0.000001 are left out: the snapshot stores prices at eight decimals and such a price would lose its precision.
  • Outages. When a source is unreachable the last real quote is reused with its original timestamp. Nothing is invented.

Public API

Open, no key, CORS enabled. It returns only what the chain holds and never a price the server cannot verify. The API names a published basket a call, which is why the routes read that way.

EndpointReturns
GET /api/v1/calls?limit=50&offset=0Every basket on the record, newest first
GET /api/v1/calls/{id}One basket
GET /api/v1/benchmarkThe benchmark and the formulas
GET /api/v1/assetsWhat a basket may be built from
GET /api/v1/decisionsWhat the data layer refused on this pass
GET /llms-full.txtThe complete plain-text brief, limits included
shell
curl https://www.basktr.com/api/v1/calls/1
200 OK · application/json
{
  "id": "1",
  "creator": "0xf5DA2c98C2bebc0eF10Da571124EBB49615e42A5",
  "name": "The First Record",
  "thesis": "Tokenized stocks and crypto grow up together. Put on the record before it happens, scored against the market.",
  "holdings": [
    {
      "symbol": "ETH",
      "weightBps": 3000,
      "tokenAddress": null
    },
    {
      "symbol": "NVDA",
      "weightBps": 3000,
      "tokenAddress": "0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC"
    },
    {
      "symbol": "BTC",
      "weightBps": 2000,
      "tokenAddress": null
    },
    {
      "symbol": "SPY",
      "weightBps": 2000,
      "tokenAddress": "0x117cc2133c37B721F49dE2A7a74833232B3B4C0C"
    }
  ],
  "publishedAt": "2026-09-14T07:03:12.000Z",
  "horizonDays": 90,
  "expiresAt": "2026-12-13T07:03:12.000Z",
  "snapshotHash": "0x67719420d1621d4cb3c890824688857d05bceb29db2fa571b51ad02d436a7b09",
  "remixOf": null,
  "url": "https://www.basktr.com/basket/chain-4663-1"
}

Publication prices are deliberately absent. They live with the publisher and the server has never seen them, so serving them would be a claim this API cannot back.

Known limits, stated plainly

  • Prices live with the publisher. The record is on chain; the publication prices are in the publisher's browser and the share link. Without either, a basket can be displayed but not scored.
  • Resolution is observed. A basket is measured when it is next opened after its horizon, and the lag is shown.
  • Early days. The registry holds few baskets. Ranked views stay hidden until enough can be scored to mean anything.
  • The benchmark is ours. Disclosed in full on every basket, but not an industry index.
  • Issuer risk sits under every equity figure. It is disclosed, not priced, because there is no honest way to price it here.
  • No identity layer. Creators are wallet addresses.

Questions

Does it cost anything?

No. BASKTR charges no fee and holds no funds. Publishing on chain costs only the network's gas, paid from your own wallet.

Is there a BASKTR token?

The official token is at 0x3E15fa82bE4d2F420ca95C43Cd8f42C991a9e4a2 on Robinhood Chain. It is not needed to use the app and gives no rights in it. A token at any other address is not BASKTR.

Can I edit or delete a basket?

No, and neither can anyone else. That is what makes it a record.

Do I need a wallet?

Not to explore or build. To put a basket on chain, yes: any EVM wallet connected to Robinhood Chain.

What if an asset has no price?

A basket can't be published without a real starting price for every asset. Later, if a price is missing, the basket is shown as unscored rather than estimated.

How do I reach the team?

On X at @basktrhq, or by email at manifest@basktr.com. These are the only official channels. An account or address not listed here is not BASKTR.

Is this investment advice?

No. A basket is one person's opinion with a timestamp. Nothing is bought, sold or held.

Glossary

Basket
A weighted, time-bound market call across assets.
Basis points
Hundredths of a percent. 30% is 3000 basis points.
Benchmark
basktr-core-10-v1, the fixed yardstick every basket is scored against.
Fade
A new basket built from an existing one, with your own weights. Also called a remix.
Fingerprint
The keccak256 hash of a basket's canonical snapshot, stored on chain.
Horizon
How long a basket runs: 7, 30, 90 or 365 days.
Lineage
The chain of fades that connects a basket to the one it came from.
Outperformance
Basket return minus benchmark return over the same window.
Registry
The contract on Robinhood Chain that holds every published basket.
Snapshot
The publication prices of a basket and the benchmark, frozen at the moment of publishing.

Right or wrong, the record stands.

You have read how it works. The only thing left is to put a view on the record and let the market answer.