TradePricing#

tradeexecutor.strategy.trade_pricing.TradePricing Python class in Trading Strategy framework.

class TradePricing[source]#

Bases: object

Describe price results for a price query.

  • Each price result is tied to quantiy/amount

  • Each price result gets a split that describes liquidity provider fees

A helper class to deal with problems of accounting and estimation of prices on Uniswap like exchange.

__init__(price, mid_price, lp_fee=None, pair_fee=None, market_feed_delay=None, side=None, path=None)#
Parameters:
Return type:

None

Methods

__init__(price, mid_price[, lp_fee, ...])

from_dict(kvs, *[, infer_missing])

from_json(s, *[, parse_float, parse_int, ...])

get_fee_percentage()

Returns a single decimal value for the percentage of fees paid.

get_total_lp_fees()

Returns the total lp fees paid (dollars) for the trade.

schema(*[, infer_missing, only, exclude, ...])

to_dict([encode_json])

to_json(*[, skipkeys, ensure_ascii, ...])

Attributes

price

The price we expect this transaction to clear.

mid_price

The theoretical market price during the transaction.

lp_fee

How much liquidity provider fees we are going to pay on this trade.

pair_fee

What was the LP fee % used as the base of the calculations.

market_feed_delay

How old price data we used for this estimate

side

Is this buy or sell trade.

path

Path of the trade One trade can have multiple swaps if there is an intermediary pair.

price: float#

The price we expect this transaction to clear.

This price has LP fees already deducted away from it. It may or may not include price impact if liquidity data was available for the pricing model.

mid_price: float#

The theoretical market price during the transaction.

This is the (ask price + bid price) / 2 order book price that no one can obtain.

No LP fees, price impact, etc. are included in this price. It can be used as a basis for other fee estimation calculations.

See mid price for more information.

lp_fee: Optional[list[float]]#

How much liquidity provider fees we are going to pay on this trade.

Set to None if data is not available.

pair_fee: Optional[list[float]]#

What was the LP fee % used as the base of the calculations.

market_feed_delay: Optional[timedelta]#

How old price data we used for this estimate

side: Optional[bool]#

Is this buy or sell trade.

True for buy. False for sell. None for Unknown.

path: Optional[List[TradingPairIdentifier]]#

Path of the trade One trade can have multiple swaps if there is an intermediary pair.

get_total_lp_fees()[source]#

Returns the total lp fees paid (dollars) for the trade.

get_fee_percentage()[source]#

Returns a single decimal value for the percentage of fees paid. This calculation represents the average of all the pair fees. Calculation is the same for v2 and v3.

Calculation:

-> x(1 - fee0)(1 - fee1) = x(1 - fee) -> (1 - fee0)(1 - fee1) = (1 - fee) -> fee = 1 - (1 - fee0)(1 - fee1)

__init__(price, mid_price, lp_fee=None, pair_fee=None, market_feed_delay=None, side=None, path=None)#
Parameters:
Return type:

None