Mechanics
You deposit one tokenized share. You get back two ERC-20s, always in a 1:1:1 relationship. ZERO takes the value of the share up to a strike K, and no more. CAPITAL takes everything above K, and nothing else.
ZERO = min(P, K) / P share-units per token CAPITAL = max(0, P − K) / P ZERO + CAPITAL = 1 share, exactly, at every price.
A series is (asset, strike, wind-up date) and lives at an address computed from those three values, so any client can find it without a lookup. Its four verbs:
Strikes must sit on the asset's grid and inside 20%–500% of spot; wind-up dates must come from the registry calendar: the third Friday of March, June, September and December at 21:00 UTC. Inside those rails, anyone may create any series, for free.
The maths
The contract stores redemption rates, not dollar amounts, and CAPITAL is never computed independently:
zeroPerUnit = P <= K ? 1e18 : mulDiv(K, 1e18, P) // floor capitalPerUnit = 1e18 - zeroPerUnit // the residual
Computing both sides separately gives two independent floor divisions whose sum is 1e18 − 1 or 1e18 − 2 on ordinary prices. That gap is a solvency hole. Deriving CAPITAL as the residual makes zeroPerUnit + capitalPerUnit == 1e18 an identity of the code rather than a property to be checked.
Redemption floors, so a pair can strand at most one wei, in the vault, where no function can reach it. The invariant totalCollateral() ≥ required is fuzzed over 102,400 random calls.
The full derivation, the rounding proof and worked numbers are in docs/MATH.md.
The five numbers
These are terms of art from the British split capital world, not invented here. Displaying them correctly is what makes this a term sheet rather than a casino.
| METRIC | FORMULA | WHAT IT TELLS YOU |
|---|---|---|
| Gearing (CAPITAL) | spot / capitalPrice | Dollars of stock each dollar of CAPITAL controls. |
| Hurdle rate | ((K + capitalPrice) / spot)^(1/y) − 1 | How far the stock must rise for CAPITAL to merely return what you paid. Annualised while there is a year to annualise over, and the plain move to wind-up inside the last month. |
| Cover (ZERO) | spot / K | Above 1, the strike is covered by today's price. Below 1, ZERO is not yet whole. |
| Redemption yield (ZERO) | (K / zeroPrice)^(1/y) − 1 | Annualised return if the stock ends at or above K. |
| Parity | (zeroPrice + capitalPrice) / spot − 1 | Should sit near zero. Anything else is free money for an arbitrageur. |
Fees
| Create a series | Free |
| split | 10 bps, in the asset: 5 to the treasury, 5 to the series creator |
| recombine | 0 |
| settle / redeem | 0 |
| Protocol token | None |
Only entry costs anything. You are never charged to get out. There is no protocol token.
History
British split capital investment trusts have divided one pool of assets into classes with a strict order of claim since the 1960s. Zero dividend preference shares take a fixed amount first and no income. Capital shares take whatever is left. The vocabulary on this site is theirs: the hurdle rate, the cover, the wind-up date.
The sector also collapsed in 2001 and 2002, and the reason is worth stating: the trusts had borrowed, and they had bought each other's shares, so one falling trust pulled down every trust holding it. SPLIT has no borrowing, no cross-holding, no manager and no pooled fund. Every series holds exactly the shares deposited into it, and hands them back on demand.
The long version, with what remains true even here, is in docs/HISTORY.md.
Questions
Risks
Contracts
| AssetRegistry | 0x730E…3092 |
| SplitFactory | 0x03dc…310B |
| Series implementation | 0x6185…605F |
| SplitRouter | 0x87bA…3ccb |
| SplitQuoter | 0x5af4…Bd94 |
| FeeSplitter | 0x294c…a151 |
| USDG | 0x5fc5…d168 |
35 Stock Tokens on this chain have a Chainlink price feed and can therefore be settled. An asset without a feed cannot be settled, so the registry never holds one.
The design system is on its own page.