API Reference — Operations¶
financepype.operations.fees¶
FeeImpactType¶
class FeeImpactType(Enum)
| Value | Description |
|---|---|
ADDED_TO_COSTS |
Fee increases operation cost |
DEDUCTED_FROM_RETURNS |
Fee reduces operation returns |
FeeType¶
class FeeType(Enum)
| Value | Description |
|---|---|
PERCENTAGE |
Fee as a % of operation amount (≤ 100) |
ABSOLUTE |
Fixed fee amount |
OperationFee¶
class OperationFee(BaseModel)
| Field | Type | Constraint | Description |
|---|---|---|---|
amount |
Decimal |
>= 0 |
Fee amount |
asset |
Asset \| None |
Fee denomination asset | |
fee_type |
FeeType |
Calculation method | |
impact_type |
FeeImpactType |
How it impacts the trade |
Validator: validate_fee — rejects percentage > 100.
financepype.operations.operation¶
Operation¶
class Operation(BaseModel) [abstract]
Base for all trading operations. Uses ConfigDict(arbitrary_types_allowed=True).
Fields
| Field | Type | Default | Description |
|---|---|---|---|
client_operation_id |
str |
required | Client-assigned ID |
operator_operation_id |
Any \| None |
None |
Exchange/chain-assigned ID |
owner_identifier |
OwnerIdentifier |
required | Account owner |
creation_timestamp |
float |
required | Unix timestamp at creation |
last_update_timestamp |
float |
0.0 |
Last state change time |
current_state |
Any |
required | Current lifecycle state |
other_data |
dict[str, Any] |
{} |
Extra data |
operator_operation_id_update_event |
asyncio.Event |
Event() |
Async signal for ID update |
Methods
| Method | Signature | Description |
|---|---|---|
update_operator_operation_id |
(id: Any) -> None |
Set operator ID once; raises if changing |
process_operation_update |
(update: Any) -> bool [abstract] |
Process a state update |
financepype.operations.proposal¶
OperationProposal¶
class OperationProposal(BaseModel, ABC)
Pre-trade cost/return estimation. ConfigDict(arbitrary_types_allowed=True).
Fields
| Field | Type | Description |
|---|---|---|
purpose |
str |
Why this operation is being proposed |
client_id_prefix |
str |
Optional prefix for client IDs |
potential_costs |
dict[Asset, Decimal] \| None |
Estimated costs per asset |
potential_returns |
dict[Asset, Decimal] \| None |
Estimated returns per asset |
potential_fees |
list[OperationFee] \| None |
Estimated fees |
potential_total_costs |
dict[Asset, Decimal] \| None |
Total costs including fees |
potential_total_returns |
dict[Asset, Decimal] \| None |
Total returns after fees |
executed_operation |
Operation \| None |
Set when executed |
Properties
initialized -> bool— True ifpotential_costsis not Noneexecuted -> bool— True ifexecuted_operationis not None
Methods
| Method | Description |
|---|---|
update_proposal() -> None |
Run all calculation phases |
_prepare_update() [abstract] |
Pre-calculation hook |
_update_costs() [abstract] |
Populate potential_costs |
_update_fees() [abstract] |
Populate potential_fees |
_update_returns() [abstract] |
Populate potential_returns |
_update_totals() [abstract] |
Populate potential_total_costs/returns |
financepype.operations.tracker¶
OperationTracker¶
class OperationTracker
Class Attributes
| Attribute | Value | Description |
|---|---|---|
MAX_CACHE_SIZE |
1000 |
Max cached operations |
CACHED_OPERATION_TTL |
30.0 |
Seconds to keep in cache |
Constructor
OperationTracker(
event_publishers: list[MultiPublisher],
lost_operation_count_limit: int = 3,
)
Properties
| Property | Type | Description |
|---|---|---|
active_operations |
dict[str, Operation] |
Currently tracked |
cached_operations |
dict[str, Operation] |
Recently completed |
lost_operations |
dict[str, Operation] |
Failed/lost |
all_updatable_operations |
dict[str, Operation] |
Active + lost |
all_operations |
dict[str, Operation] |
All three buckets |
Tracking Methods
| Method | Signature | Description |
|---|---|---|
start_tracking_operation |
(operation: Operation) -> None |
Add to active |
stop_tracking_operation |
(client_id: str) -> None |
Move to cache |
restore_tracking_states |
(states: dict) -> None |
Restore from saved state |
Fetch Methods
| Method | Signature | Description |
|---|---|---|
fetch_operation |
(client_id?, operator_id?, operations?) -> Operation \| None |
General search |
fetch_tracked_operation |
(client_id?, operator_id?) -> Operation \| None |
Search active |
fetch_cached_operation |
(client_id?, operator_id?) -> Operation \| None |
Search cache |
fetch_updatable_operation |
(client_id?, operator_id?) -> Operation \| None |
Search active+lost |
Update Methods
update_operator_operation_id(client_id, operator_id) -> Operation | None
Event Methods
trigger_event(event_publication, event) -> None— publishes to all registered publishers