# Knox Finance

**Knox Finance provides DeFi options vaults built with risk management in mind. DeFi Option Vaults (DOVs) enable you to earn yield on your crypto assets, like, USDC, BTC and ETH, while minimizing opportunity risk.**

<figure><img src="https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2FNG0Jhvbk3OjRX3NoRBUQ%2Fdocs_header.png?alt=media&amp;token=798933e9-aace-4338-bddf-0f34ba1c239a" alt=""><figcaption></figcaption></figure>

Our covered call and cash-secured put vaults focus on:&#x20;

* Generating low-risk yield by underwriting options.
* Maintaining exposure to an asset.
* Outperforming buy and hold (HODL) strategies.

## What are Knox DeFi Option Vaults (DOVs)?

* DOVs automate the process of selling options to generate sustainable yield.
* Depositors can decide to either sell call or put options depending on their market sentiment.
* The option strike price will be determined once per epoch using the [delta strike formula](/overview/vault-system#selection-methodology).
* Once pricing is determined, the options are sold via [Dutch auction](/overview/options-auction). The premium paid by the option buyers represents the weekly yield for depositors.
* At the conclusion of the auction, the vault underwrites the options sold using collateral provided by depositors.


# Options

Options are financial contracts that give you the right to buy or sell an asset for a specific price by a specific date.

An option that allows you to buy an asset is called a **call option**, while an option that allows you to sell an asset is called a put option. For brevity, they are often referred to as just **calls** and **puts**.

At minimum, options contracts always have the following specifications:

* **Asset and quantity**
* **Option type** (call or put)
* **Strike price** -- the price at which the underlying asset can be bought or sold
* **Expiration/maturity date** -- the date by which the option must be exercised (used)

The **premium** is the price of an options contract. When an option is first written, the premium is the income that the option writer receives. If an option is traded on secondary markets, the premium is the price at which it changes hands.

Options are used in various trading strategies, often to hedge existing long or short positions. Knox Finance uses options to generate yield for users (by selling options contracts) while remaining resilient to market swings with [risk-adjusted vaults](/overview/risk-adjusted-vaults).

### Implementation

Knox Finance uses **American options**, issued as ERC-1155 tokens by [Premia](https://premia.finance/):

> Premia options are ERC-1155 tokens that offer the holder the rights (but not the obligation) to buy or sell the underlying token by a specified date. While traditional stock option contracts usually represent 100 shares of the underlying stock, options on Premia represent the same number of tokens as described.

For information about the technical implementation of these options, consult the [Premia documentation](https://docs.premia.finance/).


# Covered Calls

In theory, it's possible to write call options without holding any of the underlying asset. These are called **naked calls**, and have unlimited downside for the option writer if price rises significantly, since they will eventually need to buy the asset to fulfil the contract (or have their collateral liquidated).

In contrast, **covered calls** are call options sold while holding an equivalent spot position in an asset. Even if the price of that asset rises significantly, the option writer will always be able to fulfil the contract with their spot position. As a result, covered calls have substantially less downside.

{% hint style="info" %}
If ETH were trading at $1500, one might write 10 call options with a strike price of $1600. In the case of a naked call, the option writer might hold $15000 USDC as collateral; in the case of a covered call, the option writer would hold 10 ETH as collateral. If the price increased to $2200 before the options were exercised, the naked call writer would have to buy ETH from the market for $600 more (per unit) than they receive, resulting in a $6000 loss less premiums. On the other hand, the covered call writer would already have the ETH needed to fulfil the calls, and would still walk away with a dollar profit equivalent to the premiums received when writing the options.
{% endhint %}

Covered calls are an excellent way to generate yield on spot positions -- while maintaining a bullish outlook on those assets -- and are the cornerstone of many structured products, including Knox Finance's risk-adjusted vaults.

### Risks of Covered Calls

Although covered calls are considered a low-risk strategy, there are still some risks associated with them.

Firstly, the underlying asset may decrease in value, causing the dollar value of the spot position to decrease. As a result, covered calls make the most sense for those who already have exposure to the asset, and want to maintain that exposure.

Secondly, the underlying asset may significantly increase in value beyond the strike price. In this case, the options will almost certainly be exercised, and the option writer will lose out on any appreciation above the strike price. In the example provided earlier, the covered call writer still profits in dollar terms, but loses out on the appreciation between $1600 and $2200.

Knox Finance vaults are primarily designed for those looking to maintain bullish (or bearish) exposure to an asset, nullifying the former risk. Additionally, they are carefully structured to minimize the latter risk, as discussed on the next page.


# Risk Management

Risk management at the vault level

**Unlike other DOVs, Knox Finance provides risk tooling built into the vaults’ infrastructure**. Users can exit their position at any time during an epoch. This added flexibility allows users to take profits or reduce risk in the event a position moves against them.

*The instant withdrawal feature works as follows:*

* Users are able to send a transaction to receive their share of assets in the vault.&#x20;
* Usually this share is in the form of short tokens that represent the collateral of the vault.&#x20;
* Once a user receives these short tokens they can either hold them until expiration, or go over to Premia’s position page and sell the position back to the pool (given there is appropriate liquidity).

**This can be extremely advantageous in a few different situations:**&#x20;

* When a user wants to liquidate their assets immediately.&#x20;
* If underwritten calls or puts are moving in the user’s favor, they can opt into profit earlier in an epoch (although it will be less than the full amount) before re-entering the vault.&#x20;
* If underwritten calls or puts are moving in an undesirable direction users can reduce the risk of further downside at any point during an epoch.<br>


# Vault System

Every product offered by Knox Finance has its own vault -- a smart contract responsible for holding collateral and writing options contracts.

Vaults are distinguished by their collateral asset (wETH, wBTC, DAI, etc) and delta (bullish or bearish).

They are accompanied by three other design components:

* **Queues** act as liquidity buffers for vaults, holding user funds until they can be deposited
* **Pricers** determine the strike price for options and auction pricing parameters
* **Auctions** sell options using a [Dutch auction](/overview/options-auction) format

### Epochs

Together with the other design components, vaults work on 7-day schedules called epochs. They start and end every **Friday at 8AM UTC**.

#### Epoch Timeline

* 24 hours before the start of a new epoch, **on Thursday at 8AM UTC\***, the strike price for that epoch's auction is determined and the auction is initialized.
* The epoch starts **on Friday at 8AM UTC\*.**
* The auction starts **on Friday at 4PM UTC** and lasts 30 minutes.
* The auction ends **on Friday at 4:30PM UTC\*** and options are written. Note, the auction may end earlier if all available option contracts have been sold within the alotted time.
* Options expire at the end of the epoch, i.e. **on Friday at 8AM UTC**.

<figure><img src="https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2F0xBPy9NS4cI44HQqH8EG%2Fepoch-timeline.png?alt=media&amp;token=0e12574a-1367-4c0c-9943-c4b8111d07d5" alt=""><figcaption></figcaption></figure>

\* Process is driven via cron-job, times are approximate.

### Selection Methodology

#### Option Delta

As mentioned earlier, each vault has an option delta. The textbook definition of delta is the amount an option price is expected to move based on a $1 change in the underlying. \
\
If a call option has a $0.1 delta, the price of the option will increase or decrease $0.1 for every $1 change in the underlying. Calls have a range of delta values between 0-1, puts have a range between -1-0. As the option approaches expiration the delta for ITM options will approach 1 for calls and -1 for puts, while the delta for OTM options will approach 0. \
\
For calls an exercised option represents "stock" purchased by the option buyer, likewise puts represent "stock" sold by the option buyer. For both calls and puts an OTM option after expiration has no intrinsic value. Keep in mind that the option delta is relative to the position of the strike price compared to the spot price of the underlying. In other words, an option further ITM will always have a higher delta than an option further OTM.

Another way of thinking about delta is that it is a proxy for an options probability of expiring ITM. Consider the following example, we have two wETH calls, and the spot price is $2000:

1. Strike - $2200, Maturity - 1 week
2. Strike - $2500, Maturity - 1 week

Since option 1 is closer ITM than option 2, it will have a higher delta due to the fact that as time decays the first option has a higher likelihood of expiring ITM. Similarly, if the wETH spot price increases, the delta for both options will also increase, but the delta of option 1 will remain higher than that of option 2.

<figure><img src="https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2FvMSxyJecAFNlb2bZFFoT%2Fmoneyness.png?alt=media&amp;token=3930d5f5-a43d-4f2a-b6da-fa557275f4be" alt=""><figcaption></figcaption></figure>

#### Delta Strike Selection

Under the [delta strike formula](/appendix/delta-strike-formula), we determine a strike price $$K\_{delta}$$ at a specific option delta as a function of implied volatility $$\sigma$$. In other words, if we know $$\sigma$$, we can obtain $$K\_{delta}$$, provided that the spot price, time to expiration, and option delta are constants. We can therefore create vaults with varying levels of relative risk and return.

### Option Pricing

Knox Finance will offer a certain quantity of options to be sold at a pre-specified time, and pre-determined strike. Our vaults enable price discovery to occur on-chain via a Linear Gradual Dutch Auction (LGDA). During the allotted time period, options will be written at a price specified by a [linear curve](/overview/options-auction#primer-on-dutch-auctions). The implied volatility of the option will start at a maximum value ($$\sigma\_{\max}$$) and it will be gradually decremented according to the remaining time in the auction to a minimum reserve implied volatility ($$\sigma\_{\min}$$). A bidder will have the chance to secure this price for a given lot size, depending on how much capital has been utilized prior to their bid.


# Options Auction

Knox Finance vaults sell options every epoch using a Dutch auction format. Since the auction determines the price at which options are sold, it also determines the premiums that the vault's depositors will earn for that epoch.

### Primer on Dutch Auctions

Dutch auctions are a type of auction whereby the price of an asset starts high and is gradually decreased as the auction progresses.

The auction ends when there are enough bidders at or above a certain price, such that the entire lot of the asset can be sold at that price.

Importantly, all successful bidders in a Dutch auction pay the auction clearing price:

![](https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2Fgit-blob-b1a6ac1b920475e0305a01d9fe5a6a9fc62d2025%2Fprice-curve.png?alt=media)

### Auction Details

Auctions last 30 minutes, with price decreasing along a linear price schedule. The offset delta strike represents the further-OTM option strike, it's calculated using a fixed percent offset from the delta strike.&#x20;

{% hint style="info" %}
If a call option's delta strike is $1000, and the delta offset is 10% the offset delta strike is $1100. Likewise, if the option were a put, the offset delta strike is $900.
{% endhint %}

Options cannot be sold below the minimum price:

* In case there are not enough bids at or above the minimum price to sell the entire lot of options, the auction will be completed partially and proportionally fewer options will be written that epoch.
* In case there are no bids at or above the minimum price, the auction will be cancelled and no options will be written for that epoch.

### Auction Cancellation

An auction may be cancelled if one of the following happens:

1. The auction is initialized with an invalid configuration
2. The auction prices have not been set before the auction starts
3. The auction prices are initialized with an invalid configuration
4. The auction is not processed within 24 hours of the auction end time

In the event an auction is cancelled, the option buyers will be refunded the full amount paid.


# Fee Structure

Knox Finance earns revenue by taking a performance fee when the vault is profitable.

### Performance Fee

At the end of each epoch if the vault has a positive net income, a 15% performance fee is taken. The net income is calculated by comparing the total assets held by the vault at the start of the auction, with the adjusted total assets at the end of the epoch. The adjusted total assets account for assets withdrawn from the vault during the epoch. If the adjusted total assets are greater than total assets before the auction, the net income is set to the total premium, otherwise, the difference is deducted from the total premium.

`netIncome = totalPremium - (lastTotalAssets - adjustedTotalAssets)`


# Depositing Collateral

Collateral (wETH, wBTC, DAI, etc) is deposited into the queue where it remains until the epoch is processed once per week.

### Vault Tokens

Knox Finance uses two types of tokens to keep track of new and existing deposits:

* **ERC1155 claim tokens** represent assets deposited into the queue that have not yet been moved to the vault, at a 1:1 rate
* **ERC4626 vault shares** represent shares of the vault assets

At the beginning of every new epoch, ERC1155 claim tokens are converted into ERC4626 vault tokens shares based on the vault's current price per share.


# Withdrawing Collateral

### Withdrawing From Queue

Newly deposited collateral is [held in the queue](/overview/vault-system) until the start of a new epoch. During this window, you can always withdraw collateral, without restrictions, penalties, or fees.

Upon withdrawal, your ERC1155 claim tokens will be exchanged for collateral at the same 1:1 rate applied at deposit.

Remember that at the end of the epoch, any collateral in the queue will be moved to the vault, and different rules for withdrawal apply.

### Withdrawing From Vault

Once funds have been moved from the queue to the vault, they **only** can be withdrawn without taking any exposure to a short position after a new epoch starts (Friday at 8AM UTC) and before the auction starts (Friday 4PM UTC).

While the auction takes place, **you cannot withdraw** from the vault until the auction has been processed.

After the withdrawal lock is cleared, you can again withdraw funds, but you will take on exposure to any short positions assumed by the vault during the auction.

{% hint style="warning" %}
If a short position is withdrawn from the vault, the collateral in the position will enter the  Premia Options pool free liquidity queue post-option expiration. Therefore, the collateral may be used to underwrite options. We recommend [withdrawing from the Premia Option pool](https://docs.premia.finance/platform/liquidity-pools-overview/pool-accounting-entering-exiting-lp-pools/exiting-the-market-withdrawals) to prevent further option underwriting.
{% endhint %}


# Redeeming Claim Tokens

When a deposit is made, claim tokens are minted in a 1:1 ratio to the amount of collateral deposited. At the beginning of every new epoch, ERC1155 claim tokens are converted into ERC4626 vault shares in an amount determined by the vault's current price per share.

{% hint style="info" %}
If there are 100 claim tokens for the current epoch are in circulation, and 1000 vault shares are issued. The resulting price per share for the current epoch will be 10 vault shares / claim token.
{% endhint %}

### Vault Shares

A vault share represents a proporational amount of collateral assets and option contracts underwritten by the vault. Claim tokens minted in a given epoch may be exchanged for vault shares in any subsequent epoch.

{% hint style="info" %}
If a claim token is minted in epoch 1, the user must wait until epoch 2 before exchanging claim tokens for vault shares.
{% endhint %}

Claim tokens are automatically converted to vault shares on behalf of the user each time a user interacts with the vault (i.e. deposits, withdraws, or redeems). This prevents the accumulation of a large number of claim tokens (which by design are temporary).


# Buying Options

You can place orders to buy options before or during the [options auction](/overview/options-auction). Both market and limit orders are supported.

Knox Finance uses a Dutch auction system, so no matter what type of order you use, you will always pay the clearing price.

### Market vs Limit Orders

With a **market order**, you only specify the number of options you wish to buy *and* the maximum cost you are willing to pay. The amount paid by the buyer will be determined by the quantity of options being purchased and the price established by the [linear price curve](/overview/options-auction#primer-on-dutch-auctions).

* **market order** may only be placed during the auction (Friday 4pm - 4:30pm UTC).

With a **limit order**, you specify the number of options you wish to buy *and* the maximum price you are willing to pay per option. The amount paid by the buyer will be determined by the quantity of options being purchased, and price specified by the buyer.

* **limit order** may be placed once the auction has been initialized (Thursday 8am - Friday 4:30pm UTC)
* **limit orders** may be cancelled anytime before an auction has been finialized.

### Filled Orders

Orders are only filled if the order price is greater than or equal to the clearing price and there is sufficient liquidity to fill the order (utilization < 100%). Assuming sufficient liquidity, your order is filled at the clearing price reached at the end of the auction.

The difference between the amount paid and the cost and/or any unfilled amount is refunded to the buyer [when they withdraw from the contract](/option-buyers/withdrawing-options#refunds).

### Partially Filled Orders

An order may also be partially filled if there is not enough collateral to meet the amount specified. In this case the difference between remaining collateral and the amount will be used instead, any unspent funds will be refunded to the buyer [when they withdraw from the contract](/option-buyers/withdrawing-options#refunds).


# Withdrawing Options

You can withdraw options from Knox Finance as ERC-1155 options tokens **24 hours after the auction has been processed**. Withdrawals may be made at any time if the auction has been cancelled.

### Expired Options

If you let in-the-money options expire before withdrawing them, they are [automatically exercised](/option-buyers/exercising-options). Upon withdrawal, you will receive the proceeds of the options (their intrinsic value) instead of ERC-1155 options tokens.

### Refunds

When withdrawing options or proceeds from expired options, you also receive a refund for any unspent funds that were deposited when [placing the orders to buy those options](/option-buyers/buying-options).

Here is a table of the most common scenarios and their outcomes when withdrawing:

| Expired | Scenario                                                      | Outcome                                                                         |
| ------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| No      | Your order was filled at the **exact price** you deposited    | You only receive your fill                                                      |
| No      | Your order was filled at a **lower price** than you deposited | You receive your fill and a refund for unspent funds                            |
| No      | Your order was **not filled**                                 | You only receive a refund                                                       |
| Yes     | Your order was filled at the **exact price** you deposited    | You only receive the proceeds of the options, if any                            |
| Yes     | Your order was filled at a **lower price** than you deposited | You receive the proceeds of the options, if any, and a refund for unspent funds |
| Yes     | Your order was **not filled**                                 | You only receive a refund                                                       |

{% hint style="info" %}
A buyer places a limit order to buy 20 call options up to a maximum price of $100, depositing $2000 to do so. However, the Dutch auction reaches its clearing price at $70, so the buyer only pays 20 x $70 = $1400 for the options. Upon exercising the options (or their expiry), the buyer is refunded the unspent $600.
{% endhint %}


# Exercising Options

Options purchased on Knox Finance are issued by Premia, which means they are automatically exercised upon expiry. Since they are American options, they can also be exercised manually any time before expiry.

### Settlement

With Premia's design, options are settled in the underlying asset. When exercised or upon expiry, the intrinsic value of the option is paid directly to the option holder:

> If at the time of exercise, the price of the underlying asset is higher than the breakeven price, the call option is considered **In The Money**. In this case, the user is entitled to the payoff, which is equal to the strike price of the underlying minus the spot price. This difference is calculated automatically and settled **in the underlying asset** (the quote token) to the option buyer.

For more information about exercising options and their settlement, consult the [Premia documentation](https://docs.premia.finance/).


# System Architecture

Knox's vault system sells covered calls and "cash" secured puts on a weekly basis using collateral deposited by users. Liquidity providers deposit their collateral into the `Queue`, when the epoch ends, queued deposits are transferred into the `Vault`. Shortly after these deposits are transferred, the `Auction` contracts begins selling the option selected for the week. At the end of the auction the premiums are sent to the `Vault` and the options are underwritten.

A `Vault` is distinguished by its collateral asset (wETH, wBTC, DAI, etc) and [option delta](/overview/vault-system#option-delta). It is therefore possible to deploy multiple vaults carrying different option deltas for the same asset, across a wide range of assets.

![](https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2Fgit-blob-b8b4b241b1edc5b9c8f7bafbc9e52cc5664d322b%2Fsystem-architecture.png?alt=media)

Each subsystem is composed of several contracts which follow the “visibility layer” design pattern where an external and internal contract are used to separate logic. External contracts are intended to be called directly by a proxy, users, and other contracts. Internal contracts may be inherited by other internal contracts and external contracts. In most cases, the diamond storage pattern has also been implemented for the purposes of managing the storage layout of the corresponding contracts. The storage layout is a single library which contains state variables available to all external and internal contracts.

### Vault Contracts

The `Vault` is responsible for managing assets (collateral, premiums), underwriting options positions every week, and performing [epoch maintenance](/developers/epoch-mechanics). It consists of three "facet" contracts:

* `VaultAdmin`, extends access to privileged functions capable of setting state variables, and performing epoch maintenance.
* `VaultBase`, implments ERC4626 and overrides `deposit`, `mint`, `withdraw`, and `redeem` functions.
* `VaultView`, read-only functions that expose the vaults state.

Implmentation contracts ("facets") are deployed behind an upgradable/ownable EIP2535 Diamond Proxy. Upon initial deployment, it is required that the `setAuction`, `setPricer`, and `setQueue` functions are called with the correct contract addresses.

#### Access Control

The following functions are restricted to the following EOA or contract addresses:

| Actor  | Function                                                                                                                                           |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Keeper | initializeAuction, initializeEpoch, processAuction                                                                                                 |
| Owner  | setAuction, setAuctionWindowOffsets, setDelta64x64, setFeeRecipient, setKeeper, setPricer, setQueue, setPerformanceFee64x64, setWithdrawalFee64x64 |
| Queue  | deposit, mint                                                                                                                                      |

### Queue Contracts

The `Queue` acts as a liquidity buffer for the `Vault`, LP’s must deposit their collateral into the `Queue` prior to its deposit into the `Vault` at the end of the epoch. Implementation contracts are deployed behind an upgradable/ownable proxy contract.

#### Access Control

The following functions are restricted to the following EOA or contract addresses:

| Actor | Function                                     |
| ----- | -------------------------------------------- |
| Owner | pause, setMaxTVL, setExchangeHelper, unpause |
| Vault | processDeposits                              |

### Auction Contracts

The `Auction` contract sells options once per week using a Dutch Auction format. Implementation contracts are deployed behind an upgradable/ownable proxy contract.

#### Access Control

The following functions are restricted to the following EOA or contract addresses:

| Actor | Function                                                      |
| ----- | ------------------------------------------------------------- |
| Owner | setExchangeHelper                                             |
| Vault | initialize, processAuction, setAuctionPrices, transferPremium |

### Pricer Contracts

The `Pricer` is responsible for determining the strike price, and option max/min price. This contract is not upgradable, nor ownable.


# Epoch Mechanics

As discussed in the [epoch timeline](/overview/vault-system#epoch-timeline) section, the epoch is a series of operations which occur on a 7-day schedule. These operations are handled by an authorized keeper account, and enable actions such as purchasing options, withdrawals, fee collection, etc. The epoch can be broken down into three operations, auction initialization, epoch initialization, auction processing.

![](https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2Fgit-blob-9e841ced96ae22a25db1672a46e57c0b625cde71%2Fepoch-timeline-2.png?alt=media)

### Auction Initialization

On Thursday at approximately 8am UTC the keeper calls `initializeAuction`:

1. the option expiry timestamp, long and short token ids, and strike price are set, strike price is calculated using the [delta strike formula](/overview/vault-system#delta-strike-selection)
2. the auction start and end times are set
3. `Vault` calls `initialize` on `Auction`

### Epoch Initialization

On Friday at approximately 8am UTC the keeper calls `initializeEpoch`. It is assumed if the vault previously underwrote an option, it will already have been expired and processed prior:

1. if the epoch id is greater than 0, `Vault` will remove reserved liquidity from the Premia pool
2. if the epoch id is greater than 0 and `Vault` earns a positive net income a [performance fee](/overview/fee-structure#performance-fee) is calculated and transferred to the fee recipient account.
3. `Vault` calls `processDeposits` on `Queue`, transferring all of the collateral held in `Queue` to `Vault`. In exchange for the deposited collateral, `Vault` will mint and transfer vault shares to `Queue`.
4. the option max/min prices are calculated and set for the next auction
5. the epoch id is incremented

Once the epoch is initialization process completes there will be an 8 hour gap before the auction begins.

### Auction Processing

On Friday at approximately 4:30pm UTC or when the auction has been finialized the keeper will call `processAuction`:

1. `Vault` stores the total assets held in `Vault`, this value represents the amount of assets held before premiums are sent to `Vault`.
2. if the auction has not been finalized, `Vault` finializes it
3. `Auction` transfers the premiums earned during the auction to `Vault`
4. `Vault` underwrites the options sold during the auction via Premia's option pool, the long token is sent to `Auction` and the short tokens is sent to `Vault`
5. `Vault` sets the divestment timestamp to prevent the collateral from entering the "free liquidity queue" upon exercise or expiration
6. `Vault` processes the auction, after 24 hours the option buyers may withdraw their long tokens from `Auction`
7. `Vault` removes the withdrawal lock, users may withdraw or redeem from `Vault`


# Auction Lifecycle

Each auction involves has five stages: `Uninitialized`, `Initialized`, `Finalized`, `Processed`, and `Cancelled`. Depending on the stage, certain functions will be unrestricted.

![](https://842858072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Felv7CLFpaSXBYCSmCbxh%2Fuploads%2F1XvjhCBo6PRGh8Y9qrdD%2Fauction-lifecycle.png?alt=media\&token=fa25318d-37bd-487c-a71c-d3c07b5f1d31)

### Uninitialized

The auction is initialized by `Vault` on Thursday at \~8am UTC. If `Vault` fails to provide valid initialization parameters or does not set the auction prices before the auction starts, the auction is cancelled.

Users may add/cancel limit orders following a successful auction initialization.

### Initialized

The auctions will start on Friday at 4pm UTC. Users may add market orders and add/cancel limit orders. After each order is placed, `Auction` checks if all of the available collateral has been used and whether the auction has exceeded its total time, if either condition is true, the auction may be finalized.

Auction prices may be set within 30 minutes of the auction start time. If the prices are not set before the auction starts, the auction will automatically cancel.

### Finalized

Once the auction has been finalized users will no longer be able to add or cancel orders. `Vault` must [process the auction](/developers/epoch-mechanics#auction-processing) and transfer the premiums from `Auction`.

### Processed

After `Vault` processes the auction, users may withdraw their long tokens after a 24 hour wait period.

### Cancelled

At any part of the lifecycle, an auction can be cancelled. In this case, the auction will immediately transition to the cancelled stage and option buyers will be refunded the full amount paid.


# Contract Deployments

## Arbitrum

<table><thead><tr><th width="134">Pool</th><th width="83">Type</th><th width="166">Contract</th><th width="488">Address</th><th>Link</th></tr></thead><tbody><tr><td></td><td></td><td><code>Registry</code></td><td><code>0x8b43fCD71C6F8DdA95a28b359667fE1D06B7Ec7a</code></td><td><a href="https://arbiscan.io/token/0x8b43fCD71C6F8DdA95a28b359667fE1D06B7Ec7a">🔗</a></td></tr><tr><td></td><td></td><td><code>Pricer</code></td><td><code>0x69615779702aa1B1aFae51dBedF379D091f70C79</code></td><td><a href="https://arbiscan.io/address/0x69615779702aa1B1aFae51dBedF379D091f70C79">🔗</a></td></tr><tr><td></td><td></td><td><strong>Proxies</strong></td><td></td><td></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>QueueProxy</code></td><td><code>0xE9eB2a0454166CF875C0BFfF8e750a1F4D27D83C</code></td><td><a href="https://arbiscan.io/address/0xE9eB2a0454166CF875C0BFfF8e750a1F4D27D83C">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>AuctionProxy</code></td><td><code>0x2e803F265f8D96F87951C85B17DE92E9642700e8</code></td><td><a href="https://arbiscan.io/address/0x2e803F265f8D96F87951C85B17DE92E9642700e8">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>VaultDiamond</code></td><td><code>0x69681cB76360bd62471d51fC2f3D77106E8C859a</code></td><td><a href="https://arbiscan.io/address/0x69681cB76360bd62471d51fC2f3D77106E8C859a">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>QueueProxy</code></td><td><code>0x1a5823cc659B71C3948e1cbAC6d27831F29A6b4a</code></td><td><a href="https://arbiscan.io/address/0x1a5823cc659B71C3948e1cbAC6d27831F29A6b4a">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>AuctionProxy</code></td><td><code>0xB28b26C662E1Cc1373C43Ad3d06c08ABC17229ab</code></td><td><a href="https://arbiscan.io/address/0xB28b26C662E1Cc1373C43Ad3d06c08ABC17229ab">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>VaultDiamond</code></td><td><code>0x82900b0495303216d128d4770de425E0a3c14C1f</code></td><td><a href="https://arbiscan.io/address/0x82900b0495303216d128d4770de425E0a3c14C1f">🔗</a></td></tr><tr><td></td><td></td><td><strong>Implementations</strong></td><td></td><td></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>Queue</code></td><td><code>0x54E1B655Fc4112e87A4363e01a313F82609b53Db</code></td><td><a href="https://arbiscan.io/address/0x54E1B655Fc4112e87A4363e01a313F82609b53Db">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>Auction</code></td><td><code>0x05b7F6D9D1A1A75d54FFEd5C3892e252DB993440</code></td><td><a href="https://arbiscan.io/address/0x05b7F6D9D1A1A75d54FFEd5C3892e252DB993440">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>VaultAdmin</code></td><td><code>0xB18b3167F9aB9a8941cf7B817dac671C5B645649</code></td><td><a href="https://arbiscan.io/address/0xB18b3167F9aB9a8941cf7B817dac671C5B645649">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>VaultBase</code></td><td><code>0xBd7CbD9bcC8b54eA13cb688909335Ea48B99ae28</code></td><td><a href="https://arbiscan.io/address/0xBd7CbD9bcC8b54eA13cb688909335Ea48B99ae28">🔗</a></td></tr><tr><td>WETH/DAI</td><td>CALL</td><td><code>VaultView</code></td><td><code>0x4B74824545A98016C5C06d660a80Ac2B433697A8</code></td><td><a href="https://arbiscan.io/address/0x4B74824545A98016C5C06d660a80Ac2B433697A8">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>Queue</code></td><td><code>0xF00e0a28f27f7E65845C7ce23a99E8c40AdDb94c</code></td><td><a href="https://arbiscan.io/address/0xF00e0a28f27f7E65845C7ce23a99E8c40AdDb94c">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>Auction</code></td><td><code>0x935FB1838974D09d33cDcec0189D0e99f77cC92f</code></td><td><a href="https://arbiscan.io/address/0x935FB1838974D09d33cDcec0189D0e99f77cC92f">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>VaultAdmin</code></td><td><code>0xeC1f46387a2790B834416FA71583FA0Fe6E2e957</code></td><td><a href="https://arbiscan.io/address/0xeC1f46387a2790B834416FA71583FA0Fe6E2e957">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>VaultBase</code></td><td><code>0xC94758A8b70aed55c33Bc3988e7A2b4C2369B2F4</code></td><td><a href="https://arbiscan.io/address/0xC94758A8b70aed55c33Bc3988e7A2b4C2369B2F4">🔗</a></td></tr><tr><td>WETH/DAI</td><td>PUT</td><td><code>VaultView</code></td><td><code>0xd21A5e462EFe62b56C0658748beE28593591bB0b</code></td><td><a href="https://arbiscan.io/address/0xd21A5e462EFe62b56C0658748beE28593591bB0b">🔗</a></td></tr></tbody></table>

<table><thead><tr><th width="130">Wallet</th><th width="589.3333333333333">Address</th><th>Link</th></tr></thead><tbody><tr><td><code>Keeper</code></td><td><code>0x931b40983562627473a1d6b3504df9e2e65ab0f7</code></td><td><a href="https://arbiscan.io/address/0x931b40983562627473a1d6b3504df9e2e65ab0f7">🔗</a></td></tr></tbody></table>


# Delta Strike Formula

* $$S$$ - spot price
* $$\Delta$$ - option delta
* $$\sigma$$ - implied volatility
* $$\tau$$ - time to maturity
* $$\phi$$ - normal cumulative distribution function

Delta strike price $$K\_{delta}$$ is calculated as follows:

$$
{volatility\_factor} = \sigma \sqrt{\tau}
$$

$$
{total\_variance} = \sigma^2 \tau
$$

$$
z = \Big(\frac{{total\_variance}}{2} -\Phi^{-1}(\Delta)\cdot{volatility\_factor}\Big)
$$

$$
K\_{delta} = S e^z
$$


# Option Pricing Formula

* $$S$$ - spot price
* $$\Delta$$ - option delta
* $$\Delta\_{offset}$$ - delta % offset
* $$\epsilon$$ - delta offset
* $$K\_{\Delta}^{call/put}$$ - delta strike computed using $$\Delta$$
  * $$K\_{\Delta}^{call}$$ - delta strike computed for a call option
  * $$K\_{\Delta}^{put}$$ - delta strike computed for a put option.
* $$\tau$$ - time to maturity
* $$g : \Delta \rightarrow K\_{\Delta}^{put/call}$$ - delta strike function which maps the delta parameter $$\Delta$$ to the strike price
* $$f\_{oracle}: (S,K,\tau) \rightarrow \sigma$$ - oracle function which maps the parameters $$S,K,\tau$$ to implied volatility $$\sigma$$

The price curve can be calculated as follows:

$$
K\_{\Delta}^{put/call} = g(\Delta)
$$

$$
K\_{\Delta - \epsilon}^{put/call} = g(\Delta - \epsilon)
$$

$$
\sigma\_{\max} = f\_{oracle}(S,K\_{\Delta}^{put/call},\tau)
$$

$$
\sigma\_{\min} = \sigma\_{\max} \pm \sigma\_{\max}(\Delta\_{offset})
$$

$$
t\_{percent} = \frac{t\_i - t\_0}{t\_{total}}
$$

$$
\sigma\_{\text{market}} = \sigma\_{\max} - t\_{\text{percent}}\cdot(\sigma\_{\max} - \sigma\_{\min})
$$


