The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.
Dynamic Vault performs accounting in smallest token units using checked integer arithmetic. Display decimals are a UI concern. Division rounds down unless a strategy handler explicitly requests rounded-up collateral conversion.
The formulas below describe the on-chain accounting model. Strategy-specific conversions, such as JupLend collateral-to-liquidity exchange-rate math, are handled by the strategy handler.
Dynamic Vault uses a denominator of:LOCKED_PROFIT_DEGRADATION_DENOMINATOR=1,000,000,000,000The default degradation rate fully unlocks locked profit over 6 hours:defaultDegradation=⌊6×3,6001,000,000,000,000⌋For a current timestamp:duration=currentTime−lastReportlockedFundRatio=duration×lockedProfitDegradationIf lockedFundRatio is greater than the denominator, locked profit is zero. Otherwise:lockedProfit=⌊1,000,000,000,000lastUpdatedLockedProfit×(1,000,000,000,000−lockedFundRatio)⌋
For a non-empty LP supply:lpTokensMinted=⌊unlockedAmountdepositAmount×lpSupply⌋The program then increases total_amount by depositAmount.For zero LP supply, the program first adds the deposit to total_amount, then mints the current unlocked amount:lpTokensMinted=unlockedAmountAfterDepositThis also covers the edge case where all LP tokens were previously burned but some profit remains locked.
For a direct LP-token withdrawal:withdrawAmount=⌊lpSupplylpTokensBurned×unlockedAmount⌋The program subtracts withdrawAmount from total_amount, transfers that amount from the token vault, and burns the user’s LP tokens.For strategy-backed direct withdrawals, the program may refine the LP amount if the strategy cannot return the full desired amount:refinedLpBurn=⌊unlockedAmountactualOutAmount×lpSupply⌋Precision loss in this path must be at most 1.
After a strategy action, the program updates vault total liquidity from before and after values:newTotalAmount=oldTotalAmount+tokenVaultAfter+strategyLiquidityAfter−tokenVaultBefore−strategyLiquidityBeforeGain and loss are derived by comparing total amount before and after:gain=max(newTotalAmount−oldTotalAmount,0)loss=max(oldTotalAmount−newTotalAmount,0)
The program first calculates remaining locked profit at the current timestamp. Loss reduces remaining locked profit first:lockedAfterLoss=max(remainingLockedProfit−loss,0)Gain is then added:newLockedProfit=lockedAfterLoss+gainlast_report is updated to the current timestamp.
The performance-fee constants are:PERFORMANCE_FEE_NUMERATOR=500PERFORMANCE_FEE_DENOMINATOR=10,000So the fee is 5% of positive strategy gain:f=⌊10,000gain×500⌋The program does not transfer this fee as underlying tokens. It mints LP tokens to the configured fee vault.Let:
p be the gain
u be the unlocked amount before the rebalance accounting update
s be lpSupply before fee minting
f be the fee amount above
The amount of newly unlocked value attributed to the fee mint is:x=⌊p+u−ff×u⌋The LP tokens minted to the fee vault are:feeLpTokens=⌊ux×s⌋If fee LP tokens are minted, x is subtracted from last_updated_locked_profit. This keeps the virtual price stable at the moment the performance fee is minted, while future locked profit continues to unlock over time.
If gain is zero, or the unlocked amount is zero, no performance-fee LP tokens are minted.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Meteora Documentation","colors":{"primary":"#F54B00","light":"#F54B00","dark":"#F54B00"},"logo":{"light":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326","dark":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-dark.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=cc1569cccf60c9058cc0be9f61743fc7"},"favicon":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/logo/meteora.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=5ae3f2a17133bed15a6360c41694c4d7","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","typescript","bash","rust"]}},"appearance":{"default":"dark"},"background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"comet","href":"https://app.meteora.ag/","label":"App"},{"icon":"medium","href":"https://blog.meteora.ag","label":"Blog"},{"icon":"discord","href":"https://discord.com/invite/meteora","label":"Support"}]},"footer":{"socials":{"discord":"https://discord.gg/meteora","x":"https://x.com/MeteoraAG","youtube":"https://www.youtube.com/@meteora-ag","medium":"https://blog.meteora.ag/","github":"https://github.com/MeteoraAg","linkedin":"https://www.linkedin.com/company/meteora-ag"},"links":[{"header":"Meteora","items":[{"label":"Meteora","href":"https://app.meteora.ag"},{"label":"Terms of Service","href":"https://docs.meteora.ag/resources/legal/terms-of-service"}]}]},"fonts":{"family":"Inter"},"styling":{"codeblocks":"system","latex":true},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meteora","hasAudioNarration":false,"actualSubdomain":"meteora","customDomains":["docs.meteora.ag"],"gitSource":{"type":"github","owner":"meteoraag","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae968e0715034d486e241ba","collectionId":"93647572-50f9-4b90-b388-8d55bf85ed84","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae968e0715034d486e241ba"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae968e0715034d486e241ba","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Developer Guides","count":161},{"language":"default","tag":"Get Started","count":67},{"language":"default","tag":"API Reference","count":51},{"language":"default","tag":"API Endpoints","count":46},{"language":"default","tag":"Program","count":39},{"language":"default","tag":"DLMM","count":38},{"language":"default","tag":"DAMM v1","count":32},{"language":"default","tag":"DAMM v2","count":31},{"language":"default","tag":"TypeScript SDK","count":31},{"language":"default","tag":"Core Products","count":28}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"legacy-products/dynamic-vault/formulas","slug":"/legacy-products/dynamic-vault/formulas","pageMetadata":{"title":"Dynamic Vault Formulas","sidebarTitle":"Formulas","description":"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.","llmsDescription":"Dynamic Vault formulas based on the vault program, covering smallest-unit integer accounting, unlocked amount, locked profit degradation denominator 1e12, default six-hour degradation, deposit LP minting, zero-supply deposits, withdrawal amount, withdrawal unmint amount, rebalance total liquidity update, gain and loss, locked-profit updates, 5% performance fee, fee unlock amount, and minted fee LP tokens.","href":"/legacy-products/dynamic-vault/formulas"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={annotation:`annotation`,code:`code`,li:`li`,math:`math`,mfrac:`mfrac`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,mtext:`mtext`,p:`p`,semantics:`semantics`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Info,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Dynamic Vault performs accounting in smallest token units using checked integer arithmetic. Display decimals are a UI concern. Division rounds down unless a strategy handler explicitly requests rounded-up collateral conversion.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The formulas below describe the on-chain accounting model. Strategy-specific conversions, such as JupLend collateral-to-liquidity exchange-rate math, are handled by the strategy handler.`})}),`\n`,_jsx(Heading,{level:`2`,id:`core-values`,children:`Core Values`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`total_amount`})}),_jsx(_components.td,{children:`Vault liquidity tracked by the program, including the token vault and strategy liquidity.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`token_vault.amount`})}),_jsx(_components.td,{children:`Underlying token amount currently in the vault reserve.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`strategy.current_liquidity`})}),_jsx(_components.td,{children:`Underlying liquidity value last recorded for a strategy.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`lpSupply`})}),_jsxs(_components.td,{children:[`Supply used in share math. Version `,_jsx(_components.code,{children:`1`}),` uses `,_jsx(_components.code,{children:`vault.total_lp_supply`}),`. Version `,_jsx(_components.code,{children:`0`}),` uses `,_jsx(_components.code,{children:`lp_mint.supply`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`last_updated_locked_profit`})}),_jsx(_components.td,{children:`Locked profit after the latest locked-profit update.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`last_report`})}),_jsx(_components.td,{children:`Timestamp of the latest locked-profit update.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`locked_profit_degradation`})}),_jsx(_components.td,{children:`Per-second unlock rate.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`locked-profit`,children:`Locked Profit`}),`\n`,_jsx(_components.p,{children:`Dynamic Vault uses a denominator of:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`LOCKED_PROFIT_DEGRADATION_DENOMINATOR`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`1,000,000,000,000`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{LOCKED\\\\_PROFIT\\\\_DEGRADATION\\\\_DENOMINATOR} = 1{,}000{,}000{,}000{,}000\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.9933em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`LOCKED_PROFIT_DEGRADATION_DENOMINATOR`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8389em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]})}),`\n`,_jsx(_components.p,{children:`The default degradation rate fully unlocks locked profit over 6 hours:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`defaultDegradation`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mn,{children:`1,000,000,000,000`}),_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`6`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`3,600`})]})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{defaultDegradation} =\n\\\\left\\\\lfloor\n\\\\frac{1{,}000{,}000{,}000{,}000}{6 \\\\times 3{,}600}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`defaultDegradation`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3214em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`6`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`3`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`600`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`For a current timestamp:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`duration`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`currentTime`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`lastReport`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{duration} = \\\\text{currentTime} - \\\\text{lastReport}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`duration`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7667em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`currentTime`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lastReport`})})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lockedFundRatio`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`duration`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`lockedProfitDegradation`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{lockedFundRatio} = \\\\text{duration} \\\\times \\\\text{lockedProfitDegradation}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedFundRatio`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`duration`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedProfitDegradation`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`lockedFundRatio`}),` is greater than the denominator, locked profit is zero. Otherwise:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lockedProfit`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lastUpdatedLockedProfit`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mn,{children:`1,000,000,000,000`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`lockedFundRatio`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.mn,{children:`1,000,000,000,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{lockedProfit} =\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\text{lastUpdatedLockedProfit}\n\\\\times\n(1{,}000{,}000{,}000{,}000 - \\\\text{lockedFundRatio})\n}{\n1{,}000{,}000{,}000{,}000\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedProfit`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.427em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lastUpdatedLockedProfit`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedFundRatio`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`unlocked-amount`,children:`Unlocked Amount`}),`\n`,_jsx(_components.p,{children:`The unlocked amount is used for deposit and withdrawal share calculations.`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`unlockedAmount`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`totalAmount`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`lockedProfit`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{unlockedAmount} = \\\\text{totalAmount} - \\\\text{lockedProfit}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`unlockedAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`totalAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedProfit`})})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`deposit-lp-tokens`,children:`Deposit LP Tokens`}),`\n`,_jsx(_components.p,{children:`For a non-empty LP supply:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lpTokensMinted`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`depositAmount`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`lpSupply`})]}),_jsx(_components.mtext,{children:`unlockedAmount`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{lpTokensMinted} =\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{depositAmount} \\\\times \\\\text{lpSupply}}{\\\\text{unlockedAmount}}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpTokensMinted`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`unlockedAmount`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`depositAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpSupply`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`The program then increases `,_jsx(_components.code,{children:`total_amount`}),` by `,_jsx(_components.code,{children:`depositAmount`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For zero LP supply, the program first adds the deposit to `,_jsx(_components.code,{children:`total_amount`}),`, then mints the current unlocked amount:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lpTokensMinted`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`unlockedAmountAfterDeposit`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{lpTokensMinted} = \\\\text{unlockedAmountAfterDeposit}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpTokensMinted`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`unlockedAmountAfterDeposit`})})]})]})]})}),`\n`,_jsx(_components.p,{children:`This also covers the edge case where all LP tokens were previously burned but some profit remains locked.`}),`\n`,_jsx(Heading,{level:`2`,id:`withdrawal-amount`,children:`Withdrawal Amount`}),`\n`,_jsx(_components.p,{children:`For a direct LP-token withdrawal:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`withdrawAmount`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lpTokensBurned`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`unlockedAmount`})]}),_jsx(_components.mtext,{children:`lpSupply`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{withdrawAmount} =\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{lpTokensBurned} \\\\times \\\\text{unlockedAmount}}{\\\\text{lpSupply}}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`withdrawAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpSupply`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpTokensBurned`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`unlockedAmount`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`The program subtracts `,_jsx(_components.code,{children:`withdrawAmount`}),` from `,_jsx(_components.code,{children:`total_amount`}),`, transfers that amount from the token vault, and burns the user’s LP tokens.`]}),`\n`,_jsx(_components.p,{children:`For strategy-backed direct withdrawals, the program may refine the LP amount if the strategy cannot return the full desired amount:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`refinedLpBurn`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`actualOutAmount`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`lpSupply`})]}),_jsx(_components.mtext,{children:`unlockedAmount`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{refinedLpBurn} =\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{actualOutAmount} \\\\times \\\\text{lpSupply}}{\\\\text{unlockedAmount}}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`refinedLpBurn`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`unlockedAmount`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`actualOutAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lpSupply`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`Precision loss in this path must be at most `,_jsx(_components.code,{children:`1`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`strategy-total-amount-update`,children:`Strategy Total Amount Update`}),`\n`,_jsx(_components.p,{children:`After a strategy action, the program updates vault total liquidity from before and after values:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`newTotalAmount`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`oldTotalAmount`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`tokenVaultAfter`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`strategyLiquidityAfter`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`tokenVaultBefore`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`strategyLiquidityBefore`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{newTotalAmount}\n=\n\\\\text{oldTotalAmount}\n+ \\\\text{tokenVaultAfter}\n+ \\\\text{strategyLiquidityAfter}\n- \\\\text{tokenVaultBefore}\n- \\\\text{strategyLiquidityBefore}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`newTotalAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`oldTotalAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`tokenVaultAfter`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`strategyLiquidityAfter`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`tokenVaultBefore`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`strategyLiquidityBefore`})})]})]})]})}),`\n`,_jsx(_components.p,{children:`Gain and loss are derived by comparing total amount before and after:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`gain`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`newTotalAmount`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`oldTotalAmount`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{gain} = \\\\max(\\\\text{newTotalAmount} - \\\\text{oldTotalAmount}, 0)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8623em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`gain`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`newTotalAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`oldTotalAmount`})}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`loss`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`oldTotalAmount`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`newTotalAmount`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{loss} = \\\\max(\\\\text{oldTotalAmount} - \\\\text{newTotalAmount}, 0)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`loss`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`oldTotalAmount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`newTotalAmount`})}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`locked-profit-update`,children:`Locked Profit Update`}),`\n`,_jsx(_components.p,{children:`The program first calculates remaining locked profit at the current timestamp. Loss reduces remaining locked profit first:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`lockedAfterLoss`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`remainingLockedProfit`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`loss`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{lockedAfterLoss} =\n\\\\max(\\\\text{remainingLockedProfit} - \\\\text{loss}, 0)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedAfterLoss`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`remainingLockedProfit`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`loss`})}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsx(_components.p,{children:`Gain is then added:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`newLockedProfit`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`lockedAfterLoss`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`gain`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{newLockedProfit} = \\\\text{lockedAfterLoss} + \\\\text{gain}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`newLockedProfit`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`lockedAfterLoss`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8623em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`gain`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`last_report`}),` is updated to the current timestamp.`]}),`\n`,_jsx(Heading,{level:`2`,id:`performance-fee`,children:`Performance Fee`}),`\n`,_jsx(_components.p,{children:`The performance-fee constants are:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`PERFORMANCE_FEE_NUMERATOR`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`500`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{PERFORMANCE\\\\_FEE\\\\_NUMERATOR} = 500\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.9933em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`PERFORMANCE_FEE_NUMERATOR`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6444em`}}),_jsx(_components.span,{className:`mord`,children:`500`})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`PERFORMANCE_FEE_DENOMINATOR`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{PERFORMANCE\\\\_FEE\\\\_DENOMINATOR} = 10{,}000\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.9933em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`PERFORMANCE_FEE_DENOMINATOR`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8389em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]})}),`\n`,_jsx(_components.p,{children:`So the fee is 5% of positive strategy gain:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`gain`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`500`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f =\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{gain} \\\\times 500}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3449em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`gain`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`500`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`The program does not transfer this fee as underlying tokens. It mints LP tokens to the configured fee vault.`}),`\n`,_jsx(_components.p,{children:`Let:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`p`}),` be the gain`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`u`}),` be the unlocked amount before the rebalance accounting update`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`s`}),` be `,_jsx(_components.code,{children:`lpSupply`}),` before fee minting`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`f`}),` be the fee amount above`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The amount of newly unlocked value attributed to the fee mint is:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`x`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mi,{children:`u`})]}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{children:`u`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`f`})]})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`x =\n\\\\left\\\\lfloor\n\\\\frac{f \\\\times u}{p + u - f}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`x`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`p`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`The LP tokens minted to the fee vault are:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`feeLpTokens`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`x`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mi,{children:`s`})]}),_jsx(_components.mi,{children:`u`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{feeLpTokens} =\n\\\\left\\\\lfloor\n\\\\frac{x \\\\times s}{u}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`feeLpTokens`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.2603em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathnormal`,children:`u`})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`x`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`If fee LP tokens are minted, `,_jsx(_components.code,{children:`x`}),` is subtracted from `,_jsx(_components.code,{children:`last_updated_locked_profit`}),`. This keeps the virtual price stable at the moment the performance fee is minted, while future locked profit continues to unlock over time.`]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`If gain is zero, or the unlocked amount is zero, no performance-fee LP tokens are minted.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Dynamic Vault Formulas","sidebarTitle":"Formulas","description":"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.","llmsDescription":"Dynamic Vault formulas based on the vault program, covering smallest-unit integer accounting, unlocked amount, locked profit degradation denominator 1e12, default six-hour degradation, deposit LP minting, zero-supply deposits, withdrawal amount, withdrawal unmint amount, rebalance total liquidity update, gain and loss, locked-profit updates, 5% performance fee, fee unlock amount, and minted fee LP tokens.","href":"/legacy-products/dynamic-vault/formulas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Core Values","slug":"core-values","depth":2,"children":[]},{"title":"Locked Profit","slug":"locked-profit","depth":2,"children":[]},{"title":"Unlocked Amount","slug":"unlocked-amount","depth":2,"children":[]},{"title":"Deposit LP Tokens","slug":"deposit-lp-tokens","depth":2,"children":[]},{"title":"Withdrawal Amount","slug":"withdrawal-amount","depth":2,"children":[]},{"title":"Strategy Total Amount Update","slug":"strategy-total-amount-update","depth":2,"children":[]},{"title":"Locked Profit Update","slug":"locked-profit-update","depth":2,"children":[]},{"title":"Performance Fee","slug":"performance-fee","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"meteora","siteName":"Meteora Documentation","title":"Dynamic Vault Formulas - Meteora Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T09:24:52.466Z","originalFileLocation":"legacy-products/dynamic-vault/formulas.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Dynamic Vault Formulas - Meteora Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=Dynamic+Vault\u0026amp;title=Dynamic+Vault+Formulas\u0026amp;description=The+core+Dynamic+Vault+formulas+for+LP+shares%2C+unlocked+amount%2C+locked+profit%2C+strategy+profit+and+loss%2C+and+performance-fee+LP+minting.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=3a082dcf2b71e19b8f38f427fe8ceb8961e63b69bcd73ee2b80ab0c9b54589ff\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Dynamic Vault Formulas - Meteora Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=Dynamic+Vault\u0026amp;title=Dynamic+Vault+Formulas\u0026amp;description=The+core+Dynamic+Vault+formulas+for+LP+shares%2C+unlocked+amount%2C+locked+profit%2C+strategy+profit+and+loss%2C+and+performance-fee+LP+minting.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=3a082dcf2b71e19b8f38f427fe8ceb8961e63b69bcd73ee2b80ab0c9b54589ff\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F54B00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/legacy-products/dynamic-vault/formulas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meteora.ag/#organization\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meteora.ag#website\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas#webpage\",\"url\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas\",\"name\":\"Dynamic Vault Formulas\",\"description\":\"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\",\"dateModified\":\"2026-10-16T09:24:52.466Z\",\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Legacy Products\",\"item\":\"https://docs.meteora.ag/legacy-products/damm-v1/stable-pools\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamic Vault\",\"item\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/what-is-dynamic-vault\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dynamic Vault Formulas\",\"item\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas#article\",\"headline\":\"Dynamic Vault Formulas\",\"name\":\"Dynamic Vault Formulas\",\"description\":\"The core Dynamic Vault formulas for LP shares, unlocked amount, locked profit, strategy profit and loss, and performance-fee LP minting.\",\"url\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meteora.ag/legacy-products/dynamic-vault/formulas#webpage\"},\"dateModified\":\"2026-10-16T09:24:52.466Z\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Meteora Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Meteora Documentation","nav":{"global":null,"tabs":[{"tab":"Get Started","groups":[{"group":" ","pages":[{"title":"We Build Liquidity Pools","sidebarTitle":"Welcome to Meteora","href":"/get-started"},{"title":"Why are Liquidity Pools and Liquidity Providers on Solana Important?","sidebarTitle":"The Foundation of DeFi","href":"/get-started/why-are-liquidity-pools-important"},{"title":"Pushing the Boundaries of DeFi","sidebarTitle":"Pushing the Boundaries of DeFi","href":"/get-started/pushing-the-boundaries-of-defi"}]},{"group":"User Guides","pages":[{"title":"Getting Started","sidebarTitle":"Getting Started with Meteora","href":"/user-guides/getting-started-with-meteora"},{"title":"Staying Safe","sidebarTitle":"Staying Safe on Meteora","href":"/user-guides/staying-safe-on-meteora"},{"title":"How to become a Liquidity Provider","sidebarTitle":"Becoming a Liquidity Provider","href":"/user-guides/becoming-a-liquidity-provider"},{"title":"How to create a Liquidity Pool ","sidebarTitle":"Creating a Liquidity Pool","href":"/user-guides/creating-a-liquidity-pool"},{"title":"How to Swap Tokens on Meteora","sidebarTitle":"Swapping Tokens on Meteora","href":"/user-guides/swapping-tokens-on-meteora"},{"group":"How to use DLMM?","pages":[{"title":"DLMM Dynamic Terminal","sidebarTitle":"DLMM Dynamic Terminal","href":"/user-guides/how-to-use-dlmm/dynamic-terminal"},{"title":"TradingView Charts","sidebarTitle":"TradingView Charts","href":"/user-guides/how-to-use-dlmm/tradingview-charts"}]},{"group":"How to use DAMM v2?","pages":[{"title":"DAMM v2 Pool Detail","sidebarTitle":"DAMM v2 Pool Detail","href":"/user-guides/how-to-use-damm-v2/damm-v2-pool-detail"}]}]},{"group":"Core Products","pages":[{"group":"DLMM","root":{"title":"What is DLMM?","sidebarTitle":"What is DLMM?","href":"/core-products/dlmm/what-is-dlmm"},"pages":[{"title":"DLMM Dynamic Positions","sidebarTitle":"Dynamic Positions","href":"/core-products/dlmm/dynamic-positions"},{"title":"DLMM Limit Order","sidebarTitle":"Limit Order","href":"/core-products/dlmm/limit-order"},{"title":"DLMM Liquidity Mining","sidebarTitle":"Liquidity Mining","href":"/core-products/dlmm/liquidity-mining"},{"title":"DLMM Collect Fee Mode","sidebarTitle":"Collect Fee Mode","href":"/core-products/dlmm/collect-fee-mode"},{"title":"DLMM Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/dlmm/token-2022-support"},{"title":"DLMM Strategies and Use Cases","sidebarTitle":"Strategies and Use Cases","href":"/core-products/dlmm/strategies-and-use-cases"},{"title":"DLMM Formulas","sidebarTitle":"Formulas","href":"/core-products/dlmm/formulas"}]},{"group":"DAMM v2","root":{"title":"What is DAMM v2?","sidebarTitle":"What is DAMM v2?","href":"/core-products/damm-v2/what-is-damm-v2"},"pages":[{"title":"DAMM v2 Concentrated Liquidity","sidebarTitle":"Concentrated Liquidity","href":"/core-products/damm-v2/concentrated-liquidity"},{"title":"DAMM v2 Compounding Liquidity","sidebarTitle":"Compounding Liquidity","href":"/core-products/damm-v2/compounding-liquidity"},{"group":"DAMM v2 Fees","root":{"title":"DAMM v2 Fees","sidebarTitle":"Fees Overview","href":"/core-products/damm-v2/fees/overview"},"pages":[{"title":"DAMM v2 Time Scheduler","sidebarTitle":"Time Scheduler","href":"/core-products/damm-v2/fees/time-scheduler"},{"title":"DAMM v2 Market Cap Scheduler","sidebarTitle":"Market Cap Scheduler","href":"/core-products/damm-v2/fees/market-cap-scheduler"},{"title":"DAMM v2 Rate Limiter","sidebarTitle":"Rate Limiter","href":"/core-products/damm-v2/fees/rate-limiter"},{"title":"DAMM v2 Dynamic Fees","sidebarTitle":"Dynamic Fees","href":"/core-products/damm-v2/fees/dynamic-fees"}]},{"title":"DAMM v2 NFT Positions","sidebarTitle":"NFT Positions","href":"/core-products/damm-v2/nft-positions"},{"title":"DAMM v2 Liquidity Mining","sidebarTitle":"Liquidity Mining","href":"/core-products/damm-v2/liquidity-mining"},{"title":"DAMM v2 Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/damm-v2/token-2022-support"},{"title":"DAMM v2 Formulas","sidebarTitle":"Formulas","href":"/core-products/damm-v2/formulas"}]},{"group":"DBC","root":{"title":"What is DBC?","sidebarTitle":"What is DBC?","href":"/core-products/dbc/what-is-dbc"},"pages":[{"title":"DBC Universal Curve","sidebarTitle":"Universal Curve","href":"/core-products/dbc/universal-curve"},{"title":"DBC Launch Configuration","sidebarTitle":"Launch Configuration","href":"/core-products/dbc/launch-configurations"},{"group":"DBC Fees","root":{"title":"DBC Fees","sidebarTitle":"Fees Overview","href":"/core-products/dbc/fees/overview"},"pages":[{"title":"DBC Fee Scheduler","sidebarTitle":"Fee Scheduler","href":"/core-products/dbc/fees/fee-scheduler"},{"title":"DBC Rate Limiter","sidebarTitle":"Rate Limiter","href":"/core-products/dbc/fees/rate-limiter"},{"title":"DBC Dynamic Fees","sidebarTitle":"Dynamic Fees","href":"/core-products/dbc/fees/dynamic-fees"}]},{"title":"DBC Migration and Liquidity","sidebarTitle":"Migration and Liquidity","href":"/core-products/dbc/migration-and-liquidity"},{"title":"DBC Surplus and Leftover","sidebarTitle":"Surplus and Leftover","href":"/core-products/dbc/surplus-and-leftover"},{"title":"DBC Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/dbc/token-2022-support"},{"title":"DBC Transfer Hook Pools","sidebarTitle":"Transfer Hook Pools","href":"/core-products/dbc/transfer-hook-pools"},{"title":"DBC Accounts and Permissions","sidebarTitle":"Accounts and Permissions","href":"/core-products/dbc/accounts-and-permissions"},{"title":"DBC Formulas","sidebarTitle":"Formulas","href":"/core-products/dbc/formulas"}]}]},{"group":"Helper Products","pages":[{"group":"Presale Vault","root":{"title":"What is Presale Vault?","sidebarTitle":"What is Presale Vault?","href":"/helper-products/presale-vault/what-is-presale-vault"},"pages":[{"title":"Presale Vault Modes","sidebarTitle":"Vault Modes","href":"/helper-products/presale-vault/vault-modes"},{"title":"Presale Vault Configuration Guide","sidebarTitle":"Configuration Guide","href":"/helper-products/presale-vault/configuration-guide"},{"title":"Presale Vault Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/helper-products/presale-vault/token-2022-support"},{"title":"Presale Vault Access and States","sidebarTitle":"Access and States","href":"/helper-products/presale-vault/access-and-states"},{"title":"Presale Vault Formulas","sidebarTitle":"Formulas","href":"/helper-products/presale-vault/formulas"}]},{"group":"Alpha Vault","root":{"title":"What is Alpha Vault?","sidebarTitle":"What is Alpha Vault?","href":"/helper-products/alpha-vault/what-is-alpha-vault"},"pages":[{"title":"Alpha Vault Modes","sidebarTitle":"Vault Modes","href":"/helper-products/alpha-vault/vault-modes"},{"title":"Alpha Vault Launch Design Guide","sidebarTitle":"Launch Design Guide","href":"/helper-products/alpha-vault/launch-design-guide"},{"title":"Alpha Vault Whitelist and Access","sidebarTitle":"Whitelist and Access","href":"/helper-products/alpha-vault/whitelist-and-access"},{"title":"Alpha Vault Formulas","sidebarTitle":"Formulas","href":"/helper-products/alpha-vault/formulas"}]},{"group":"Dynamic Fee Sharing","root":{"title":"What is Dynamic Fee Sharing?","sidebarTitle":"What is Dynamic Fee Sharing?","href":"/helper-products/dynamic-fee-sharing/what-is-dynamic-fee-sharing"},"pages":[{"title":"Dynamic Fee Sharing Design Guide","sidebarTitle":"Design Guide","href":"/helper-products/dynamic-fee-sharing/design-guide"},{"title":"Dynamic Fee Sharing Compatibilities","sidebarTitle":"Compatibilities","href":"/helper-products/dynamic-fee-sharing/compatibilities"},{"title":"Dynamic Fee Sharing Formulas","sidebarTitle":"Formulas","href":"/helper-products/dynamic-fee-sharing/formulas"}]},{"group":"Zap","root":{"title":"What is Zap?","sidebarTitle":"What is Zap?","href":"/helper-products/zap/what-is-zap"},"pages":[{"title":"Zap Compatibilities","sidebarTitle":"Compatibilities","href":"/helper-products/zap/compatibilities"},{"title":"Zap Formulas and Limits","sidebarTitle":"Formulas and Limits","href":"/helper-products/zap/formula-and-limits"}]}]},{"group":"Legacy Products","pages":[{"group":"DAMM v1","root":{"title":"What is DAMM v1?","sidebarTitle":"What is DAMM v1?","href":"/legacy-products/damm-v1/what-is-damm-v1"},"pages":[{"title":"DAMM v1 Stable Pools","sidebarTitle":"Stable Pools","href":"/legacy-products/damm-v1/stable-pools"},{"title":"DAMM v1 LST Pools","sidebarTitle":"LST Pools","href":"/legacy-products/damm-v1/lst-pools"},{"title":"Dynamic Vault Yield","sidebarTitle":"Dynamic Vault Yield","href":"/legacy-products/damm-v1/dynamic-vaults-yield"},{"title":"DAMM v1 Pools With Farms","sidebarTitle":"Pools With Farms","href":"/legacy-products/damm-v1/pools-with-farms"},{"title":"DAMM v1 Liquidity Locks","sidebarTitle":"Liquidity Locks","href":"/legacy-products/damm-v1/liquidity-locks"},{"title":"DAMM v1 Fee and APY Calculation","sidebarTitle":"Fee and APY Calculation","href":"/legacy-products/damm-v1/damm-v1-fee-and-apy-calculation"},{"title":"DAMM v1 Pool Design Guide","sidebarTitle":"Pool Design Guide","href":"/legacy-products/damm-v1/pool-design-guide"},{"title":"DAMM v1 Implementation and Limits","sidebarTitle":"Implementation and Limits","href":"/legacy-products/damm-v1/implementation-and-limits"},{"title":"DAMM v1 Formulas","sidebarTitle":"Formulas","href":"/legacy-products/damm-v1/damm-v1-formulas"}]},{"group":"Dynamic Vault","root":{"title":"What is Dynamic Vault?","sidebarTitle":"What is Dynamic Vault?","href":"/legacy-products/dynamic-vault/what-is-dynamic-vault"},"pages":[{"group":"Hermes","root":{"title":"What is Hermes?","sidebarTitle":"What is Hermes?","href":"/legacy-products/dynamic-vault/hermes/what-is-hermes"},"pages":[{"title":"Rebalance Crank","sidebarTitle":"Rebalance Crank","href":"/legacy-products/dynamic-vault/hermes/rebalance-crank"}]},{"title":"Dynamic Vault Access and Limits","sidebarTitle":"Access and Limits","description":"Dynamic Vault account model, permissions, supported strategy behavior, token support, and implementation limits.","href":"/legacy-products/dynamic-vault/access-and-limits"},{"title":"Dynamic Vault Formulas","sidebarTitle":"Formulas","href":"/legacy-products/dynamic-vault/formulas"}]},{"group":"Stake2Earn","root":{"title":"What is Stake2Earn?","sidebarTitle":"What is Stake2Earn?","description":"Learn how Stake2Earn routes DAMM v1 lock-escrow fees to top project-token stakers through leaderboard-based reward accounting.","href":"/legacy-products/stake2earn/what-is-stake2earn"},"pages":[{"title":"Stake2Earn Configuration and Limits","sidebarTitle":"Configuration and Limits","href":"/legacy-products/stake2earn/configuration-and-limits"},{"title":"Stake2Earn Formulas","sidebarTitle":"Formulas","href":"/legacy-products/stake2earn/formulas"}]}]}]},{"tab":"Developer Guides","menu":[{"item":"DLMM","icon":"arrows-to-circle","pages":[{"title":"DLMM","href":"/developer-guides/dlmm"}]},{"item":"DAMM v2","icon":"calculator-simple","pages":[{"title":"DAMM v2","href":"/developer-guides/damm-v2"}]},{"item":"DBC","icon":"chart-simple","pages":[{"title":"DBC","href":"/developer-guides/dbc"}]},{"item":"Presale Vault","icon":"gavel","pages":[{"title":"Presale Vault","href":"/developer-guides/presale-vault"}]},{"item":"Alpha Vault","icon":"box","pages":[{"title":"Alpha Vault","href":"/developer-guides/alpha-vault"}]},{"item":"Dynamic Fee Sharing","icon":"money-bill-wave","pages":[{"title":"Dynamic Fee Sharing","href":"/developer-guides/dynamic-fee-sharing"}]},{"item":"Zap","icon":"bolt-lightning","pages":[{"title":"Zap","href":"/developer-guides/zap"}]},{"item":"DAMM v1","icon":"calculator","pages":[{"title":"DAMM v1","href":"/developer-guides/damm-v1"}]},{"item":"Dynamic Vault","icon":"vault","pages":[{"title":"Dynamic Vault","href":"/developer-guides/dynamic-vault"}]},{"item":"Stake2Earn","icon":"steak","pages":[{"title":"Stake2Earn","href":"/developer-guides/stake2earn"}]}],"pages":[{"title":"Developer Guides","href":"/developer-guides/dlmm"}]},{"tab":"Invent","pages":[{"title":"Invent","href":"/invent/actions"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Protocol","pages":[{"title":"Protocol","href":"/protocol/protocol-revenues"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/resources/audits/overview"}]}]},"basePath":"","title":"Dynamic Vault Formulas - Meteora Documentation","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}