BalanceUpdate#

API documentation for tradeexecutor.state.balance_update.BalanceUpdate Python class in Trading Strategy framework.

class BalanceUpdate[source]#

Bases: object

Processed balance update event.

Events that are generated on

Events are stored in TradingPosition and ReservePosition by their id.

Events are referred in tradeexecutor.sync.Treasury.

__init__(balance_update_id, cause, position_type, asset, block_mined_at, strategy_cycle_included_at, chain_id, quantity, old_balance, usd_value, created_at=<factory>, previous_update_at=None, owner_address=None, tx_hash=None, log_index=None, position_id=None, notes=None, block_number=None)#
Parameters:
Return type:

None

Methods

__init__(balance_update_id, cause, ...[, ...])

from_dict(kvs, *[, infer_missing])

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

get_effective_yearly_yield([year])

How much we are gaining % yearly.

get_update_period()

How long it was between this event and previous sync event.

is_reserve_update()

Return whether this event updates reserve balance or open position balance

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

to_dict([encode_json])

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

Attributes

block_number

Block number related to the event.

log_index

Log that updated the balance

notes

Human-readable notes regarding this event

owner_address

Investor address that the balance update is related to

position_id

If this update was for open position

previous_update_at

What was the event time of the previous update.

tx_hash

Transaction that updated the balance

balance_update_id

Allocated from portfolio

cause

What caused the balance update event to happen

position_type

What kind of position this event modified

asset

Asset that was updated

block_mined_at

When the balance event was generated

strategy_cycle_included_at

When balance event was included to the strategy's treasury.

chain_id

Chain that updated the balance

quantity

What was delta of the asset.

old_balance

What was the total of the asset in the position before this event was applied.

usd_value

How much this deposit/redemption was worth

created_at

Wall clock time when this event was created

balance_update_id: int#

Allocated from portfolio

This id is referred in tradeexecutor.state.position.TradingPosition and tradeexecutor.state.reserve.ReservePosition

cause: BalanceUpdateCause#

What caused the balance update event to happen

position_type: BalanceUpdatePositionType#

What kind of position this event modified

asset: AssetIdentifier#

Asset that was updated

If this an interest event, this is aToken/vToken asset

block_mined_at: datetime#

When the balance event was generated

The block mined timestamp

strategy_cycle_included_at: datetime.datetime | None#

When balance event was included to the strategy’s treasury.

The strategy cycle timestamp.

It might be outside the cycle frequency if treasuries were processed in a cron job outside the cycle for slow moving strategies.

For accounting corrections this is set to None.

chain_id: int#

Chain that updated the balance

quantity: Decimal#

What was delta of the asset.

Positive for deposits, negative for redemptions.

old_balance: Decimal#

What was the total of the asset in the position before this event was applied.

usd_value: float#

How much this deposit/redemption was worth

Used for deposit/redemption inflow/outflow calculation. This is the asset value from our internal price keeping at the time of the event.

created_at: datetime.datetime | None#

Wall clock time when this event was created

previous_update_at: datetime.datetime | None = None#

What was the event time of the previous update.

This allows us to calculate the effective interest rate between the update cycles.

This is the same as block_mined_at of the previous event.

owner_address: Optional[str] = None#

Investor address that the balance update is related to

tx_hash: Optional[str] = None#

Transaction that updated the balance

Set None for interested calculation updates

log_index: Optional[int] = None#

Log that updated the balance

Set None for interest rate updates

position_id: Optional[int] = None#

If this update was for open position

Set None for reserve updates

notes: Optional[str] = None#

Human-readable notes regarding this event

block_number: int | None = None#

Block number related to the event.

Not always available.

is_reserve_update()[source]#

Return whether this event updates reserve balance or open position balance

Return type:

bool

get_update_period()[source]#

How long it was between this event and previous sync event.

Returns:

None if only inital update made

Return type:

datetime.timedelta | None

get_effective_yearly_yield(year=datetime.timedelta(days=365))[source]#

How much we are gaining % yearly.

  • Based on the this balance update and the previous balance update

  • Mostly useful for interest rate events

  • Calculated in tokens (exchange rate immune)

Returns:

1-based interest.

E.g. 1.02 for 2% yearly gained interest. 0.9 for 10% yearly paid interest.

Positive if we are gaining interest, negative if we are paying interest.

None if no update period available

Return type:

float | None

__init__(balance_update_id, cause, position_type, asset, block_mined_at, strategy_cycle_included_at, chain_id, quantity, old_balance, usd_value, created_at=<factory>, previous_update_at=None, owner_address=None, tx_hash=None, log_index=None, position_id=None, notes=None, block_number=None)#
Parameters:
Return type:

None