Perennia is an everlasting options protocol on Solana. It gives traders call and put exposure without an expiration date.

The trading screen brings the options chain, price chart, and order ticket together, so a position can be explored and opened in one place.

Working through an options trade in the chain and order ticket.

Perennia trading workspace

The problem

Conventional options expire. A trader who wants to keep the same exposure must choose a new maturity and roll the position, which changes its pricing and risk profile. Perpetual futures avoid expiry, but they provide a different payoff from an option.

Perennia explores call and put exposure that can remain open without a scheduled expiry. That changes the infrastructure problem: pricing, funding, margin, and the protocol’s hedge have to keep working continuously rather than converge toward one settlement date.

Building a position

The trading workspace combines the options chain, live price chart, and order ticket. A user can inspect calls and puts across strikes, size a position, and follow its resulting exposure. A separate portfolio view collects positions and their risk measures.

The strategy builder makes multi-leg positions easier to reason about. Starting from a payoff shape such as a call, put, or spread, it lists the component legs and supports analysis of their combined Greeks, break-even levels, and maximum loss where defined. The goal is to connect a strategy’s visual shape to the actual positions behind it.

Selecting a strategy and reviewing its legs.

Perennia strategy builder

Pricing without an expiry

The pricing engine follows the everlasting-options framework: it combines Black–Scholes values across a geometrically weighted series of time horizons. The same weighting produces the Greeks, which describe sensitivity to changes such as the underlying price and volatility.

A volatility surface adjusts pricing across strikes using market inputs. Hourly funding connects the option’s mark price to its intrinsic payoff, using accumulated mark observations rather than treating a non-expiring contract as free to hold. Removing expiry does not remove funding costs or market risk.

Under the hood

I built the core risk engine: Black–Scholes pricing, volatility surfaces, margin, funding settlement, and real-time Greeks. Margin uses a SPAN-style set of twelve spot-and-volatility shock scenarios; defined-risk spreads use their maximum loss instead of the naked-position scenario result.

I also developed automated delta hedging on Pacifica perpetuals. The engine aggregates the options book’s directional exposure and checks it on a roughly five-second loop. It places a hedge when the deficit crosses configured thresholds, verifies fills, and reconciles local positions with the exchange so partial fills or restarts do not silently create state drift.

Connecting the moving parts

The runtime separates pure pricing math, the Pacifica exchange adapter, quote/hedge/risk/funding engines, and the API layer. REST and WebSocket interfaces connect the trading frontend to the engine, while PostgreSQL and Redis support persistence and runtime state.

Pacifica supplies market feeds and hedge execution. The wallet model separates the user’s master account from a delegated agent signer used for automation. Exchange availability, feed freshness, margin, and execution remain operational constraints; an everlasting contract is not a guarantee that a position can remain open regardless of its collateral.

The project received Most Innovative Product at the Pacifica hackathon. The demonstration brings these pieces together: selecting a contract, inspecting a strategy, and tracking exposure from the same workspace.

Details

Most Innovative Product, Pacifica hackathon.

Pacifica SDK, Solana Web3.js, React, TypeScript, Python, FastAPI, PostgreSQL, Redis