<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Duality ☯️</title>
        <link>https://paragraph.com/@duality</link>
        <description>undefined</description>
        <lastBuildDate>Thu, 27 Aug 2026 23:50:54 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Duality ☯️</title>
            <url>https://storage.googleapis.com/papyrus_images/7d569d349ed09cec397fe2cebbf7e42fc355726d43e936b9ded4c7055803bef2.jpg</url>
            <link>https://paragraph.com/@duality</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[LP Returns: All You Need is a Price Feed]]></title>
            <link>https://paragraph.com/@duality/lp-returns-all-you-need-is-a-price-feed-4</link>
            <guid>QB6G7MqDysfOM2txgoTt</guid>
            <pubDate>Wed, 06 Apr 2022 06:07:33 GMT</pubDate>
            <description><![CDATA[IntroductionAt Duality, we think that one of the most interesting aspects of AMMs is the role of Liquidity Providers (LPs). LPs are critical - without them, the AMM cannot survive. However, many users have a limited view into what it means to take on an LP position. Admittedly this is a very deep topic, but in this post we wanted to share one frame that we find to be particularly helpful in estimating returns: all you need is a price feed. We will show how the future value of a constant produ...]]></description>
            <content:encoded><![CDATA[<h2 id="h-introduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Introduction</h2><p>At Duality, we think that one of the most interesting aspects of AMMs is the role of Liquidity Providers (LPs). LPs are critical - without them, the AMM cannot survive.</p><p>However, many users have a limited view into what it means to take on an LP position. Admittedly this is a very deep topic, but in this post we wanted to share one frame that we find to be particularly helpful in estimating returns: <strong>all you need is a price feed</strong>.</p><p>We will show how the future value of a constant product LP position can be calculated solely by watching how the price moves over time. We’ll also show evidence of a closely related result: the fees accumulated by an LP share have an inherent connection to the realized volatility of the underlying asset.</p><p>For all of the results below, we’ll be working with constant product AMMs, with fees implemented in the same way as Uniswap v2. That is, we consider liquidity amounts L under the constant product formula Rₐ·Rᵦ = L².</p><h2 id="h-liquidity-growth" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Liquidity Growth</h2><p>A key perk of LP positions is the fees you accumulate, which increase the liquidity L that your LP tokens represent over time. In our time discussing AMMs with those in the crypto community, we found most think about LP fees exactly how they are implemented:</p><blockquote><p>Each trade in the AMM pays some fee on their input amount, which is shared proportionately among all LP shareholders. The AMM then executes the trade by calculating an output amount such that removing it from reserve Rᵦ and adding the input amount (minus fees) to reserve Rₐ maintains a constant product.</p></blockquote><p>While this is accurate, it makes it seem difficult to reason about the fees you will earn. You would need to account for how much <em>other</em> LP capital is in the pool with you throughout the time you are holding the position. It turns out that this doesn’t actually matter.</p><p>You can calculate constant product LP returns purely using the AMM’s price feed and the pool trading fee. You do not need to know the size of the pool (Rₐ, Rᵦ, or L), and technically don’t even need all the individual price information that the price feed provides. This means that as an LP, <em>all</em> we really care about is how the AMM’s price changes while we are in the position. If you believe that you have a feel for the price movement that an AMM pool will see, that is all you need to ballpark your financial outcome.</p><p>Let’s dig into the math (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dualitylabs/lp_volatility_analysis/blob/15a77d19c180638c24b2d7b2f864034ee8bc8859/Deriving_LP_Position_Value.pdf">Full derivations here</a>): Let’s assume a trade is being made from asset α to asset β. Pₜ is defined as the price of asset α in terms of asset β according to the AMM pool at time step t (the ratio of reserves). Let (1 - 𝛾) be the pool fee. We can using the constant product invariant and the quadratic formula to solve for Δₐ, the amount paid by the trader:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f6353bebb3a2e4c5f36c266131d639103f4477b52caa1ec87688a7d377e98275.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The value that we are interested in is gₜ : how much the pool liquidity grows given a trade that moves our price from Pₜ to Pₜ₊₁. This is our new liquidity value, Lₜ₊₁, divided by our old liquidity value Lₜ:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/68cff9be0fbac4caed0fc7daa8020b53b54a89adf804096cf533a299d4d9c57a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5256725c146c6024e23e330fb43357e11435bf9aaa7b251cccfc7f1517c97b1f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>As we can see, we’ve simplified to an equation that depends solely on 𝛾 and the ratio of our price before and after trading. This equation assumes that we’re trading from token α to β. If we are trading from β to α, we can simply replace the prices with their reciprocals. We can use a single variable ϕₜ to support trades in either direction:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/01da1a7d7f1400bf7d17bc52b2b523c74ac1cb3103903f6a9f244a3eb4aa8fab.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0f3d9c58643505621eb09682211e0e8d56136870857b897b5f27b46d8592216c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>If we want to calculate the total liquidity growth over T time steps we can do so with the equation:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e8833056166e807a10d362956ad5275ba036e7bd88c0a6dd9f866dbf755e2e3f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>What this makes explicit is that the growth of our liquidity is dependent on the pool fee (1 - 𝛾) and the movement of price in relative terms.</p><h2 id="h-valuing-an-lp-position" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Valuing an LP position</h2><p>Now that we’ve done our calculations for our liquidity growth, let’s calculate our end LP valuation and PnL after a feed of price changes.</p><p>To do this, we’ll need the value for L units of liquidity:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d193c6ee6e1ad2c7fca3935227d310df41813b652f1f26949f1726ea9cb9783c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>where Pₐ,ₜ and Pᵦ,ₜ represent the prices at time t of asset α and asset β respectively. We can multiply our total growth factor Gₜ to our initial liquidity L₀ to get our final liquidity with fee growth Lₜ:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6ec4aae3da51b41a40732fda1ca1652306abf49eb0afbdec4278c280ce353d85.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Plugging this into our equation for the value of liquidity, we get our final LP value with accrued fees Vₜ, as well as our PnL Vₜ - V₀:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6805f32de7ec4c9a7d850a66417b968adb5e3fda8b0c1129af08cf8d716885d2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f08e4fce45bfdaa028ff01a709e9e6584cbf4451fc68b14b4822810a0e0ff760.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-realized-volatility" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Realized Volatility</h2><p>We have shown that LP position growth is dependent on the movement of price in relative terms. The main way financiers characterize the movement of price is through <em>volatility</em>. After deriving the above result, we wanted to see how closely LP returns compared to realized volatility.</p><p>We ran some simulations using standard <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Geometric_Brownian_motion">Geometric Brownian Motion</a> across several different volatility values, and compared the volatility of log returns at every price update to our total liquidity growth Gₜ (i.e. our APY). From these simulations we got the following:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/78834b37187b2c53462970470dd9444e548bf551f1237dba3a6319686eb111bb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This plot has a r^2 value of <strong>0.998</strong>. Entering into an LP position is making the trade off of giving up <em>convexity</em> in price exposure (square root rises slower and drops faster than linear) in exchange for exposure to <em>realized volatility</em>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/99179c6889cd9d03c12b16fbd6cd44a4de3b78a0ab33b69bb07b374cbfcebcce.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Note that this is the realized vol of our AMM price feed, not necessarily that of the underlying asset from a more global perspective. These can differ for many reasons, including:</p><ul><li><p>amount of price movement due to arbitrage, amount due to uninformed flow</p></li><li><p>block times, gas fees, pool fee, and total liquidity in how it relates to ability to arb</p></li><li><p>market behavior of traders (including LPs, MEV searchers)</p></li></ul><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>With so many new derivatives on the DeFi horizon, and all of the surrounding talk about implied and realized volatility, it’s helpful to realize that it’s really not all so foreign to the ecosystem. As an example, you might find that a constant product AMM’s price exposure (raising the price to the ½ power) is awfully similar to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/alpinechicken/status/1484257683138318336?s=20">recent CT rumblings</a>.</p><p>If you enjoyed this post, follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/DualityFi">Twitter</a> and join our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/6TvJNG96dt">Discord</a> for more on AMMs and DeFi derivatives. Alpha leak: Duality’s first product is closely related to everything in this post. More coming soon 👀 ☯️</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dualitylabs/lp_volatility_analysis">Analysis/Simulations Repo</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dualitylabs/lp_volatility_analysis/blob/15a77d19c180638c24b2d7b2f864034ee8bc8859/Deriving_LP_Position_Value.pdf">Full Derivations</a></p></li></ul>]]></content:encoded>
            <author>duality@newsletter.paragraph.com (Duality ☯️)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/26977c5041bcc736fb1e1c6f96821267946e269120a0dd0cea759332769865de.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Introducing Duality Focus]]></title>
            <link>https://paragraph.com/@duality/introducing-duality-focus</link>
            <guid>xAV7mPcdLg6MLx7jMd5F</guid>
            <pubDate>Fri, 11 Mar 2022 22:55:57 GMT</pubDate>
            <description><![CDATA[Today, we are excited to announce Duality Focus: a money market where Uniswap V3 liquidity positions are accepted as collateral. Focus allows V3 range holders to borrow stablecoins and other assets while continuing to earn fees, increasing net borrowing power and capital efficiency. On top of this core functionality, we’ve built best-in-class position management features. For example, those confident in their range selections can "focus" their position, instantly borrowing assets and deployin...]]></description>
            <content:encoded><![CDATA[<p>Today, we are excited to announce <strong>Duality Focus</strong>: a money market where Uniswap V3 liquidity positions are accepted as collateral. Focus allows V3 range holders to borrow stablecoins and other assets while continuing to earn fees, increasing net borrowing power and capital efficiency.</p><p>On top of this core functionality, we’ve built best-in-class position management features. For example, those confident in their range selections can &quot;focus&quot; their position, instantly borrowing assets and deploying them into the same range. This happens atomically - one click and your range is now earning fees with leverage.</p><p><strong>Our full list of LP management features includes:</strong></p><ul><li><p>Focus: One-click borrowing and depositing into a collateral range</p></li><li><p>Repay: One-click unwinding of debt - pay from your wallet or directly from a collateral range, can be used to unwind a focused position</p></li><li><p>Compound: One-click compounding of collected fees into the range itself</p></li><li><p>Move: One-click moving of a collateral V3 range to new ticks, without debt repayment</p></li></ul><p>We utilize deferred liquidity checks so the user can do the above without extra steps like supplying additional collateral or repaying debt.</p><p><strong>We’ll be launching Focus V1 in a few weeks.</strong> <strong>V1 is an early, unaudited beta, with the following restrictions:</strong></p><ul><li><p>Polygon only - for a beta release, we found it to be the most widely accessible option with sufficient Uniswap V3 liquidity</p></li><li><p>Supply and borrow caps on ERC-20 funds</p></li><li><p>Whitelist of supported Uniswap V3 pools as collateral</p></li><li><p>“Move” functionality will not be immediately supported on frontend</p></li></ul><p>Future frontend and product updates will follow - we plan to support every chain Uniswap V3 is deployed on. We&apos;re very excited about the potential of focused ranges to push active LP management to new heights.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ca9f912a15ffb47b80ee869e67c0c48491e8b165b08b453d9b60a148101d112e.png" alt="Stay focused, my frens" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Stay focused, my frens</figcaption></figure><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/DualityFi">Twitter</a> and join our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/6TvJNG96dt">Discord</a> for more updates as we get closer to launch!</p><p>————————————————————</p><p>Today, our top priority is building Focus to empower Uniswap V3 LPs through capital efficiency and position management.</p><p>But we have bigger plans. Much of the future of DeFi will be driven by three sectors: AMMs, on-chain derivatives, and structured products. Each of these areas are primed for massive growth:</p><ol><li><p>New AMMs are bootstrapping nascent DeFi ecosystems on every Layer 1 and Layer 2. In parallel, we are seeing rapid innovation in AMM design.</p></li><li><p>Crypto derivative markets are still tiny compared to spot markets, considering the equivalent ratio in TradFi. We expect this ratio to grow by several orders of magnitude.</p></li><li><p>Where there are successful derivatives, there are structured products. They are a perfect example of DeFi’s transparent, permissionless composability, and ideas like option vaults have shown that structured products can have massive product-market fit.</p></li></ol><p>At Duality, we see many opportunities to build within and across these spaces. We’re looking to create sustainable, unquestionably useful DeFi products - something we don’t see enough of today. If you’re a bold and curious crypto native, we want you in our community. Join us in building a lasting DeFi legacy.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/DualityFi">Twitter</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/6TvJNG96dt">Discord</a></p>]]></content:encoded>
            <author>duality@newsletter.paragraph.com (Duality ☯️)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/26977c5041bcc736fb1e1c6f96821267946e269120a0dd0cea759332769865de.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>