AlphaRatings come from public on-chain and venue data and may be incomplete. We see on-chain only — exposure on centralised exchanges is invisible to us.Methodology
ASPERN
⌘K

Proofs

Everything needed to re-derive every claim on the registry, so none of it rests on our word. Each declaration is published as the exact text that was signed, with its signature and its place in a daily batch.

What each step actually proves

1 · The signature proves control. The operator signs the declaration text with the vault’s own key. Recovering the signer and comparing it with the declared address shows that whoever wrote this controlled that address. A form field claiming an address proves nothing; the recovered one is the only address that counts.

2 · The digest proves it has not changed. The digest is keccak256 of the text. Alter one character of the thesis, one number in a drawdown limit, and the digest changes and the signature stops verifying. This is why declarations are never edited — they cannot be.

3 · The batch proves when. Each day’s digests are reduced to one Merkle root. Every declaration keeps a short proof that it was in that day’s tree, and the leaves are sorted so anybody can rebuild the tree from the published list and get the same root.

4 · The anchor proves it existed by then. Putting the root in a transaction fixes the whole day’s declarations to a block. After that, nobody — including us — can insert a declaration and claim it was made earlier.

A declaration attests forward, never backward

An operator can register a strategy that has been running for a year, and most do. Everything from the declaration onward is fixed; nothing before it is. In that earlier period the model, the prompt and the parameters could have changed any number of times and no signature covers it. The registry draws that line explicitly — the hatched part of each bar is the unattested period, counted in days — because a grade shown without it reads as covering the whole track record.

What none of this proves

That the strategy described is the one that actually traded. No hash can establish that — a hash commits to a document, not to the behaviour of a running system. Claiming otherwise would be the most damaging thing this platform could assert. Tying decisions to execution needs per-decision commitments made before each trade, which is Grade A and is not built yet.

What a strategy hash is worth, and what it is not

A hash the operator computed alone proves one thing: the strategy has not changed. If they publish H today and reveal a strategy S later where keccak(S) = H, then S existed today and was not edited in between. That is real, and it stops a strategy being quietly rewritten to match whatever happened.

It does not prove S is what traded. Nothing about a hash reaches the running system. An operator can hash one document and trade something else entirely, and no amount of hashing detects it. Anyone claiming a strategy hash proves what an agent did is either confused or selling something.

It does not even prove S is a strategy. A self-computed hash could be over an empty file, a placeholder, or somebody else’s work — we would have no way to tell, and neither would you. That is the weakest point of hash-only registration and it is worth naming.

Which is why we offer to hold the strategy instead.

Lodging it with us removes the second problem, not the first. Paste the strategy at registration and we compute the hash rather than taking yours. We never publish it and never return it through the API. What that buys: we can say we hold something real that hashes to the published value, and we can confirm a later reveal against what we already had. What it costs: you have to trust us not to leak it — a real cost, and the reason it is optional.

If you would rather publish it, publish it. An openly published strategy is strictly stronger than either option here. That most operators will not is a commercial reality rather than a technical constraint.

The only thing that actually ties a strategy to its trades is committing to each decision before it executes and revealing it afterwards, so the commitments can be matched against what happened on chain. That is Grade A, and it is not built. Until it is, treat every strategy hash on this site as evidence of consistency and nothing more.

Daily batches

1 of 1 anchored on chain
DayDeclarationsMerkle rootAnchor
2026-08-1240xdecc3d45d635f9783b6ef6ce8704812821517fd7eeb1442a84bea0f8ad01fb91sepolia0xe0ba305635…273e7f4a

An unanchored root is still useful — it fixes the contents of a day against each other — but it does not fix them in time, because we could in principle rebuild it. The anchoring transaction is sent from the operator’s own wallet rather than by this system, which holds no private key and is not acquiring one to save a cent of gas.

Every declaration, in full

DEMO — declaration for [ Systemic Strategies ] ♾️ HyperGrowth ♾️ hyperliquid/hyperliquid, declared 2026-08-12not batched yet
The exact text that was signed
ASPERN strategy pre-registration v3

Address: 0x2d0e1976b996997c03b64ce3d884c3b5228cf84a
Chain: hyperliquid
Venue: hyperliquid
Managed by: Autonomous — an agent decides and executes without a person in the loop
Name: DEMO — declaration for [ Systemic Strategies ] ♾️ HyperGrowth ♾️
Declared on: 2026-08-12
Instruments: BTC, ETH
Max leverage: 3
Max drawdown: 1%

Decided by:
  Model: claude-opus-4.5
  Model version: 2026-05-01
  Prompt hash: 0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1
  Config hash: 0xb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2
  Code: git:demo01
  Reads: Venue order book and funding rates only. No news, no social feeds.
  Strategy hash: not provided

Thesis:
Demonstration record attached to a vault we track, so a declared claim sits beside the observed one. The drawdown ceiling is deliberately tight to show what a breach looks like. Deletable from Admin, Registry & anchors.

By signing I confirm I control this address and that this strategy has not yet
been evaluated on its results. Changing the model, the prompt or the
configuration makes this a different strategy and requires a new declaration.
ASPERN will publish its record whatever happens.
Signature
0x89bf070c895a6f6b04f6b103400d91ca447b9075b6eb3bb7371a30ae1bc8b10d6bf5a9a7c4da7d8f598deb0126c276cbf8869ae870f14b8b32ffa382c5610bdf1b
Recovered signer
0x2d0E1976B996997c03B64cE3D884C3B5228CF84a
Matches the declared address.
Digest — keccak256 of the text above
0xadaba3eef7456a8a9ae403e1caf4e57d1a78f6e01d39adb4abd1f490783c1fda
What is deciding
Model:
claude-opus-4.5
Version:
2026-05-01
Prompt hash:
0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 (operator-supplied)
Config hash:
0xb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 (operator-supplied)
Code:
git:demo01
Reads:
Venue order book and funding rates only. No news, no social feeds.

Part of the signed text, so changing any of it breaks the signature. A new model means a new declaration, not an edit to this one.

DEMO — model-declared basis carry arbitrum/hyperliquid, declared 2026-08-12proof holds
The exact text that was signed
ASPERN strategy pre-registration v3

Address: 0xf88d6661ad8c913b3f095547419e301da1e00fd7
Chain: arbitrum
Venue: hyperliquid
Managed by: Autonomous — an agent decides and executes without a person in the loop
Name: DEMO — model-declared basis carry
Declared on: 2026-08-12
Instruments: BTC, ETH
Max leverage: 3
Max drawdown: 12%

Decided by:
  Model: claude-opus-4.5
  Model version: 2026-05-01
  Prompt hash: 0x4f1c9b2e77a0d3115c8e6a4b90fd2e83c7a15d6094bb3e2f81ad4c7e6b09f312
  Config hash: 0x8a2d5e10bb47c9e3f6021d8a4c7b5390ef1264ad83b0f57c92e6a1d40bc7385f
  Code: git:9f2c1ab
  Reads: Venue order book and funding rates only. No news, no social feeds.
  Strategy hash: not provided

Thesis:
Demonstrates a declaration that names what is deciding. Long spot, short perp while funding is positive; flat otherwise. Deletable from Admin.

By signing I confirm I control this address and that this strategy has not yet
been evaluated on its results. Changing the model, the prompt or the
configuration makes this a different strategy and requires a new declaration.
ASPERN will publish its record whatever happens.
Signature
0x8ca2d122d2752a30832858c87322f8d39c9f3f6593081c66be08a4f5616750cc316c2f0a5547fe6db47593aaab6acb6e40073a8e695d35c9c8fa029c7c9ea9ad1c
Recovered signer
0xf88D6661aD8c913b3F095547419e301da1E00fD7
Matches the declared address.
Digest — keccak256 of the text above
0x94d951063c5e3e1888b86734086d2ce98b8e1b400ff2fb4337ae199c2181df31
Inclusion proof in the 2026-08-12 batch
0x32fba2892b85106c3cecda8810cbd077df7abb5b49e7cbc9de08a217ebfb816f 0xa353e3b3d84a9b7255dcaec62e4e083e6bb4fbe09b2c0b8950673e5582f8ab6e
Hash the digest with each step in turn, sorting the pair each time. The result is 0xdecc3d45d635f978
Per-decision commitments — intact
2 committed · 2 revealed · 1 matched on chain

Every decision was committed before execution, revealed afterwards, and matched to something that happened on chain.

What is deciding
Model:
claude-opus-4.5
Version:
2026-05-01
Prompt hash:
0x4f1c9b2e77a0d3115c8e6a4b90fd2e83c7a15d6094bb3e2f81ad4c7e6b09f312 (operator-supplied)
Config hash:
0x8a2d5e10bb47c9e3f6021d8a4c7b5390ef1264ad83b0f57c92e6a1d40bc7385f (operator-supplied)
Code:
git:9f2c1ab
Reads:
Venue order book and funding rates only. No news, no social feeds.

Part of the signed text, so changing any of it breaks the signature. A new model means a new declaration, not an edit to this one.

DEMO — funding carry, BTC only arbitrum/hyperliquid, declared 2026-08-12proof holds
The exact text that was signed
ASPERN strategy pre-registration v2

Address: 0xbf68d55b532adab723fb457836e28662cd1e585b
Chain: arbitrum
Venue: hyperliquid
Managed by: Autonomous — an agent decides and executes without a person in the loop
Name: DEMO — funding carry, BTC only
Declared on: 2026-08-12
Instruments: BTC
Max leverage: 2
Max drawdown: 10%
Strategy hash: not provided

Thesis:
Long spot, short perp while 8h funding is above 0.005%. Flat otherwise. No discretionary overrides. This is a demonstration record created to show the registration flow, and it can be deleted from Admin.

By signing I confirm I control this address and that this strategy has not yet
been evaluated on its results. ASPERN will publish its record whatever happens.
Signature
0x3004d3a1224d194ca5d2a349b0c6fa73c13c3b329f81db1f76e75ea2c0895904390b31bcc8fc0dd279c5c561a0bf90b1a69cc34fd7657e7e939cf7e67a3a09261b
Recovered signer
0xbf68d55b532adaB723Fb457836e28662Cd1e585b
Matches the declared address.
Digest — keccak256 of the text above
0xca2b91e4653be13b1f5190c85db619486ec82e96371ec6489edd0fea1201a51f
Inclusion proof in the 2026-08-12 batch
0xec1e83b3ba264288f0df823453e45c17604e0ea57a5d34148c483b699eedaf30 0xc339cc29583b2f571bc0a13929c2b44b66a680f3c7f4ab6fccb0e4e9ca911721
Hash the digest with each step in turn, sorting the pair each time. The result is 0xdecc3d45d635f978

Checking a signature yourself

// any wallet library will do
import { verifyMessage } from 'ethers'
import { TxLink } from '@/components/TxLink'
const signer = verifyMessage(textFromAbove, signatureFromAbove)
signer.toLowerCase() === declaredAddress   // must be true

The declaration text, the signature and the digest are all above, and the same values come back from GET /api/v1/registry. Nothing here needs our code to check.