Justin · September 2026 · Prepared for the Spout Finance Beta Intelligence Challenge
Spout is a three-sided machine: borrowers lock tokenized US equities and draw stablecoins at 0% APR / 50% LTV; a rules-based engine writes weekly covered calls against the pooled collateral; lenders' stablecoins fund the loans and get paid 80% of the premium. The design is cleaner than most "RWA DeFi" attempts — pool-level options execution, an explicit loss waterfall, earnings-week cycle skips, and conservative oracle handling are all genuinely good engineering.
But "0% APR" is a pricing decision, not a free lunch. The borrower pays in capped convexity on a roster deliberately loaded with high-beta names (NVDA, MSTR, SMCI), plus a 4–12.5% liquidation fee and 20 bps of transfer friction. On this roster, in this market regime, the expected cost of giving up call-side upside can plausibly exceed a conventional 6% margin rate. And three structural risks deserve more attention than the docs give them: utilization dependency of the Senior 7% priority, the weekend gap on BTC/SOL-beta collateral, and one collateral asset (BSOL, the Bitwise Solana staking ETF) whose embedded staking-yield attribution and thin young-ETF options book the docs don't address.
Verdict scores (their rubric): Product insight — see §4–§6. DeFi/tokenization analysis — §2–§3. UX feedback — §7 (testnet walkthrough; see caveat). Content — you're reading it. New in this revision: §11 — a docs-vs-Terms-of-Service cross-check that finds six numbers where the two documents disagree (including a 1%-vs-20bps withdrawal fee gap and a loss waterfall with an extra layer in the ToS).
BORROWER OPTIONS ENGINE LENDER lock spAssets (Token-2022, ──► pool
collateral per asset ──► write weekly OTM KYC-gated transfer hook)
(100-share contracts, covered calls at a │ pool-level, pro-rata)
regulated US venue ▼ │ │ borrow ≤50% LTV in stables ▼ ▼ at 0% interest
premium collected 20% protocol fee │ │ (Insurance Fund + ▼ ▼ ops +
treasury) repay anytime; Friday expiry → 80% to lenders: assignment →
shares sold Monday 9am ET settle Senior 7% priority + at strike;
Auto-Roll rebuys 25% of excess; by default Junior gets rest (~9% /
~32% APY)
The 11-asset launch roster: AAPL, NVDA, GOOG, SMCI, IBIT, MSTR, BSOL, PFE, GS, XOM, GLD. Flat 50% max LTV across all assets; liquidation thresholds per asset (buffers 4%–12.5% above 50%).
Spout's framing: the collateral is productive, the calls fund the lenders, so the borrower pays no coupon. True as far as it goes. But the borrower pays four other things:
Recommendation A: show borrowers a "true cost of borrowing" estimate per asset — implied coupon = expected assignment drag + fee drag under 2–3 vol regimes — next to the 0% headline. The tool that tells users when a margin loan is cheaper builds more trust than any marketing.
The settlement math: Senior's 7% annualized priority (~$11.5k/week per $8.5m of Senior) is payable only from premium actually collected — and premium scales with collateral locked by borrowers, not with deposits. The docs' own $30k/week gross example implicitly assumes a healthy borrowed-against collateral pool.
Sanity check with listed-market numbers: 1-week ~8% OTM calls on liquid large caps yield roughly 0.2–0.6% of notional per week; on high-vol names 1–2%. For a $10m lending pool where Senior alone needs ~$11.5k/week, the engine needs roughly $2–6m of actively cycled collateral at listed-market premium rates (more if strikes are as distant as claimed). That's achievable — but only at high lock utilization.
The failure mode is quiet: if borrow demand lags deposits, premium per lender-week thins out, Senior shortfalls get "noted and topped up from Insurance Fund surplus," and the fund meant for tail losses becomes a yield-smoothing account. The docs are honest that this is possible; the product implication is that Senior APY marketing (a stable "7% priority") should be displayed as variable, premium-funded — because it structurally is.
Recommendation B: publish a live "engine dashboard": collateral locked vs. deposits (utilization), rolling 4-week premium collected, current strikes per asset, Insurance Fund balance vs. 2% target, drawdown history. The docs promise this in-app; making it public-web would pre-answer the skeptics (including this one).
The engine runs weekly cycles entered Friday open, expiring Friday close, against equities that trade 5×8 — but three of eleven collateral types (MSTR, IBIT, and bSOL) are effectively BTC/SOL beta that reprices 24/7:
Scenario: Saturday BTC −15%. MSTR/IBIT collateral values gap down hard; nothing can be liquidated or hedged until Sunday-night/Monday; the market open then concentrates assignment + liquidation + rebuy flows into one session, on the exact assets with the widest buffers. The loss waterfall (Insurance Fund → Junior → Senior) is well-designed for this, but the trigger frequency is systematically underestimated by looking at equity-market history alone.
Recommendation C: for BTC/SOL-beta collateral, either (a) cut max LTV below 50% (e.g. 40%), (b) hold a slice of premium for weekend protection (listed BTC options trade 24/7 on some venues; SOL proxies via CME/ETF options don't), or (c) mark those assets continuously with crypto-market oracles on weekends. The flat-50% "simplicity" argument is inconsistent with the engine's own per-asset strike tuning — the protocol already treats assets individually everywhere else.
The supported-collateral table lists BSOL as "Solana Exposure — ETF, newer listing, shorter history." An early draft of this teardown read that as a misclassification — bSOL is also the ticker of the BlazeStake liquid staking token, and I could not place a US ETF under that ticker. That reading was wrong, and it's corrected here: BSOL is the Bitwise Solana Staking ETF (NYSE Arca, listed Oct 28, 2025 — the first US spot-Solana ETP). Spout's row is accurate, including the honest "newer listing, shorter history" caveat; a protocol that lists a young ETF and labels it as such is doing disclosure right.
Two real questions remain for this asset:
§4's weekend-gap point survives unchanged for this asset: SOL reprices 24/7 while BSOL marks update at reduced frequency off-hours and the hedging venue is closed.
Recommendation D: state explicitly whose account BSOL's embedded staking yield accrues to while shares are locked, and publish per-asset realized spread/fill quality (BSOL first). The honest labeling is already done; these two disclosures would finish the job.
⚠️ Caveat: my hands-on section is pending testnet credentials (requested via the earn listing and X on Sep 21). The items below are from the public funnel and docs; the published version will add full testnet flows with screenshots if access is granted before the bounty closes.
| # | Recommendation | Why it matters |
|---|---|---|
| A | "True cost of borrowing" estimator next to the 0% headline | The product's core claim hides its real price; transparency converts skeptics |
| B | Public engine dashboard (utilization, premium history, strikes, insurance fund) | Trust for lenders; pre-answers the §3 question |
| C | Sub-50% LTV or weekend marks for BTC/SOL-beta collateral | Closes the §4 structural gap |
| D | State whose account BSOL's embedded staking yield accrues to; publish per-asset realized spread/fill quality | §5 — yield attribution + young-ETF options depth are the open questions |
| E | Liquidation-fee split disclosure (Insurance Fund vs. protocol revenue) | Fee goes to "a slice" of the fund — how big is the slice? |
| F | Name the custodian broker + options venue | Counterparty risk is named but not identified; disclosure is cheap trust |
| G | Auto-Roll state on the position card; first-assignment consent moment | Prevents the most predictable support/regret pattern |
| H | Consider allowlisted secondary pool for KYC'd wallets | Gives spAssets exit liquidity without the 20 bps redemption funnel |
| I | One canonical numbers source rendered into both docs and ToS (fees, buffers, waterfall, tranche targets) | §11 — six numbers currently diverge between the two documents |
Nearest neighbors: (a) brokerage margin (IBKR ~5.5–7% with full upside, but offchain and custody-with-broker), (b) covered-call ETFs (JEPI/QYLD-style: VRP harvest, no borrowing attached), (c) tokenized-equity venues (xStocks/Backpack: transferability, no native borrowing). Spout's actual moat is the options desk operations + broker integration, not the chain — Solana gives settlement and the Token-2022 KYC hook, but the hard part (running weekly disciplined calls through a regulated venue, reconciling broker state onchain) is an ops capability competitors can't fork from GitHub. That's also the right frame for the token: value accrual is protocol-fee-on-premium, which scales with real flow, not with emissions.
Spout is the most internally-consistent tokenized-equity borrowing design I've seen ship to a public testnet: the flywheel is real, the risk stack is explicit, and the docs mostly resist the urge to hide the load-bearing numbers. Its three weakest points are (1) a headline price ("0%") that hides a regime-dependent convexity cost on a deliberately high-beta roster, (2) a Senior yield that is structurally utilization-dependent but marketed as a fixed priority, and (3) one collateral asset (BSOL) whose embedded staking-yield attribution and young-ETF options depth the docs don't address. Fix A–D before mainnet and the story holds together; ship without them and the first MSTR-assignment wave or thin-premium month will write the teardown for you.
After publishing, I cross-checked the Terms of Service (spout.finance/terms — the legally binding document) against the docs (the marketing-adjacent one). Six load-bearing numbers diverge:
| # | Item | Docs say | ToS says |
|---|---|---|---|
| 1 | spAsset mint/redeem | 0.20% (20 bps) | 0.25% (§8.1b) |
| 2 | Withdrawal fee | 0.20%, stablecoins leaving the pool (lender side only) | 1% on borrowing and lending withdrawals (§8.1c) |
| 3 | Liquidation buffers | 4%–12.5% | 7.5%–20% (§9.3) |
| 4 | Loss waterfall | Insurance → Junior → Senior ("no loss reaches Senior unless the first two layers are exhausted") | Insurance → Junior → Protocol Treasury → Senior (§9.4) |
| 5 | Tranche targets | Senior ~9% net, Junior ~32% APY | Senior target ~8.67%; Junior ~24–27% net (§7.3) |
| 6 | Cycle cadence | weekly (Friday open → Friday close) | "weekly or biweekly depending on the asset" (§7.2) |
Plus a fee the docs' fee page omits entirely: an Idle Routing Fee of ~7% on yield from idle pool capital deployed to onchain money markets (§8.1e).
Recommendation I: render fees, buffers, waterfall, and tranche targets in both docs and ToS from a single canonical numbers source. The cost of a 20-bps fee table sitting next to a 1% fee clause isn't a typo — it's the trust of exactly the users Spout's disclosure-forward design is trying to win.
Method note: analysis is based on Spout's public docs (spout.finance/docs), Terms of Service (spout.finance/terms), site, and onchain-public information as of Sep 21, 2026; premium-rate sanity checks use listed-options market norms. Not investment advice. Testnet walkthrough pending credentials; will be appended. §5 was corrected on Sep 21 after fact-checking — an early draft misread BSOL as the BlazeStake LST; it is the Bitwise Solana Staking ETF (correction posted in the X thread). §11 was added the same evening after a docs-vs-ToS cross-check surfaced six divergent numbers; the addendum is also posted in the X thread.