spot price
hits the strike price
and his position is exercised, he ended up buying the underlying asset
(ETH
) for the price he was willing to purchase AND earned a premium
for that. spot price
does not hit the strike price
, Rob will have earned the premium
, and he can try selling another option again at a new strike price
if he wants. Additionally, our options accept aTokens as collateral, so it is possible to earn interest in addition to the premium.PodPut
. He will:strike asset
as collateral
to mint
options and hold his position with shares
of the contract.sell
them on our AMM
for a premium
(For details on how the calculation for the premium works, check out the how our price works section).spot price
became lower than the strike price
, and some options were partially exercised.expiration
, Rob will be able to withdraw
his collateral
based on the number of shares
he has.strike asset
and partly in the underlying asset
.1200 aUSDC
and is willing to buy a max of 3 units of ETH
at the strike price
. The following steps will occur:mint
function with two parameters: amountOfOptions
and owner
.amountOfOptions
will be equal to 3 and owner
will be Rob's address.approve()
on the strike asset aUSDC
contract allowing the PodPut
contract to spend his 1200 aUSDC
. amountToTransfer
that will be equal to amountOfOptions * strikePrice
that will equal 1200 aUSDC
in our case.shares
Rob has from the PodPut
contract using the following equation: ownerShares = amountToTransfer * totalShares / (strikeReserves + underlyingReserves * strikePrice)
totalShares
and astrikeReserves
of 4050 aUSDC.
1200 * 4000 / 4050 shares
. Resulting in 1185.185 shares.
transferFrom
function from the strike asset
contract usingamountToTransfer
as a parameter.strikeReserves
and underlyingReserves
represent the PodPut contract balance of strike and underlying.exerciseWindow
ends. The spot price is currently at $300exercise
function, passing the amountOfOptions
she wants to exercise.approve()
on the underlying asset WETH
contract, allowing the PodPut
contract to spend her underlying asset
and give her back an amount of the strike asset
.underlying tokens
the PodPut will use to call thetransferFrom
function will be 1:1. So, in our case, if she wants to exercise two options, two units of underlying asset
will be transferred to PodPut, increasing theunderlyingReserves.
amountOfOptions * strikePrice
units of thestrike asset.
In this case, 2*400 = 800 aUSDC
units.(strike price - spot price) * amountOfOptions - premium
0.007407 shares
? Let's see how many strike and underlying he will receive back. We will assume that PodPut had no new sellers, and aUSDC strike balance increased a little, earned some interest during that time. So right now, our balances are:strikeReserves
= 4500 aUSDC
(4050 we had initially, plus 1200 from Rob, less the amount the PodPut used to pay Babi back during her exercise, plus some interest earned during this time) underlyingReserves
= 2 WETH
totalShares
= 5185,185strikeToReceive
and underlyingToReceive
the contract will receive, we do the following calculations:strikeToReceive = ownerShares * strikeReserves / totalShares
underlyingToReceive = ownerShares * underlyingReserves / totalShares
1185,185 * 4500 / 5185,185 = 1028,571 strike asset.
In addition to that, he will receive also 1185,185 * 2 / 5185,185 = 0,45714 underlying asset
ETH
for the strike price
he has previously set. This could happen for many reasons:premium
, he will have to buy the number of the options he wants to unmint
from the same series to leave the position.400 aUSDC
. The following steps will occur:unmint
function with two parameters: the amount of options to unmint
and owner.unmint
will be equal to 1
and owner will be Rob's address.unmint()
on the option contractownerShares
of Rob to have the number of the protocol's shares the user will unmint.ownerShares_w =(amountOfOptionsToWithdraw ∗ ownerShares_i-1)/ userMintedOptions
amountOfOptionstoWithdraw
will be equal to 1 and ownerShares_i-1
is equal to 1185.185
and the userMintedOptions
will be equal to 3. Therefore, ownerShares_w
will be equal to 395.06
.strikeReserves
= 5300 aUSDC
(4050 we had initially, plus 1200 from Rob, plus some interest earned during this time)totalShares
= 5185.185 shares
strikeToSend
the contract will send, we do the following calculations:strikeToSend=(ownerShares_w∗OSBn)/totalShares_i−1
395.06 * 5300 / 5185.185 = 403.807
strike asset which in this case is aUSDC
.totalShares_i = totalShares_i−1 − ownerShares_w
ownerShares_i = ownerShares_i−1 − ownerShares_w
sRi = sRi-1 - strikeToSend
put
options from Rob.bearish
on ETH
and wants to reduce her exposition to the asset by buying a put option with a strike price that is lower than the current spot price
of $500 but that still limits her potential loss according to her feeling about the asset. In case the price of ETH
falls below $500, she will be able to exercise her option and sell her asset for a higher price than the spot price
, being able to profit on that. Let's take the following example:Spot price
of ETH
at expiration: 300 USDC
Strike price
: 500 USDC
USDC
each.USDC
for 2 put options from Pods' AMM, Babi made a profit of: 2 * (500 - 300) - 2 * 20 = 360 USDC
.spot price
surpasses the strike price
and his position is exercised, he ended up selling the underlying asset
(ETH
) for a lower price than what the asset is worth in the market.premium
works, check out the how our price works section).strike price
, and some options were partially exercised.exerciseWindow
, Gabriel will be able to withdraw his collateral based on the amount of shares he has.underlying asset
.aUSDC
is fair. The following steps will occur:amountOfOptions
and owner.amountOfOptions
will be equal to 4 and owner will be Gabriel's address.underlying
asset ETH contract allowing the PodCall contract to spend his 4 ETH.amountToTransfer
that will be equal to optionsAmount
of the underlyingAsset
that will equal to 4 ETH
in our case.ownerShares = (amountToTransfer * totalShares_i-1) / (underlyingReserves_i + (strikeReserves_i / strikePrice))
totalShares
and an underlyingReserve
of 580shares
.transferFrom
function from the underlying asset
contract using amountToTransfer
as a parameter.strikeReserves
and underlyingReserve
represent the PodCall contract balance of strike
and underlying
.exerciseWindow
ends. The spot price
is currently at $900.amountOfOptions
he wants to exercise.approve()
on the strike asset USDC
contract, allowing the PodCall
contract to spend his strike asset and give him back and amount of the underlying asset
(ETH
).PodCall
will use to call the transferFrom
function will be 1:1. So, in our case, if he wants to exercise three options, three units of the strike asset
will be transferred to PodCall
, increasing the strikeReserves
.amountOfOptions
units of the underlying asset
. In this case, 3 ETH
units.spot price
was let's say $1000 and he paid $20 in her options. Her returns will be (spot price-strike price) * amountOfOptions - premium
strikeReserves
= 2100 aUSDC
(3 call options with the strike price
of $700 were exercised)underlyingReserve
= 581 WETH
(500 ETH
we had initially plus 4 from Gabriel minus the 3 PodCall used to pay Gui during his exercise).totalShares
= 503.448 shares
strikeToSend
and underlyingToSend
the contract will receive, we do the following calculations:strikeToSend = ownerShares * strikeReserves / totalShares
underlyingToSend = ownerShares * underlyingReserve / totalShares
strikeToSend
= 3.448 * 2100 / 503.448 = 14.382 USDC
underlyingToSend
= 3.448 * 581 / 503.448 = 3.979 ETH
call option
to sell ETH
for the strike price he has previously set. This could happen for many reasons:collateral
for other purposes instead of having it locked in.ETH
will surpass the strike price
making it more profitable to sell the asset for the spot price
.PodCall
. He will:unmint
, the options will need to be burned
so, consequently, Gabriel will need to have the options in the wallet he used to mint
the options to do so.premium
, he will have to buy the number of the options he wants to unmint
from the same series to leave the position.call options
he had previously minted in the Example 3, getting back the collateral
of 2 ETH
. The following steps will occur:unmint
function with two parameters: amount of options
to unmint
and owner
.unmint
will be equal to 2 and owner will be Gabriel's address.ownerSharesw
of Gabriel to have the number of the protocol's shares the user will unmint
.ownerSharesw =(amountOfOptionsToWithdraw∗ownerShares_i−1)/ userMintedOptions
amountOfOptionstoWithdraw
will be equal to 2 and ownerShares_i-1
is equal to 3.448 and the userMintedOptions
will be equal to 4. Therefore, ownerShares_w
will be equal to 1.724.PodCall
had no new sellers and ETH
underlying balance. Furthermore, no options were exercised yet as we did not reach the expiration date
. So right now our balances are:underlyingReserve
= 584 ETH
(580 we initially had plus 4 from Gabriel).totalShares
= 503.448underlyingToSend
the contract will send, we do the following calculations:underlyingToSend
= 2 ETH
totalShares_i = totalShares_i−1 − ownerShares_w
shares
ownerShares_i = ownerSharesi−1 − ownerSharesw
shares
OUBi = OUBi-1 - underlyingToSend
ETH
call options
from Gabriel.bullish
on ETH
and wants to buy a call option with a strike price
that will be lower than the spot price
by the time of the option's expiry. If this happens, he will be buying ETH
for cheaper than what the market is charging and would be able to profit on that. Let's take the following example:Spot price
of ETH
at expiration: 900 USDC
Strike price
: 700 USDC
USDC
each.USDC
and then sell the ETH
in the market for 900 USDC
. Taking into consideration that he paid 20 USDC
for 3 call options
from Pods' AMM, Gui made a profit of: 3 * (900 - 700) - 3 * 20 = 540 USDC
.OTM
, which means that the spot price
of ETH
was below the strike price, there would be no reason for Gui to exercise his call option
as he would be buying the asset for a higher price than what the market is currently offering. In this case, he would have lost only the amount of the premium
paid for the options bought in Pods' AMM.