kest

Built for Solana

Your tokens.
Your strike.

Write covered calls on your Solana tokens. Choose your strike, set an expiry, and collect the premium in SOL.

Explore markets
Fig. 01 / Payoff study Interactive
+20%
Collateral 1:1 in tokensPremium asset SOLPayoff model At expiryKest / Options desk
Sample quotes

The options desk.

Pick an asset to model a covered call, or return to a draft you’ve saved.

UnderlyingStrike vs. spotExpiryPremium¹Action

¹ Total sample premium for collateral worth 1 SOL at the reference price. Quotes are illustrative.

Solana devnet

Trade on devnet.

Connect a Solana wallet to write, buy and exercise real calls. Every action below signs a transaction against the Kest program.

UnderlyingAmountStrikePremiumExpiresAction

Strike is the total SOL the holder pays to receive the whole lot. The premium is paid once, to the writer, when the call is bought. A protocol fee applies to both.

Solana devnet

Live from the chain.

Calls written
2
Open right now
1
Premium volume
0.01 SOL
Fees paid to stakers
0.00084 SOL
KEST staked
100,000
KEST burned
0
Verified snapshotFinalized slot 522,069,733 · 14 Nov 2026, 04:47:14 UTCView evidence ↓

Verify it yourself.

Follow each address and transaction on Solana devnet.

The program

Kest’s on-chain program enforces the rules for writing, buying and exercising calls, staking KEST and processing buybacks.

Explorer

Staking pool

Tracks staked KEST and holds SOL rewards until stakers claim them.

Explorer

Buyback reserve

Accumulates SOL for buybacks. The program pairs the reserve spend with a KEST purchase and burn in the same transaction.

Explorer

All counters and addresses

Inspect fee totals, volumes, buyback funding, protocol accounts and the receipts behind the figures.

On-chain proof
On-chain proof

Amounts recorded by the program

Calls bought
1
Calls exercised
1
Gross exercise volume
0.5 SOL
Protocol fees collected
0.0028 SOL
Fees credited to staking
0.00084 SOL
Fees allocated to buybacks
0.00056 SOL
Fees to configured recipient
0.0014 SOL
SOL credited to reserve
0.00056 SOL
Reserve balance including rent
0.00187572 SOL
SOL spent on buybacks
— SOL
Buybacks completed
—
Fee rates, premium / strike
—

The six counters above show lifetime activity except for open offers and staked KEST, which show current balances at the displayed slot. An open offer is unfilled and unexpired. Staker payouts count claimed SOL. The burn counter tracks KEST destroyed by completed protocol buybacks.

Account directory

Protocol control

These keys can adjust fee rates within the hard caps written in the program (10% of the premium, 2% of the strike), pause new calls, and run buybacks. None of them can move locked collateral or staked KEST.

  • AdminLoading…

Reference transactions

The mechanics.

01 Cover the call

The seller locks the full number of tokens the buyer could receive. The collateral stays committed for the life of the call.

02 Name your terms

Set a strike in SOL per token, an expiry, and a premium. In a filled call, the buyer pays the premium for the right to buy at your strike.

03 Exercise or expiry

On devnet the buyer can exercise before expiry. If exercised, you deliver the collateral at the agreed strike. If the call expires unexercised, the tokens return to you. You keep the premium in either case and still bear the downside if the token falls.

Where fees go.

Follow the fee split recorded on devnet. The percentages apply to collected protocol fees.

30%

Share of collected protocol fees credited to the staking pool.

Current rates, read on-chain: loading…

Kest documentation.

Read the guide here. Start with a sample trade, or jump to the protocol and its on-chain evidence.

What is Kest?

Kest is a Solana covered-call protocol. Writers lock tokens and offer buyers the right to buy them at a fixed strike for a premium in SOL. Use the desk to model a position and the devnet ledger to follow actual trades.

What you can use today

The private desk runs in the browser. It offers four sample markets, an interactive payoff chart, and editable drafts saved on your device. Saving a draft moves no funds. On the same page, Live from the chain reads finalized devnet activity. Verify it yourself links each protocol account and sample transaction to Solana Explorer.

What happens when a call is filled

A writer locks the token quantity. A buyer pays a premium for the right to buy those tokens at a fixed strike. The recorded devnet buyer exercised before expiry. If the buyer exercises, the writer delivers the tokens and receives the strike payment. If the option expires unexercised, the writer recovers the tokens. The writer keeps the premium in both cases.

Edition dated 14 November 2026. Examples use the sample desk. On-chain observations use finalized Solana devnet receipts. The proof directory includes the addresses and signatures.

Write your first draft

Model a position you can check by hand. This example uses the JUP sample market and a custom premium.

  1. Open a JUP call. Choose Markets, then Write on the JUP row. Its reference price is 0.0031 SOL per JUP. Opening from the home-page Write a call button instead selects wSOL and carries over the home-page strike slider.
  2. Enter your terms. Set Collateral quantity to 100, leave Strike above reference spot at +15%, select 7 days, and enter 0.05 in Total premium (SOL). Entering the premium last overrides the estimate.
  3. Read the chart. Leave Price at expiry at 135% of spot. The marker should read 0.4065 SOL. The strike is 0.003565 SOL per JUP. Drag the price below the strike to see the position value fall.
  4. Save and reopen. Choose Save draft. In My drafts, select Edit to reopen the same terms, then Update draft to keep a change. Delete removes the selected draft from this browser. Closing the form discards unsaved edits.

Reading the two lines

The solid line shows the value of the collateral plus the premium, assuming exercise above the strike. The dashed line shows the value of holding the same tokens. Where the solid line becomes horizontal, the writer has reached the maximum gross position value for those terms. The marker shows the selected scenario.

Why an apparently unchanged result can be correct

In this example, moving the price from 135% to 200% of spot leaves the solid line at 0.4065 SOL. The buyer can acquire all 100 JUP at the fixed strike, so additional appreciation above it accrues to the buyer. Below the strike, the writer still bears the token price risk.

Markets and controls

Each market starts with a fixed SOL-denominated reference price. Defaults model collateral worth approximately 1 SOL, making the four rows easy to compare.

MarketSpot in SOL/tokenStrike upliftTermPremium¹
wSOL1+20%14 days0.038 SOL
BONK0.00000012+35%7 days0.062 SOL
JUP0.0031+15%30 days0.045 SOL
WIF0.011+25%14 days0.053 SOL

¹ Total sample premium on the default collateral at the default strike and term. Different rows have different terms. Premium rate ↓ ranks the fixture rates directly, without annualizing. These figures are illustrative, and the broader SPL-token vision exceeds the four samples available here.

Inputs and units

ControlBehavior
Collateral quantityEnter token units. The form accepts quantities of at least 0.000001. It does not validate against the decimals of a real mint.
Strike above reference spotChoose +5% to +60% in one-percentage-point increments. The resulting strike is displayed in SOL per token.
ExpiryChoose 7, 14, or 30 days. The browser adds the term to the current instant and shows a UTC calendar date.
Total premiumSet any finite nonnegative amount in SOL for the whole position. Zero is accepted.
Price at expiryExplore 0% to 200% of reference spot. The slider starts at 135% each time the composer opens.

Switching the underlying resets the quantity, strike, tenor, expiry and premium to the new market’s defaults. wSOL is a wrapped form of SOL. Because the desk quotes in SOL, its wSOL price slider is a mechanical illustration of the chart, rather than a realistic forecast of large wSOL/SOL moves.

Premium and payoff formulas

The simulator first suggests a premium from a fixed market preset. It then values the writer’s position at the expiry price you select.

Premium estimate

Let Q be token quantity, S₀ reference spot in SOL per token, s the selected strike uplift as a decimal, and D the selected term in days. The preset supplies its premium rate r₀, strike uplift s₀, and term D₀. For JUP these are 0.045, 0.15, and 30.

P = Q × S₀ × r₀ × √(D / D₀) × (1 + s₀) / (1 + s)

Doubling quantity doubles the estimate. A longer tenor increases it with the square root of time. A higher strike lowers it if all else is equal. For 100 JUP, +15%, and 7 days, the rule suggests about 0.00673849 SOL. The walkthrough overrides this with 0.05 SOL. This heuristic uses no order book, implied volatility, or live pricing data.

Value at expiry

Let K be strike in SOL per token, S_T the token price at expiry, and P the total premium. Values below assume exercise above strike and exclude fees.

K = S₀ × (1 + s)
Writer value = Q × min(S_T, K) + P
Hold value = Q × S_T
Buyer profit or loss = Q × max(S_T − K, 0) − P

The chart displays gross writer value. To measure profit against the reference position, subtract Q × S₀. A writer with a different acquisition cost should use that cost for personal profit or loss. The premium offsets only part of a decline. At a zero token price the modeled writer value is P.

The writer’s gross cap is Q × K + P. Relative to buying the collateral at S₀, the writer’s break-even price on the uncapped branch is S₀ − P/Q when that price is nonnegative. The buyer breaks even at K + P/Q. The hold-only line overtakes the covered-call line above that same price.

JUP at expiry

Follow one 100-JUP draft through six expiry prices. The writer keeps the premium in every scenario, while the buyer recovers its cost only once the token price rises far enough above the strike.

Reference spot is 0.0031 SOL per JUP. A +15% strike gives 0.003565 SOL per JUP. The collateral starts at 0.31 SOL and the buyer pays a total 0.05 SOL premium. Exercising costs 0.3565 SOL for all 100 JUP.

0 SOL0.5 SOL0%100%200%strike at 115%
Writer in cobalt · Hold only in grey · Expiry price as a percentage of spot
Expiry spot¹Hold valueWriter valueWriter P/L²Buyer P/L
0%0.00000.0500−0.2600−0.0500
80%0.24800.2980−0.0120−0.0500
100%0.31000.3600+0.0500−0.0500
115% (strike)0.35650.4065+0.0965−0.0500
135%0.41850.4065+0.0965+0.0120
200%0.62000.4065+0.0965+0.2135

¹ Percentage of the reference spot. All monetary columns are in SOL. ² Writer P/L uses 0.31 SOL as starting collateral value and excludes fees. Exactly at the strike, either exercise choice has the same gross value.

At 135%, the buyer can pay 0.3565 SOL for tokens worth 0.4185 SOL. The difference is 0.062 SOL. After the 0.05 SOL premium, the buyer gains 0.012 SOL. The writer gains 0.0965 SOL against the starting position, while simply holding would have gained 0.1085 SOL.

Fees and token flows

A buyer pays a premium to acquire a call. Exercising requires a second SOL payment for the tokens. Each payment generated a protocol fee in the recorded trade.

Recorded eventGross amountFee
BuyOption0.01 SOL premium0.0003 SOL (3% of premium)
Exercise0.5 SOL strike payment0.0025 SOL (0.5% of exercise value)

Follow the 0.0028 SOL of fees

DestinationShareAmount in the two receipts
Staking pool30%0.00084 SOL of rewards credited. A subsequent ClaimRewards transaction paid 0.00084 SOL to the staker.
Buyback reserve20%0.00056 SOL credited for buybacks. Reserve funding alone leaves the KEST supply unchanged.
Fee recipient50%0.0014 SOL to the configured recipient. The receipts establish the destination. Its subsequent use is unspecified.

Rates above describe these two devnet transactions. Premium volume is the gross premium on filled calls. The writer’s take can differ after fees. The simulator shows gross values and excludes fees.

How to verify a burn

Follow the reserve’s activity. A completed buyback should link its SOL spend to the KEST received and the SPL burn instruction in the same successful transaction. The burn amount is measured in KEST base units. The first recorded reserve transactions funded the reserve and burned zero KEST.

Option lifecycle and settlement

The devnet history contains a write, a purchase, an exercise and a second write. Explorer links under On-chain proof let you follow each instruction.

StageWho actsWhat to check
WriteOptionWriterThe writer posts terms and deposits collateral. A written offer contributes to Calls written even if nobody buys it.
BuyOptionBuyerThe buyer pays the premium and takes the exercise right. The option leaves the count of open offers.
ExerciseBuyerThe example buyer paid 0.5 SOL gross and received the escrowed tokens. The transaction also records fee movements.
Expiry without exerciseWriterThe design provides for recovery of unexercised collateral. The linked receipts cover the exercised path. Check the deployed rules before relying on a reclaim time.

When can the buyer exercise?

The devnet buyer exercised before the recorded expiry. The desk chart uses the token price at expiry to compare outcomes. Its slider cannot exercise a position or tell you the final eligible slot.

What fully collateralized means

The writer commits the full number of tokens promised to the buyer. That covers delivery even if the price rises. It leaves the writer exposed to a decline in the token and limits the upside once the strike is reached. The buyer still needs the strike payment to exercise.

The desk models whole positions. Partial fills, transfer of an exercise right, and cancellation of a filled call are outside the simulator.

Solana integration and proofs

Live from the chain reads finalized accounts from Solana devnet. The proof directory links the executable program, configuration, staking pool, buyback reserve, token mint, vaults and reference transactions.

Read the six counters

CounterDefinition
Calls written / Open right nowThe first is cumulative. The second counts unfilled option accounts whose expiry is later than the observation time.
Premium volumeCumulative gross SOL premium on purchased calls. Excludes strike payments and open offers.
Fees paid to stakersCumulative SOL claimed by stakers. A credit to the staking pool alone is a separate event.
KEST staked / KEST burnedThe first is the current deposited quantity in the staking pool. The second counts KEST destroyed by the reserve’s protocol buybacks. Both use the devnet mint’s six decimals.

Verify a payment yourself

  1. Choose the right network. Open On-chain proof and select the exercise receipt. Explorer should say Devnet and show a successful transaction.
  2. Follow both legs. Expand the Kest instructions and inner transfers. Check the mint and token movement, the SOL payment, and the fee destinations. Open ClaimRewards to see the SOL actually claimed.
  3. Check freshness. Read the finalized slot and timestamp next to the counters. A saved snapshot stays dated if a new reading cannot be verified.

Identify tokens by mint address. A supported-mint policy must account for transfer fees, freeze authority and transfer hooks before promising delivery for a new asset.

Terms used in the desk

Kest displays quantities in token units and prices in SOL per token. Keeping these units separate makes it easier to read the composer and verify a settlement.

TermMeaning in Kest
Writer and holderThe writer sells the option. The holder buys the right to acquire a defined token quantity at the strike. In the simulator you model the writer’s position.
Underlying and collateralThe underlying is the token named in the contract. In a fully covered call, the collateral is the full quantity that the holder could exercise.
Spot and strikeSpot is the reference token price. Strike is the agreed exercise price per token. The strike uplift is a percentage of spot when setting terms.
Tenor and expiryTenor is a duration such as seven days. Expiry is a specific time. For a live position, exercise eligibility depends on the contractual time rules.
Premium and feeThe premium is the price of the option. The devnet buy and exercise receipts record separate protocol fees on the premium and strike payment.
Exercise and settlementExercise uses the buyer’s right. Physical settlement completes delivery of tokens against the agreed strike payment.
Mint and vaultThe mint identifies a token on a given Solana cluster. The vault is the token account intended to hold collateral under the program’s control.
Gross value and P/LGross value is what the position is worth at expiry. Profit or loss subtracts its starting cost and, for a real trade, relevant fees.

A call is in the money when the expiry price exceeds the strike. The premium is a sunk cost for the buyer at exercise time. A buyer can rationally exercise an in-the-money call and still lose money overall if its exercise value is smaller than the premium.

Frontend and integration handoff

The desk ships as static HTML, CSS and JavaScript with bundled fonts and a logo. The working simulator requires no API key, RPC endpoint, wallet, database or package installation.

Run the desk locally

Extract the UI archive and open a terminal in the folder containing index.html. Run python3 -m http.server 8000 and visit http://localhost:8000/. In the hosted source checkout the same files are under dist/. Using localhost gives drafts a consistent browser origin.

File or functionResponsibility
index.html / style.cssDesk layout, open and close controls, input limits, payoff SVG and responsive styles.
chain.js / chain.cssRead finalized devnet accounts, verify reserve history, and display the counters and proof directory.
app.js · assetsFixed market fixtures and their reference prices, base strike uplifts, terms and premium rates.
openComposer / estimatePremiumRestore defaults or saved terms, calculate illustrative premiums and preserve manual overrides.
drawModel / drawStudyCompute terminal position values and render the two separate charts. The home-page study is schematic.
readDrafts / setDraftsRead, validate and write local records. Storage events refresh open tabs on the same origin.

Connecting a trading UI

The read-only panel uses public devnet RPC with no API key. To submit trades, integrate a version-matched instruction schema, supported mints and decimals, then simulate and confirm each transaction. A wallet would sign write actions. RPC provides account reads and transaction status. A market-discovery service, quote source or price oracle is conditional on the chosen trading and settlement design.

Replace hard-coded samples with clearly identified market data. Display an explicit mint and cluster, the collateral and SOL flows the user will sign, and a confirmed receipt. Treat a pending or timed-out submission as unresolved and reconcile the on-chain option state before enabling a retry.

Draft storage and troubleshooting

The current desk keeps an array of drafts in localStorage under kest:drafts:1. Each record is specific to the browser profile and site origin. There is no account sync or on-chain order ID.

FieldStored meaning
id / assetGenerated UUID used to update the draft, and one of the four fixture symbols.
quantity / strikeToken units and percentage points above reference spot. A stored strike of 15 means +15%.
days / expiresAtTerm of 7, 14 or 30 days and absolute expiry as Unix time in milliseconds.
premiumTotal SOL premium for the lot. The scenario slider value and a manual/automatic pricing flag are not stored.

Common questions

Why did the premium stop moving? Editing it manually fixes its value. Reopening a saved draft also fixes the saved premium. Changing the underlying or starting a fresh call restores automatic estimation for that selection.

Why did the expiry date change? Choosing a new term recalculates from the current browser time. Reopening an existing draft preserves its saved expiry. An old draft can show a past date because it is a saved simulation.

Where did my draft go? Use the same browser, profile and site address. The hosted desk and localhost have separate storage. Clearing site data or ending a private browsing session can erase drafts. A storage error is reported if the browser rejects a save.

Why is there no transaction link? Save draft writes locally. There is no wallet signature, collateral transfer or premium payment to look up. Delete removes only the browser record.

Why can’t I save? Enter a supported token, a finite quantity of at least 0.000001 and a finite nonnegative premium. If those fields validate but saving fails, check that the browser allows storage for the site.

Verification before live trading

Use these acceptance checks before enabling wallet transactions. The linked devnet receipts demonstrate individual actions. They do not cover all failure cases.

TestExpected evidence
Collateral reservationA successful offer locks the full deliverable. Insufficient collateral or a mismatched mint fails without creating a fillable underfunded offer.
Fill and retriesA successful fill records one buyer and one premium payment. Two simultaneous fills, repeated signatures or a new retry transaction cannot pay or fill twice.
Exercise and lapseExercise exchanges both legs atomically. Test at, immediately before and immediately after each deadline. After final settlement, the alternative release path fails.
Authority and token behaviorWrong signers, substituted vaults and unsupported extensions fail. Test each supported mint’s decimals and actual credited quantity.
Fee conservationCollected fees reconcile to actual destinations, including integer rounding. Repeated claims or processing of a buyback batch cannot distribute the same amount twice.
Receipts and recoveryA user can distinguish pending, failed and finalized activity. Explorer links resolve on the correct cluster and a burn is verifiable against the correct mint.

Decisions still needed

Publish the exact expiry boundary, reclaim conditions, mint admission criteria, staking eligibility, fee configuration controls, buyback execution permissions and upgrade policy for the release users will sign against.

Implementation record

The on-page proof directory identifies the devnet program, account and vault addresses, transaction signatures, and snapshot slot. Verify the corresponding deployment and interface separately before using another cluster.

Kest / Simulator

Write a call.

Model your terms and save a draft on this device.

At expiryPosition value
TOKEN PRICE →
Covered callHold only
Modeled value—
Strike price—
Expiry (UTC)—

Includes premium. Assumes exercise above strike. Excludes fees.

Simulation only · No wallet required
Kest / On-chain

List a call.

Lock tokens from your wallet and offer the call for a premium in SOL.

SummaryWhat you sign
You lock—
Strike total—
Premium paid by the buyer—
Protocol fee—
Expires (UTC)—
You receive on sale—

Your tokens stay in a program vault until the call is exercised, cancelled, or reclaimed after expiry. You keep the premium in every case.

Signs a devnet transaction
Kest / Wallet

Connect a wallet.