Factor Docs
  • 🏭Introduction to Factor
  • Getting Started
    • đŸ•šī¸Quickstart
    • 🔗Supported Protocols
    • 🔐Strategy Cheatsheet
      • Swaps Cheatsheet
        • Conditional Market Order
        • Automated Market Order
        • Multi Swap
        • Automated Swap & Earn
        • Automated Scale Order
        • Scale Order Partial Fill Yield
        • Interest On Pending Trades
        • Leverage Trade
        • Leverage DCA
      • Lending Cheatsheet
        • Lending Pool Zap
        • Multi Lend
        • Market Making To Lending Switch
        • Earn Negative Interest
        • Carry Trade
        • Leveraged Staking Yields
        • Leveraged Fixed Yields
      • Borrowing Cheatsheet
        • Collateralized Borrow
        • Collateralized Borrow Zap
        • Multi Borrow
        • Debt Switching
        • Automated Debt Readjustments
        • Debt Refinancing
        • Asset Switching
      • Liquidity Provision Cheatsheet
        • Liquidity Pool Zap
        • Yield Farm Zap
        • Automated LP Adjustments
        • Yield Farm Adjustments
      • Flash Loan Cheatsheet
    • 🧠Strategy Explainers
      • Leverage
        • Leverage Performance Modelling
        • Leverage Long Simulation
        • Leverage Short Simulation
      • Yield
        • Yield Performance Modelling
      • PT Strategies
        • Leverage Long PT Simulation
      • Delta Neutral Yields
        • Levered USD & ETH Carry
    • 📖Glossary
  • Factor Discover
    • 🔍Factor Discover
      • Public Strategies User Guides
        • Deposit Into User Created Strategies
        • Withdraw From User Created Strategies
      • Leverage User Guides
        • Create A Leveraged Position
        • Adjust Position Leverage
        • Add Collateral To Position
        • Withdraw Collateral From Position
        • Repay Position Debt
      • Yield User Guides
        • Auto-compound Your Yields
      • PT User Guides
        • Redeem Your PT
      • APY Calculations
    • âš™ī¸Factor Operated Strategies
      • Yield Type Strategies
        • Arbitrum (ChainID: 42161)
          • 4.4x rETH Carry + 1x USDC Lending Yields - Aave & Compound
          • 7x Leveraged rETH:ETH Yields - Compound
          • Additional rETH Yields On USDC Lend
          • Amplified wstETH Yields On USDC Lend - Aave
          • Additional Liquid Staked ETH Yields On USDC Lend
          • Additional Liquid Restaked ETH Yields On USDC Lend
          • Diversified USDC Lending Yields - Aave & Compound
        • Base (ChainID: 8453)
          • 3.5x Leveraged cbETH:ETH Yields - Aave
          • Amplified cbETH Yields On USDC Lend - Aave
          • Additional cbETH Yields On USDC Lend
          • Amplified cbETH Yields On cbBTC Lend - Aave
          • Additional Liquid Staked ETH Yields On USDC Lend
      • Trading Type Strategies
        • WBTC Base Switch On rETH For ETH & USDC Yields
      • Delta Neutral Type Strategies
        • Arbitrum (ChainID: 42161)
          • Delta Neutral ETH With rETH & USDC Yields
        • Base (ChainID: 8453)
          • Delta Neutral ETH With cbETH & USDC Yields
  • Factor Studio
    • 🎨Factor Studio
      • Automated Strategies
      • Conditional Strategies
    • đŸ‘ĨPublic Strategies
      • User Guide
        • Public Strategy Creation
        • Create An Exit Strategy
        • Making Your Strategy Public
        • Strategy Execution
      • Security
      • Exit Strategy
    • đŸ—ī¸Strategy Builder
      • Building Blocks User Guide
        • Lend
        • Borrow
        • Swap
        • Flash Loan
    • 📜Studio Contracts
      • Leverage
        • FactorLeverageDescriptor.sol
        • FactorLeverageVault.sol
        • WrapperFactorLeverageVault.sol
      • LP Management
        • FactorLPVault.sol
        • FactorLPDescriptor.sol
    • 🏠Private Strategies
      • User Guide
        • Private Strategy Creation
  • Factor SDK
    • đŸ“ĻFactor SDK
    • â†”ī¸REST APIs
      • Utility APIs
        • Pricing
        • Stats
  • Factor Building Blocks
    • 🧱Factor Building Blocks
    • âžĄī¸Lend
    • âŦ…ī¸Borrow
    • 🔄Leverage
      • Concepts
        • Collateralized Lending & Borrowing
        • Looping
      • Leverage Dev Guides
        • Create Leveraged Position
        • Add Leverage To Position
      • Strategy Contracts
        • AAVEV3LeverageStrategy.sol
        • CompoundLeverageStrategy.sol
        • LodeStarLeverageStrategy.sol
        • RadiantLeverageStrategy.sol
        • SiloLeverageStrategy.sol
        • SiloYieldTokenStrategy.sol
        • TenderLeverageStrategy.sol
      • FAQ - Leverage Building Block
    • 💰Yield
      • Concepts
        • Yield Farming
        • Yield Aggregators
      • ⚡Zap
    • 🌊LP Management
      • Concepts
        • Automated Market Maker
        • Concentrated Liquidity
    • đŸĨŠStake
    • 🔀Swap
      • Concepts
        • Market Orders
        • DEX Aggregators
    • đŸĒ„Flash Loan
      • Concepts
        • Uncollateralized Lending & Borrowing
        • Flash Loan
  • Factor Adapters
    • 🔌Factor Adapters
    • 📜Adapter Contracts
      • Leverage
      • Yield
      • Swap
      • Flash Loan
  • Governance
    • đŸ›ī¸FactorDAO
      • Factor Flywheel
      • Factor Participants
      • Governance Incentive Calculations
        • FactorDAO Incentives Model (LTIPP)
      • User Guides
        • Stake FCTR
        • Governance Migration
      • Contracts
        • FactorDAO Contract Addresses
      • FactorDAO Multisig Addresses
      • Platform Fees
    • đŸĒ™FCTR Token
      • Staking and Governance
      • Tokenomics
      • Contract Addresses
      • FAQ - Tokenomics
    • âš–ī¸Factor Scale
      • Arbitrum Foundation LTIPP
      • Emission Multiplier Calculations
        • Emissions Multiplier Model
      • User Guides
        • Stake FCTR
        • Vote On Emissions Distribution
      • Contracts
        • Factor Scale Contract Addresses
      • ❔FAQ - Factor Scale
    • 🚀Factor Boost
      • Contracts
        • Factor Boost Contract Addresses
    • đŸ’ŧFactor Bribes
      • Contracts
        • Factor Bribes Contracts
  • Security
    • đŸ›Ąī¸Security
    • 📋Audits
      • PeckShield
        • Leverage Vault Wrapper
        • Silo Yield
        • Silo Leverage
        • Penpie
        • Factor Boost
      • SourceHat
        • FactorDAO Vaults
        • FCTR & Voting Escrow
  • Reference
    • Discover Pro dApp
    • Studio dApp
    • Discover dApp
    • Official Website
    • Press Kit
    • Partnership Form
    • Media Kit
    • Geo Restrictions
  • Community
    • Factor Contributors
    • X
    • Discord
    • Telegram
    • Medium
    • Email Enquiries
Powered by GitBook
On this page
  • Overview
  • TLDR
  • Weighted Liquidity Formulas
  • Weighted Liquidity
  • Example

Was this helpful?

  1. Governance
  2. Factor Scale

Emission Multiplier Calculations

PreviousArbitrum Foundation LTIPPNextEmissions Multiplier Model

Last updated 10 months ago

Was this helpful?

Overview

The emissions multiplier ensures that users that contribute the most network security (i.e. economic security through staked ) also receive the most rewards for staking their liquidity into various strategies. By assigning a weight to the user's staked liquidity, the emission multiplier rewards users holding more with a greater share of the strategy's allocated rewards.

TLDR

  • The higher the proportion of veFCTR supply held, the larger the share of strategy emission rewards.

  • The maximum emissions multiplier is achieved when the proportion of veFCTR supply held by the user approaches the proportion of strategy staked liquidity (i.e. veFCTR%veFCTR\%veFCTR% approaches StakedLiq%StakedLiq\%StakedLiq%).

  • When veFCTR%veFCTR\%veFCTR% is greater than StakedLiq%StakedLiq\%StakedLiq%, the rate of multiplier decay is slower than if veFCTR%veFCTR\%veFCTR% is lower than StakedLiq%StakedLiq\%StakedLiq%.

Emission Multiplier Flow
  1. User stakes to receive an amount of depending on staked duration (up to 1FCTR:1veFCTR for max stake duration).

  2. User provides liquidity to the target strategy which is eligible for emissions.

  3. User stakes the liquidity position in order to be eligible for rewards.

  4. With the obtained in 1, user votes for their target strategy on .

  5. When the voting period for the epoch ends, the total emissions allocated for the epoch is distributed in proportion to the number of votes that the strategy receives. (i.e. if strategy receives 10% of total votes for that epoch, it receives 10% of emissions).

  6. For each strategy, the allocated emissions amount is then distributed over the course of the epoch according to the gauge weighted liquidity provided by LPs who have staked their liquidity in the strategy.

Emissions Multiplier Model

You can view the expected multiplier based on your veFCTR and strategy deposit proportions in the .

Weighted Liquidity Formulas

At it's core, the emissions multiplier ensures fairer distribution of emission rewards by constantly comparing:

  • Proportion of staked liquidity the user contributes to a specific strategy:

stakedLiq%=stakedLiquserstakedLiqpoolstakedLiq\% = \frac{stakedLiq_{user}}{stakedLiq_{pool}}stakedLiq%=stakedLiqpool​stakedLiquser​​

Staked Liquidity Amount & Leverage

veFCTR%=veFCTRuserveFCTRsupplyveFCTR\% = \frac{veFCTR_{user}}{veFCTR_{supply}}veFCTR%=veFCTRsupply​veFCTRuser​​

Weighted Liquidity

min((0.4×stakedLiquser)+(0.6×stakedLiqpool×veFCTRuserveFCTRsupply),stakedLiquser)min \biggl( (0.4 \times stakedLiq_{user}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{user}}{veFCTR_{supply}}) , stakedLiq_{user} \biggl)min((0.4×stakedLiquser​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRuser​​),stakedLiquser​)

Based on the above formula, there are a few critical points to take note of:

  • The maximum emissions multiplier of 2.5x occurs when the StakedLiq%StakedLiq\%StakedLiq%approaches the veFCTR%veFCTR\%veFCTR%

  • When veFCTR%veFCTR\%veFCTR% is greater than StakedLiq%StakedLiq\%StakedLiq%, the rate of multiplier decay is significantly slower than if veFCTR%veFCTR\%veFCTR% is lower than StakedLiq%StakedLiq\%StakedLiq%

Put simply, the weighted liquidity formulas prioritizes distributing emissions towards users with larger veFCTR%veFCTR\%veFCTR% (i.e. users who have staked more FCTR for longer periods). For the same absolute % difference, your emissions multiplier will be much higher if your veFCTR%veFCTR\%veFCTR% is greater than StakedLiq%StakedLiq\%StakedLiq%. To achieve the max multiplier, your veFCTR%veFCTR\%veFCTR% should be closer to StakedLiq%StakedLiq\%StakedLiq%.

Example

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 100 staked liquidity and holds 50veFCTR

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy=200stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} = 200stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​=200

  • Total veFCTR supply (including Bloxy): 500veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×200×0500),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times 200 \times \frac{0}{500}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×200×5000​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×100)+(0.6×200×50500),100)weightedSupply_{Bloxy} = min \biggl( (0.4 \times 100) + (0.6 \times 200 \times \frac{50}{500}) , 100 \biggl)weightedSupplyBloxy​=min((0.4×100)+(0.6×200×50050​),100)
weightedSupplyBloxy=min(40+12,100)=min(52,100)=52weightedSupply_{Bloxy} = min \biggl( 40 + 12 , 100 \biggl) = min \biggl( 52 , 100 \biggl) = 52weightedSupplyBloxy​=min(40+12,100)=min(52,100)=52

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+52=1,000×0.435=435esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+52} = 1,000 \times 0.435 = 435 esFCTResFCTRAlice​=1,000×40+5240​=1,000×0.435=435esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRBloxy=1,000×5240+52=1,000×0.565=565esFCTResFCTR_{Bloxy} = 1,000 \times \frac{52}{40+52} = 1,000 \times 0.565 = 565 esFCTResFCTRBloxy​=1,000×40+5252​=1,000×0.565=565esFCTR

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 10 staked liquidity and holds 50veFCTR (50% -> 10% of stakedLiquidity)

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy=110stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} = \textbf{110}stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​=110

  • Total veFCTR supply (including Bloxy): 500veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×110×0500),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{110} \times \frac{0}{500}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×110×5000​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×10)+(0.6×110×50500),10)weightedSupply_{Bloxy} = min \biggl( (0.4 \times \textbf{10}) + (0.6 \times \textbf{110} \times \frac{50}{500}) , 10 \biggl)weightedSupplyBloxy​=min((0.4×10)+(0.6×110×50050​),10)
weightedSupplyBloxy=min(4+6.6,10)=min(10.6,10)=10weightedSupply_{Bloxy} = min \biggl( 4 + \textbf{6.6} , \textbf{10} \biggl) = min \biggl(\textbf{10.6} , \textbf{10} \biggl) = \textbf{10}weightedSupplyBloxy​=min(4+6.6,10)=min(10.6,10)=10

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+10=1,000×0.8=800esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+\textbf{10}} = 1,000 \times \textbf{0.8} = \textbf{800} esFCTResFCTRAlice​=1,000×40+1040​=1,000×0.8=800esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRAlice=1,000×1040+10=1,000×0.2=200esFCTResFCTR_{Alice} = 1,000 \times \frac{\textbf{10}}{40+\textbf{10}} = 1,000 \times \textbf{0.2} = \textbf{200} esFCTResFCTRAlice​=1,000×40+1010​=1,000×0.2=200esFCTR

Observations

  • Change: Bloxy reduces staked liquidity proportion to match veFCTR supply proportion.

  • Result: Based on the new staked liquidity, Bloxy receives ~2.2x the esFCTR. Note that the capital efficiency as Bloxy's staked liquidity is reduced. Bloxy could have also chosen to acquire more veFCTR to get a higher multiplier. The maximum multiplier is also dependent on the strategy's liquidity as well as ttotal veFCTR supply.

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 100 staked liquidity and holds 150veFCTR (100 more than baseline -> 25% vs 10% of veFCTR supply)

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy=200stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} = 200stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​=200

  • Total veFCTR supply (including Bloxy): 600veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×200×0600),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times 200 \times \frac{0}{\textbf{600}}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×200×6000​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×100)+(0.6×200×150600),100)weightedSupply_{Bloxy} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{200} \times \frac{\textbf{150}}{\textbf{600}}) , 100 \biggl)weightedSupplyBloxy​=min((0.4×100)+(0.6×200×600150​),100)
weightedSupplyBloxy=min(40+30,100)=min(70,100)=70weightedSupply_{Bloxy} = min \biggl( 40 + \textbf{30} , 100 \biggl) = min \biggl( \textbf{70} , 100 \biggl) = \textbf{70}weightedSupplyBloxy​=min(40+30,100)=min(70,100)=70

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+70=1,000×0.364=364esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+\textbf{70}} = 1,000 \times \textbf{0.364} = \textbf{364} esFCTResFCTRAlice​=1,000×40+7040​=1,000×0.364=364esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRBloxy=1,000×7040+70=1,000×0.636=636esFCTResFCTR_{Bloxy} = 1,000 \times \frac{\textbf{70}}{40+\textbf{70}} = 1,000 \times \textbf{0.636}= \textbf{636} esFCTResFCTRBloxy​=1,000×40+7070​=1,000×0.636=636esFCTR

Observations

  • Change: Bloxy holds an additional 15% of veFCTR supply.

  • Result: Bloxy gets an additional 136esFCTR which is a 1.27x multiplier.

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 200 staked liquidity and holds 50veFCTR

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy=300stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} = \textbf{300}stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​=300

  • Total veFCTR supply (including Bloxy): 500veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×300×0500),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{300} \times \frac{0}{500}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×300×5000​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×200)+(0.6×300×50500),200)weightedSupply_{Bloxy} = min \biggl( (0.4 \times \textbf{200}) + (0.6 \times \textbf{300} \times \frac{50}{500}) , \textbf{200} \biggl)weightedSupplyBloxy​=min((0.4×200)+(0.6×300×50050​),200)
weightedSupplyBloxy=min(80+18,200)=min(98,200)=98weightedSupply_{Bloxy} = min \biggl( \textbf{80} + \textbf{18} , \textbf{200} \biggl) = min \biggl( \textbf{98} , \textbf{200} \biggl) = \textbf{98}weightedSupplyBloxy​=min(80+18,200)=min(98,200)=98

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+98=1,000×0.290=290esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+\textbf{98}} = 1,000 \times \textbf{0.290} = \textbf{290} esFCTResFCTRAlice​=1,000×40+9840​=1,000×0.290=290esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRBloxy=1,000×9840+98=1,000×0.710=710esFCTResFCTR_{Bloxy} = 1,000 \times \frac{\textbf{98}}{40+\textbf{98}} = 1,000 \times \textbf{0.710} = \textbf{710} esFCTResFCTRBloxy​=1,000×40+9898​=1,000×0.710=710esFCTR

Observations

  • Change: Bloxy stakes an additional 100 liquidity and now owns 66% of strategy staked liquidity.

  • Result: Bloxy gets an additional 210esFCTR which is a 1.42x multiplier.

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 100 staked liquidity and holds 50veFCTR

  • Charles stakes FCTR to increase the veFCTR supply by 250veFCTR but does not provide liquidity nor vote on Scale (i.e. pure increase in veFCTR supply)

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy=200stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} = 200stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​=200

  • Total veFCTR supply: 750veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×200×0750),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times 200 \times \frac{0}{\textbf{750}}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×200×7500​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×100)+(0.6×200×50750),100)weightedSupply_{Bloxy} = min \biggl( (0.4 \times 100) + (0.6 \times 200 \times \frac{50}{\textbf{750}}) , 100 \biggl)weightedSupplyBloxy​=min((0.4×100)+(0.6×200×75050​),100)
weightedSupplyBloxy=min(40+8,100)=min(48,100)=48weightedSupply_{Bloxy} = min \biggl( 40 + \textbf{8} , 100 \biggl) = min \biggl( \textbf{48} , 100 \biggl) = \textbf{48}weightedSupplyBloxy​=min(40+8,100)=min(48,100)=48

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+48=1,000×0.455=455esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+\textbf{48}} = 1,000 \times \textbf{0.455} = \textbf{455} esFCTResFCTRAlice​=1,000×40+4840​=1,000×0.455=455esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRBloxy=1,000×4840+48=1,000×0.545=545esFCTResFCTR_{Bloxy} = 1,000 \times \frac{\textbf{48}}{40+\textbf{48}} = 1,000 \times \textbf{0.545} = \textbf{545} esFCTResFCTRBloxy​=1,000×40+4848​=1,000×0.545=545esFCTR

Observations

  • Change: veFCTR supply increases by 50% resulting in Bloxy only holding 6.67% of veFCTR supply (down from 10%).

  • Result: Bloxy gets an additional 45esFCTR which is a 1.09x multiplier.

Users

  • Alice provides 100 staked liquidity but does not hold any veFCTR

  • Bloxy provides 100 staked liquidity and holds 50veFCTR

  • Charles provides 100 staked liquidity but does not hold any veFCTR

Conditions

  • Assume no other users in the strategy hence stakedLiqpool=stakedLiqAlice+stakedLiqBloxy+stakedLiqCharles=300stakedLiq_{pool} = stakedLiq_{Alice} + stakedLiq_{Bloxy} + stakedLiq_{Charles}= \textbf{300}stakedLiqpool​=stakedLiqAlice​+stakedLiqBloxy​+stakedLiqCharles​=300

  • Total veFCTR supply (including Bloxy): 500veFCTR

  • Emission rewards allocated to strategy: 1,000 esFCTR

Alice's Weighted Supply

weightedSupplyAlice=min((0.4×stakedLiqAlice)+(0.6×stakedLiqpool×veFCTRAliceveFCTRsupply),stakedLiqAlice)weightedSupply_{Alice} = min \biggl( (0.4 \times stakedLiq_{Alice}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Alice}}{veFCTR_{supply}}) , stakedLiq_{Alice} \biggl)weightedSupplyAlice​=min((0.4×stakedLiqAlice​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRAlice​​),stakedLiqAlice​)
weightedSupplyAlice=min((0.4×100)+(0.6×300×0500),100)weightedSupply_{Alice} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{300} \times \frac{0}{500}) , 100 \biggl)weightedSupplyAlice​=min((0.4×100)+(0.6×300×5000​),100)
weightedSupplyAlice=min(40,100)=40weightedSupply_{Alice} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyAlice​=min(40,100)=40

Bloxy's Weighted Supply

weightedSupplyBloxy=min((0.4×stakedLiqBloxy)+(0.6×stakedLiqpool×veFCTRBloxyveFCTRsupply),stakedLiqBloxy)weightedSupply_{Bloxy} = min \biggl( (0.4 \times stakedLiq_{Bloxy}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Bloxy}}{veFCTR_{supply}}) , stakedLiq_{Bloxy} \biggl)weightedSupplyBloxy​=min((0.4×stakedLiqBloxy​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRBloxy​​),stakedLiqBloxy​)
weightedSupplyBloxy=min((0.4×100)+(0.6×300×50500),100)weightedSupply_{Bloxy} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{300} \times \frac{50}{500}) , 100 \biggl)weightedSupplyBloxy​=min((0.4×100)+(0.6×300×50050​),100)
weightedSupplyBloxy=min(40+18,100)=min(58,100)=58weightedSupply_{Bloxy} = min \biggl( 40 + \textbf{18} , 100 \biggl) = min \biggl( \textbf{58} , 100 \biggl) = \textbf{58}weightedSupplyBloxy​=min(40+18,100)=min(58,100)=58

Charle's Weighted Supply

weightedSupplyCharles=min((0.4×stakedLiqCharles)+(0.6×stakedLiqpool×veFCTRCharlesveFCTRsupply),stakedLiqCharles)weightedSupply_{Charles} = min \biggl( (0.4 \times stakedLiq_{Charles}) + (0.6 \times stakedLiq_{pool} \times \frac{veFCTR_{Charles}}{veFCTR_{supply}}) , stakedLiq_{Charles} \biggl)weightedSupplyCharles​=min((0.4×stakedLiqCharles​)+(0.6×stakedLiqpool​×veFCTRsupply​veFCTRCharles​​),stakedLiqCharles​)
weightedSupplyCharles=min((0.4×100)+(0.6×300×0500),100)weightedSupply_{Charles} = min \biggl( (0.4 \times 100) + (0.6 \times \textbf{300} \times \frac{0}{500}) , 100 \biggl)weightedSupplyCharles​=min((0.4×100)+(0.6×300×5000​),100)
weightedSupplyCharles=min(40,100)=40weightedSupply_{Charles} = min \biggl( 40 , 100 \biggl) = 40weightedSupplyCharles​=min(40,100)=40

Emissions Distribution

esFCTRAlice=esFCTRpool×weightedSupplyAliceweightedSupplyPoolesFCTR_{Alice} = esFCTR_{pool} \times \frac{weightedSupply_{Alice}}{weightedSupply_{Pool}}esFCTRAlice​=esFCTRpool​×weightedSupplyPool​weightedSupplyAlice​​
esFCTRAlice=1,000×4040+58+40=1,000×0.290=290esFCTResFCTR_{Alice} = 1,000 \times \frac{40}{40+\textbf{58}+\textbf{40}} = 1,000 \times \textbf{0.290} = \textbf{290} esFCTResFCTRAlice​=1,000×40+58+4040​=1,000×0.290=290esFCTR
esFCTRBloxy=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Bloxy} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRBloxy​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRBloxy=1,000×5840+58+40=1,000×0.420=420esFCTResFCTR_{Bloxy} = 1,000 \times \frac{\textbf{58}}{40+\textbf{58}+\textbf{40}} = 1,000 \times \textbf{0.420} = \textbf{420} esFCTResFCTRBloxy​=1,000×40+58+4058​=1,000×0.420=420esFCTR
esFCTRCharles=esFCTRpool×weightedSupplyBloxyweightedSupplyPoolesFCTR_{Charles} = esFCTR_{pool} \times \frac{weightedSupply_{Bloxy}}{weightedSupply_{Pool}}esFCTRCharles​=esFCTRpool​×weightedSupplyPool​weightedSupplyBloxy​​
esFCTRCharles=1,000×4040+58+40=1,000×0.290=290esFCTResFCTR_{Charles} = 1,000 \times \frac{40}{40+\textbf{58}+\textbf{40}} = 1,000 \times \textbf{0.290} = \textbf{290} esFCTResFCTRCharles​=1,000×40+58+4040​=1,000×0.290=290esFCTR

Observations

  • Change: The strategy's staked liquidity increase by 50% resulting in Bloxy owning 66% of the staked liquidity (compared to 50%).

  • Result: Bloxy rewards drops by 80esFCTR due to liquidity dilution.

As Factor enables users to increase their capital exposure via strategies, the stakedLiquiditystakedLiquiditystakedLiquidity amount also takes into account the leveraged portion by utilizing the debt portion of the user's position. That is, stakedLiquiditystakedLiquiditystakedLiquidity for leveraged positions tracks the debt value.

Proportion of supply held by the user:

In general, the larger the proportion of supply held, the larger the emissions multiplier.

By applying a holding weight to the staked liquidity provided by the user, it enables holders to access up to 2.5x the emissions for their staked liquidity. The weighted liquidity for a user is calculated based on the following formula:

The above formula is used to calculate the weightedLiqweightedLiqweightedLiq for every depositor in the strategy, including those who do not have staked. The emissions allocated to the pool for that epoch is then linearly streamed throughout the epoch based on the proportion of the strategy's weightedLiquidityweightedLiquidityweightedLiquidity that the user holds at that point in time.

This example builds upon the example. Changes to calculations are highlighted in bold.

This example builds upon the example. Changes to calculations are highlighted in bold.

This example builds upon the example. Changes to calculations are highlighted in bold.

This example builds upon the example. Changes to calculations are highlighted in bold.

This example builds upon the example. Changes to calculations are highlighted in bold.

âš–ī¸
Leverage
Baseline
Baseline
Baseline
Baseline
Baseline
Factor Scale
Factor Scale
Factor Scale
Emissions Multiplier Model
FCTR
veFCTR
FCTR
veFCTR
veFCTR
veFCTR
veFCTR
veFCTR
veFCTR
veFCTR
esFCTR