one_delta.price

Documentation for eth_defi.one_delta.price Python module.

1delta price calculations.

See Uniswap v3 historical price estimation tutorial.

Helpers to calculate

Functions

estimate_buy_received_amount(...[, ...])

Estimate how much we receive for buying with a certain quote token amount.

estimate_sell_received_amount(...[, ...])

Estimate how much we receive for selling a certain base token amount.

Classes

OneDeltaPriceHelper

Internal helper class for price calculations.

class OneDeltaPriceHelper

Bases: object

Internal helper class for price calculations.

__init__(one_delta)
Parameters

one_delta (eth_defi.one_delta.deployment.OneDeltaDeployment) –

get_amount_out(amount_in, path, fees, exchange=Exchange.UNISWAP_V3, *, slippage=0, block_identifier=None)

Get how much token we are going to receive.

Parameters
Return type

int

get_amount_in(amount_out, path, fees, exchange=Exchange.UNISWAP_V3, *, slippage=0, block_identifier=None)

Get how much token we are going to spend.

Parameters
Return type

int

estimate_buy_received_amount(one_delta_deployment, base_token_address, quote_token_address, quantity, target_pair_fee, *, slippage=0, intermediate_token_address=None, intermediate_pair_fee=None, block_identifier=None, verbose=False)

Estimate how much we receive for buying with a certain quote token amount.

Example:

# Estimate the price of buying 1650 USDC worth of ETH
eth_received = estimate_buy_received_amount(
    one_delta_deployment,
    weth.address,
    usdc.address,
    1650 * 10**18,
    500,
)

assert eth_received / (10**18) == pytest.approx(0.9667409780905836)

# Calculate price of ETH as $ for our purchase
price = (1650 * 10**18) / eth_received
assert price == pytest.approx(Decimal(1706.7653460381143))
Parameters
Returns

Expected base token amount to receive

Raises

TokenDetailError – If we have an issue with ERC-20 contracts

Return type

int | tuple[int, int]

estimate_sell_received_amount(one_delta_deployment, base_token_address, quote_token_address, quantity, target_pair_fee, *, slippage=0, intermediate_token_address=None, intermediate_pair_fee=None, block_identifier=None, verbose=False)

Estimate how much we receive for selling a certain base token amount.

See example in eth_defi.one_delta.price.

Parameters
Returns

Expected quote token amount to receive

Raises

TokenDetailError – If we have an issue with ERC-20 contracts

Return type

int | tuple[int, int]