Skip to content

sverps/defi-sim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Defi Simulator tools

Goal

This package provides tools to simulate Uniswap V3 liquidity positions in different scenarios.

Install

npm i defi-sim

or

yarn add defi-sim

Uniswap V3 simulation

Concentrated liquidity works by providing a price range in which the capital provided for the position is active. At one end of the price range, the balance of a position will consist entirely of token X. At the other end of the price range, the entire balance of a position will consist of token Y. The advantage is an increased capital efficiency (i.e. a reduction in price swings for the same capital, compared to clasical AMMs).

Docs

Documentation can be found here: https://sverps.github.io/defi-sim/

Code example

import { ConcentratedLiquidityPool } from "defi-sim";

// Initialize a liquidity pool with an initial price of 1500 and a fee rate of 0.3%
const liquidityPool = new ConcentratedLiquidityPool({
  initialPrice: 1500,
  feeRate: 0.003,
});

// Add some liquidity in the price range
const position = liquidityPool.enterPosition({
  balance: { x: 10, y: 15000 },
  range: [1500 / 1.1, 1500 * 1.1],
});

// Let's make a trade occur that moves the price to 1650 (the end of the range)
liquidityPool.movePrice(1650);

// The entire balance will now be in token Y
console.log(position.balance); // { x: 0, y: 30732.132722552284 }

// The position was awarded about 47 Y tokens, which are the trade fee of 0.3% of the 15779 Y tokens that
// the trader needed to spend to buy the whole balance of X tokens
console.log(position.rewards); // { x: 0, y: 47.33841340788045 }

// Lets exit the position from the pool
const finalBalance = liquidityPool.exitPosition(position.id);

// The final balance should yield the position balance plus its rewards
console.log(finalBalance); // { x: 0, y: 30779.471135960164 }

About

Simulate defi protocols with javascript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published