Skip to content

Formulas

  • PutManager.collateralFromFT
  • PutManager.ftFromCollateral
  • PutManager.getAssetFTPrice

All oracle-scaled values use 1e8 precision (Chainlink standard 8-decimal format).

VariableDescription
ftAmountAmount of FT (project token allocation) in the position
collateralAmount of collateral token (e.g., USDC, WETH)
strikeOracle price at deposit time, scaled to 1e8. See strike
ftPerUSDNumber of FT per USD at the raise price, scaled to 1e8. See ftPerUSD
tokenDecimalsDecimal precision of the collateral token (e.g., 6 for USDC, 18 for WETH)
collateral = ftAmount * (1e8^2 * 10^tokenDecimals) / (strike * ftPerUSD * 1e18)
ft = collateral * (strike * ftPerUSD * 1e18) / (1e8^2 * 10^tokenDecimals)

Assume a raise with token price $0.05, using USDC collateral (6 decimals):

Deposit 10,000 USDC:

ft = 10,000e6 × (1e8 × 20e8 × 1e18) / (1e16 × 1e6)
= 10,000e6 × 20e34 / 1e22
= 200,000e18 FT

Result: 200,000 FT (10,000 USD × 20 FT/USD).

Redeem 100,000 FT:

collateral = 100,000e18 × (1e16 × 1e6) / (1e8 × 20e8 × 1e18)
= 100,000e18 × 1e22 / 20e34
= 5,000e6 USDC

Result: 5,000 USDC (100,000 FT ÷ 20 FT/USD).

getAssetFTPrice(token, amount) returns:

  • ftOut
  • strike
  • ftPerUSD