Charm docs.
Charm is an onchain options venue for BTC, ETH, XRP and Tesla (TSLA) stock. You buy or sell European calls and puts, pay and get paid in USDC, and keep custody of your funds the whole time. This page explains how the products work, where the prices come from and how settlement happens.
Products
Options
Dated, European, cash-settled calls and puts. One contract covers one unit of the underlying. A buyer pays the premium up front and can never lose more than that.
Covered calls and cash-secured puts
Sell an option fully backed by collateral: the underlying for a call, or USDC equal to strike × size for a put. You keep the premium; nothing can be liquidated.
Vaults
A USDC vault sells options to traders and hedges its delta with perpetual futures. Depositors earn the premiums and carry the risk of sharp moves.
Everlasting options
Options with no expiry. Each funding period, holders pay the difference between the option's mark price and what it would pay out right now: funding = mark − max(S − K, 0) for a call.
Stock options
Calls and puts on Tesla (TSLA), cash-settled in USDC against the stock's price. You never need to hold the stock or a stock token. More stocks will follow.
Block trades and RFQ, portfolio margin
Request-for-quote for size and multi-leg structures, filled all-or-nothing; and margin across a whole book so hedged positions need less collateral.
Markets and expiries
| Market | Trading | Expiry time | Risk pool |
|---|---|---|---|
| BTC, ETH, XRP | 24/7 | 08:00 UTC | Crypto |
| TSLA | Quoted 24/7, priced from US market hours | US close (20:00 UTC) | Stocks |
Expiries run daily, weekly and monthly, plus a quarterly. Strikes are spaced so nine of them cover about two expected moves either side of the spot price.
Pricing
Every quote comes from the Black-Scholes model with a live volatility surface:
- S is the oracle spot price, K the strike, T the time to expiry in years, r the rate (0% for crypto, 4% for stocks).
- At-the-money volatility comes from Deribit's 30-day DVOL index for BTC and ETH, and from a calibrated model for XRP and TSLA. Shorter expiries price slightly higher:
σ_ATM(T) = σ_30d · (1 + 0.06·ln(30 / days)). - The smile sets volatility per strike:
σ(K) = σ_ATM · (1 + skew·z + curvature·z²), wherez = ln(K/F) / (σ_ATM·√T). Stocks carry more put skew than crypto. - Bid and ask sit about 1.2% of the premium either side of fair value, never tighter than one price tick.
- Expected move to expiry is
S · σ_ATM · √T, shown above every chain.
Price data
- Spot prices come from Pyth Network's Hermes service and refresh about once a second. The 24-hour change compares against Pyth's price from 24 hours earlier.
- Volatility for BTC and ETH comes from Deribit's public DVOL index, refreshed every five minutes.
- API keys stay on Charm's servers. The browser only talks to Charm.
- If a feed is unavailable, the Markets page says so clearly instead of showing stale numbers as live.
Settlement
At expiry, the settlement price is the time-weighted average of the oracle index over the 30 minutes before expiry. In-the-money options pay max(settlement − K, 0) for calls and max(K − settlement, 0) for puts, per unit, in USDC. Out-of-the-money options expire worthless. Settlement is automatic.
Placing an order
- Open Markets, choose an underlying and an expiry, and click an ask to buy or a bid to sell.
- Set size and limit price. The ticket shows what you pay, your maximum loss, break-even and the payoff at expiry.
- Press Buy or Sell. Only now do you connect a wallet.
- Sign the order. It is an EIP-712 typed-data signature: it costs no gas and shows exactly what you approve.
- The matching engine fills the order and smart contracts settle the trade on an Ethereum layer 2.
Wallets and custody
Wallet connection runs through Privy. Connect an existing Ethereum wallet, or sign in with email and Privy creates an embedded wallet for you. Charm never holds your keys and cannot move funds without your signature.
Risk and margin
- Buyers pay in full up front. Sellers post full collateral at launch, so no position can be liquidated.
- Crypto and stocks are separate risk pools, each with its own insurance fund. Losses in one never spread to the other.
- Open interest is capped per strike, per expiry and per market, with lower caps for XRP and TSLA.
Vaults
The options vault quotes every strike from day one. It prices off the same surface as the chain, widens its spread as its exposure grows, and rebalances its perp hedge when its delta drifts past a threshold. Perps hedge direction but not sharp moves, so the vault can lose money; its performance, including drawdowns, is published.
Who can trade
Charm is not available to US persons or to anyone in the United States or its territories (Puerto Rico, Guam, the US Virgin Islands, American Samoa, the Northern Mariana Islands and US minor outlying islands). Visitors from these places can browse but cannot connect a wallet or place orders. Location checks are one safeguard; the terms of service apply regardless of how you connect.
Developers
| Endpoint | Returns |
|---|---|
GET /api/prices | Latest spot price, publish time and 24-hour reference price per market, from Pyth. |
GET /api/vol | 30-day at-the-money volatility for BTC and ETH, from Deribit DVOL. |
GET /api/geo | The visitor's country and whether trading is restricted there. |
Orders are EIP-712 typed data with domain Charm version 1 and an Order struct: market, optionType, strike, expiry, side, size, limitPrice and nonce.
Risk disclosure
Options are complex instruments and carry a high risk of loss. Buyers can lose the full premium. Sellers and vault depositors can lose more than the premium they collect. Prices move quickly, oracles and smart contracts can fail, and past results do not predict future ones. Nothing on this site is investment advice.
