model

package
v0.0.0-...-7abe34b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const MAX_APR_CAP = 10.0
View Source
const MIN_NUMERIC_STABLE_FLOW = 1000

Variables

This section is empty.

Functions

func DeriveLiquidityFromConcFlow

func DeriveLiquidityFromConcFlow(baseFlow float64, quoteFlow float64,
	bidTick int, askTick int) float64

func DeriveTokensFromAmbLiquidity

func DeriveTokensFromAmbLiquidity(liquidity float64, price float64) (baseTokens *big.Int, quoteTokens *big.Int)

func DeriveTokensFromConcLiquidity

func DeriveTokensFromConcLiquidity(liquidity float64, bidTick int, askTick int, price float64) (baseTokens *big.Int, quoteTokens *big.Int)

Types

type APRCalcResult

type APRCalcResult struct {
	Duration       float64 `json:"aprDuration"`
	PostLiqPos     float64 `json:"aprPostLiq"`
	ContributedLiq float64 `json:"aprContributedLiq"`
	Apr            float64 `json:"aprEst"`
}

type AccumPoolStats

type AccumPoolStats struct {
	LatestTime     int     `json:"latestTime"`
	BaseTvl        float64 `json:"baseTvl"`
	QuoteTvl       float64 `json:"quoteTvl"`
	BaseVolume     float64 `json:"baseVolume"`
	QuoteVolume    float64 `json:"quoteVolume"`
	BaseFees       float64 `json:"baseFees"`
	QuoteFees      float64 `json:"quoteFees"`
	LastPriceSwap  float64 `json:"lastPriceSwap"`
	LastPriceLiq   float64 `json:"lastPriceLiq"`
	LastPriceIndic float64 `json:"lastPriceIndic"`
	FeeRate        float64 `json:"feeRate"`
}

func (*AccumPoolStats) Accumulate

func (a *AccumPoolStats) Accumulate(e tables.AggEvent)

type Candle

type Candle struct {
	PriceOpen    float64 `json:"priceOpen"`
	PriceClose   float64 `json:"priceClose"`
	MinPrice     float64 `json:"minPrice"`
	MaxPrice     float64 `json:"maxPrice"`
	VolumeBase   float64 `json:"volumeBase"`
	VolumeQuote  float64 `json:"volumeQuote"`
	TvlBase      float64 `json:"tvlBase"`
	TvlQuote     float64 `json:"tvlQuote"`
	FeeRateOpen  float64 `json:"feeRateOpen"`
	FeeRateClose float64 `json:"feeRateClose"`
	Period       int     `json:"period"`
	Time         int     `json:"time"`
}

func CombineHourlyCandles

func CombineHourlyCandles(candles []Candle, hours int, startTime int, endTime int, n int) []Candle

Given a list of hourly candles, combine them into a list of `n` candles with `hours*3600` period from `startTime` to `endTime`.

type CandleBuilder

type CandleBuilder struct {
	// contains filtered or unexported fields
}

func NewCandleBuilder

func NewCandleBuilder(startTime int, period int, open AccumPoolStats) *CandleBuilder

func (*CandleBuilder) Close

func (c *CandleBuilder) Close(endTime int) []Candle

func (*CandleBuilder) Increment

func (c *CandleBuilder) Increment(accum AccumPoolStats)

type HistoryWriter

type HistoryWriter struct {
	// contains filtered or unexported fields
}

func NewHistoryWriter

func NewHistoryWriter(netCfg loader.NetworkConfig, commitFn func(types.PoolTxEvent)) *HistoryWriter

func (*HistoryWriter) CommitLiqChange

func (h *HistoryWriter) CommitLiqChange(s tables.LiqChange)

func (*HistoryWriter) CommitSwap

func (h *HistoryWriter) CommitSwap(s tables.Swap)

type KnockoutLiquiditySeries

type KnockoutLiquiditySeries struct {
	Active        PositionLiquidity
	KnockedOut    map[int]*PositionLiquidity
	TimeFirstMint int
	// contains filtered or unexported fields
}

func (*KnockoutLiquiditySeries) GetActiveLiq

func (k *KnockoutLiquiditySeries) GetActiveLiq() (activeLiq *big.Int)

func (*KnockoutLiquiditySeries) UpdateActiveLiq

func (k *KnockoutLiquiditySeries) UpdateActiveLiq(liqQty big.Int, refreshTime int64)

func (*KnockoutLiquiditySeries) UpdatePostKOLiq

func (k *KnockoutLiquiditySeries) UpdatePostKOLiq(pivotTime int, liqQty big.Int, refreshTime int64)

type KnockoutPivotCands

type KnockoutPivotCands struct {
	PivotTime int
	User      types.EthAddress
}

type KnockoutSaga

type KnockoutSaga struct {
	// contains filtered or unexported fields
}

func NewKnockoutSaga

func NewKnockoutSaga() *KnockoutSaga

func (*KnockoutSaga) ForUser

func (k *KnockoutSaga) ForUser(user types.EthAddress) *KnockoutSubplot

func (*KnockoutSaga) UpdateCross

func (k *KnockoutSaga) UpdateCross(l tables.LiqChange) []KnockoutPivotCands

type KnockoutSagaCross

type KnockoutSagaCross struct {
	CrossTime int
	PivotTime int
}

type KnockoutSagaTx

type KnockoutSagaTx struct {
	TxTime    int
	TxHash    string
	PivotTime int
}

type KnockoutSubplot

type KnockoutSubplot struct {
	Mints []KnockoutSagaTx
	Burns []KnockoutSagaTx

	Liq              KnockoutLiquiditySeries
	LatestUpdateTime int
	// contains filtered or unexported fields
}

func (*KnockoutSubplot) AppendBurn

func (k *KnockoutSubplot) AppendBurn(burn KnockoutSagaTx)

func (*KnockoutSubplot) AppendMint

func (k *KnockoutSubplot) AppendMint(mint KnockoutSagaTx)

func (*KnockoutSubplot) GetCrossForPivotTime

func (k *KnockoutSubplot) GetCrossForPivotTime(pivotTime int) (int, bool)

func (*KnockoutSubplot) IsActiveEmpty

func (k *KnockoutSubplot) IsActiveEmpty() bool

func (*KnockoutSubplot) Time

func (k *KnockoutSubplot) Time() int

func (*KnockoutSubplot) UpdateLiqChange

func (k *KnockoutSubplot) UpdateLiqChange(l tables.LiqChange) ([]KnockoutPivotCands, bool)

type LiquidityBump

type LiquidityBump struct {
	Tick             int     `json:"bumpTick"`
	LiquidityDelta   float64 `json:"liquidityDelta"`
	KnockoutBidLiq   float64 `json:"knockoutBidLiq"`
	KnockoutAskLiq   float64 `json:"knockoutAskLiq"`
	KnockoutBidWidth int     `json:"knockoutBidWidth"`
	KnockoutAskWidth int     `json:"knockoutAskWidth"`
	LatestUpdateTime int     `json:"latestUpdateTime"`
}

func (*LiquidityBump) IncrKOAsk

func (b *LiquidityBump) IncrKOAsk(liqDelta float64, joinTick int)

func (*LiquidityBump) IncrKOBid

func (b *LiquidityBump) IncrKOBid(liqDelta float64, joinTick int)

func (*LiquidityBump) IncrLiquidity

func (b *LiquidityBump) IncrLiquidity(liqDelta float64, time int)

func (*LiquidityBump) KnockoutAsk

func (b *LiquidityBump) KnockoutAsk(time int) (float64, int)

func (*LiquidityBump) KnockoutBid

func (b *LiquidityBump) KnockoutBid(time int) (float64, int)

type LiquidityCurve

type LiquidityCurve struct {
	AmbientLiq float64
	Bumps      map[int]*LiquidityBump
}

func NewLiquidityCurve

func NewLiquidityCurve() *LiquidityCurve

func (*LiquidityCurve) UpdateLiqChange

func (c *LiquidityCurve) UpdateLiqChange(l tables.LiqChange)

type LiquidityDelta

type LiquidityDelta struct {
	Time      int
	LiqChange float64
	// contains filtered or unexported fields
}

type LiquidityDeltaHist

type LiquidityDeltaHist struct {
	Hist []LiquidityDelta `json:"hist"`
}

type PoolTradingHistory

type PoolTradingHistory struct {
	StatsCounter AccumPoolStats
	TimeSnaps    []AccumPoolStats
}

func NewPoolTradingHistory

func NewPoolTradingHistory() *PoolTradingHistory

func (*PoolTradingHistory) Len

func (h *PoolTradingHistory) Len() int

func (*PoolTradingHistory) NextEvent

func (h *PoolTradingHistory) NextEvent(r tables.AggEvent)

func (*PoolTradingHistory) SetInitPrice

func (h *PoolTradingHistory) SetInitPrice(price float64)

type PositionLiquidity

type PositionLiquidity struct {
	AmbientLiq  big.Int `json:"ambientLiq"`
	ConcLiq     big.Int `json:"concLiq"`
	RewardLiq   big.Int `json:"rewardLiq"`
	RefreshTime int64   `json:"liqRefreshTime"`
}

func (*PositionLiquidity) IsConcentrated

func (p *PositionLiquidity) IsConcentrated() bool

func (*PositionLiquidity) IsEmpty

func (p *PositionLiquidity) IsEmpty() bool

type PositionTracker

type PositionTracker struct {
	TimeFirstMint    int            `json:"timeFirstMint"`
	LatestUpdateTime int            `json:"latestUpdateTime"`
	LastMintTx       string         `json:"lastMintTx"`
	FirstMintTx      string         `json:"firstMintTx"`
	PositionType     tables.PosType `json:"positionType"`
	PositionLiquidity
	LiqHist LiquidityDeltaHist `json:"-"`
}

func (*PositionTracker) CalcAPR

func (*PositionTracker) Time

func (p *PositionTracker) Time() int

func (*PositionTracker) UpdateAmbient

func (p *PositionTracker) UpdateAmbient(liq big.Int)

func (*PositionTracker) UpdatePosition

func (p *PositionTracker) UpdatePosition(l tables.LiqChange)

func (*PositionTracker) UpdateRange

func (p *PositionTracker) UpdateRange(liq big.Int, rewardsLiq big.Int)

func (*PositionTracker) UpdateRangeRewards

func (p *PositionTracker) UpdateRangeRewards(rewardsLiq big.Int)

type RunningCandle

type RunningCandle struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳