UniswapV3RoutingState#

tradeexecutor.ethereum.uniswap_v3.uniswap_v3_routing.UniswapV3RoutingState Python class in Trading Strategy framework.

class UniswapV3RoutingState[source]#

Bases: EthereumRoutingState

__init__(pair_universe, tx_builder=None, swap_gas_limit=2000000)[source]#
Parameters:
  • pair_universe (PandasPairUniverse) – Pairs we trade

  • tx_builder (Optional[HotWalletTransactionBuilder]) –

    For creating trade transactions.

    Can be set to None on DummyExecutionModel.

  • web3

    Use for routing smart contract reads.

    Given when tx_builder is not present.

  • swap_gas_limit – What is the max gas we are willing to pay for a swap.

Methods

__init__(pair_universe[, tx_builder, ...])

param pair_universe:

adjust_spend(asset, required_amount[, epsilon])

Check that our on-chain balances have enough tokens to cover the trade.

check_has_enough_tokens(erc_20, amount)

Check we have enough buy side tokens to do a trade.

create_signed_transaction(contract, ...)

ensure_token_approved(token_address, ...)

Make sure we have ERC-20 approve() for the trade

get_uniswap_for_pair(address_map, target_pair)

Get a router for a trading pair.

is_approved_on_chain(token_address, ...)

is_route_approved(router_address)

mark_router_approved(token_address, ...)

trade_on_router_three_way(uniswap, ...[, ...])

Prepare the actual swap for three way trade.

trade_on_router_two_way(uniswap, ...[, ...])

Prepare the actual swap.

validate_exchange(target_pair, intermediary_pair)

Check routing happens on the same exchange

validate_pairs(target_pair, intermediary_pair)

Check we can chain two pairs

Attributes

__init__(pair_universe, tx_builder=None, swap_gas_limit=2000000)[source]#
Parameters:
  • pair_universe (PandasPairUniverse) – Pairs we trade

  • tx_builder (Optional[HotWalletTransactionBuilder]) –

    For creating trade transactions.

    Can be set to None on DummyExecutionModel.

  • web3

    Use for routing smart contract reads.

    Given when tx_builder is not present.

  • swap_gas_limit – What is the max gas we are willing to pay for a swap.

get_uniswap_for_pair(address_map, target_pair)[source]#

Get a router for a trading pair.

Parameters:
Return type:

UniswapV3Deployment

trade_on_router_two_way(uniswap, target_pair, reserve_asset, reserve_amount, max_slippage, check_balances, asset_deltas=None)[source]#

Prepare the actual swap. Same for Uniswap V2 and V3.

Parameters:
trade_on_router_three_way(uniswap, target_pair, intermediary_pair, reserve_asset, reserve_amount, max_slippage, check_balances, asset_deltas=None)[source]#

Prepare the actual swap for three way trade.

Parameters: