feat: yaml files for llm reasoning
This commit is contained in:
parent
50599d7cee
commit
72778b65b5
|
|
@ -0,0 +1,149 @@
|
||||||
|
source_file: ./trader.py
|
||||||
|
schema_version: v1.1
|
||||||
|
|
||||||
|
factual_summary: >
|
||||||
|
Implements the execution component responsible for placing and managing
|
||||||
|
long and short trades, including associated hedge operations, across
|
||||||
|
supported exchanges. Maintains order book state, open positions, fees,
|
||||||
|
and profit and loss tracking while supporting both live trading and
|
||||||
|
backtesting modes.
|
||||||
|
|
||||||
|
methods:
|
||||||
|
_getBracket(exch: str, sym: str) -> List[]:
|
||||||
|
description: >
|
||||||
|
Retrieves the current bid and ask information for a given symbol
|
||||||
|
on a specified exchange using maintained order book state.
|
||||||
|
|
||||||
|
startBidding(exch: str, sym: str, ts: float, entryPrice: float or None) -> None:
|
||||||
|
description: >
|
||||||
|
Used in the Strat class to update the entry price of a symbol on a particular exchange. Logic for updating the
|
||||||
|
entry price is contained there.
|
||||||
|
|
||||||
|
stopBidding(exch: str, sym: str, ts: float) -> None:
|
||||||
|
description: >
|
||||||
|
Halts the bidding by removing the order from the limitBuy dictionary.
|
||||||
|
|
||||||
|
updateBracket(exch: str, sym: str, bidQuote: float, askQuote: float) -> None:
|
||||||
|
description: >
|
||||||
|
Updates the bracketed strings in our brackets dictionary.
|
||||||
|
|
||||||
|
startOffering(exch: str, sym: str, ts: float, entryPrice: float or None) -> None:
|
||||||
|
description: >
|
||||||
|
Executes the trades when we are going short.
|
||||||
|
|
||||||
|
stopOffering(exch: str, sym: str, ts: float) -> None:
|
||||||
|
description: >
|
||||||
|
Stops the short position.
|
||||||
|
|
||||||
|
logIntradayPnl(val: float) -> None:
|
||||||
|
description: >
|
||||||
|
Updates the value of our account to our pnl database
|
||||||
|
|
||||||
|
fpnl() -> None:
|
||||||
|
description: >
|
||||||
|
Returns a list of floating profit and loss summaries
|
||||||
|
|
||||||
|
posCounts() -> dict:
|
||||||
|
description: >
|
||||||
|
Returns a python dictionary of the total positions we have on each exchange.
|
||||||
|
|
||||||
|
logFee(fee: float) -> None:
|
||||||
|
description: >
|
||||||
|
Updates our fees in our database
|
||||||
|
|
||||||
|
posValueAtExchOld(exch: str, sym: str) -> int:
|
||||||
|
description: >
|
||||||
|
Calculates the values of the long and short positions.
|
||||||
|
|
||||||
|
fpnlnotional() -> int:
|
||||||
|
description: >
|
||||||
|
This method calculates the profit/loss (P&L) based on the notional value of long and short positions for each
|
||||||
|
unique symbol across different exchanges. It computes the average price of long positions, sums the notional
|
||||||
|
values of both long and short positions, and then uses these to compute the P&L.
|
||||||
|
|
||||||
|
fillLong(exch: str, sym: str, price: float, quan: float, ts: int, tag: str, feeType: str) -> None:
|
||||||
|
description: >
|
||||||
|
The fillLong method handles the process of filling a buy order for a specified asset on an exchange. It updates
|
||||||
|
the trader's position with the new quantity and calculates the average price if necessary. If there was a short
|
||||||
|
position, it also calculates the profit/loss from buying back some or all of the shorted amount. Additionally,
|
||||||
|
it logs the trade, applies fees, and ensures data integrity by asserting non-negative values.
|
||||||
|
|
||||||
|
fillShort(exch: str, sym: str, price: float, quan: float, ts: int, tag: str, feeType: str) -> None:
|
||||||
|
description: >
|
||||||
|
The fillShort method handles the process of filling a sell order for a specified asset on an exchange. It updates
|
||||||
|
the trader's position with the new quantity and calculates the average price if necessary. If there was a long
|
||||||
|
position, it also calculates the profit/loss from selling some or all of the held amount. Additionally, it logs
|
||||||
|
the trade, applies fees, and ensures data integrity by asserting non-negative values.
|
||||||
|
|
||||||
|
hedgeLong(exch: str, sym: str, price: float, quan: float, ts: int, force: bool) -> Exchange:
|
||||||
|
description: >
|
||||||
|
The hedgeLong method finds an appropriate exchange to hedge a long position by executing a corresponding sell
|
||||||
|
order. It iterates over possible exchanges, calculates adjusted bid prices based on offsets, and selects the
|
||||||
|
highest bid price for execution. If no suitable exchange is found without forcing, it forces hedging. The method
|
||||||
|
ensures that the hedge does not exceed maximum allowed positions and logs relevant information throughout the
|
||||||
|
process.
|
||||||
|
|
||||||
|
hedgeShort(exch: str, sym: str, price: float, quan: float, ts: int, force: bool) -> Exchange:
|
||||||
|
description: >
|
||||||
|
The hedgeShort method finds an appropriate exchange to hedge a short position by executing a corresponding buy
|
||||||
|
order. It iterates over possible exchanges, calculates adjusted ask prices based on offsets, and selects the
|
||||||
|
lowest ask price for execution. If no suitable exchange is found without forcing, it forces hedging. The method
|
||||||
|
ensures that the hedge does not exceed maximum allowed positions and logs relevant information throughout the
|
||||||
|
process.
|
||||||
|
|
||||||
|
processTrade(exch: str, sym: str, price: float, tradeDir: list) -> None:
|
||||||
|
description: >
|
||||||
|
The first half of the processTrade method handles the scenario where a market sell order results in hitting a
|
||||||
|
limit buy order. It processes the fill, hedges the position, and logs various portfolio and holdings-related
|
||||||
|
details. The second half of the processTrade method handles the scenario where a market buy order results in
|
||||||
|
hitting a limit sell order. It processes the fill, hedges the position, and logs various portfolio and
|
||||||
|
holdings-related details.
|
||||||
|
|
||||||
|
|
||||||
|
interpretive_summary: >
|
||||||
|
Acts as the execution boundary between strategy decision logic and
|
||||||
|
exchange interaction, encapsulating trade placement, position tracking,
|
||||||
|
and operational mode handling. Designed to centralize execution-side
|
||||||
|
concerns such as fee application, position state, and environment-aware
|
||||||
|
behavior for live and simulated trading.
|
||||||
|
|
||||||
|
invariants:
|
||||||
|
- Trades must only be executed when trading is explicitly enabled.
|
||||||
|
- Exchange-specific state must be initialized before order execution.
|
||||||
|
- Position and profit tracking must remain consistent with executed trades.
|
||||||
|
- Execution behavior must respect live versus backtest operating modes.
|
||||||
|
|
||||||
|
tags:
|
||||||
|
domain:
|
||||||
|
- order_execution
|
||||||
|
- exchange_integration
|
||||||
|
- pnl_accounting
|
||||||
|
|
||||||
|
trading_function:
|
||||||
|
- entry_logic
|
||||||
|
- exit_logic
|
||||||
|
|
||||||
|
strategy_layer:
|
||||||
|
- execution
|
||||||
|
|
||||||
|
system_layer:
|
||||||
|
- service
|
||||||
|
|
||||||
|
intent:
|
||||||
|
- abstraction
|
||||||
|
- safety
|
||||||
|
- isolation
|
||||||
|
|
||||||
|
data_type:
|
||||||
|
- orders
|
||||||
|
- positions
|
||||||
|
- pnl
|
||||||
|
- exchanges
|
||||||
|
|
||||||
|
risk:
|
||||||
|
- capital_loss
|
||||||
|
- latency
|
||||||
|
- data_corruption
|
||||||
|
|
||||||
|
maturity:
|
||||||
|
- production
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
source_file: ./strat.py
|
||||||
|
schema_version: v1.1
|
||||||
|
|
||||||
|
factual_summary: >
|
||||||
|
Implements a market making strategy module responsible for maintaining
|
||||||
|
top-of-book state, calculating bid and ask prices using threshold-based
|
||||||
|
logic, validating tradable assets, and coordinating trade logging.
|
||||||
|
Manages exchange instances, symbol discovery across exchanges, and
|
||||||
|
runtime strategy state used for order placement and monitoring.
|
||||||
|
|
||||||
|
methods:
|
||||||
|
registerExchange(exch: str, exchInst: Exchange) -> None:
|
||||||
|
description: >
|
||||||
|
Registers an exchange instance under a named key for use by the
|
||||||
|
strategy during execution.
|
||||||
|
|
||||||
|
setMinQty(exch: str, qtyMap: dict) -> None:
|
||||||
|
description: >
|
||||||
|
Updates minimum and maximum trade quantity constraints for a given
|
||||||
|
exchange using a provided quantity mapping.
|
||||||
|
|
||||||
|
printFloating(ts: float) -> None:
|
||||||
|
description: >
|
||||||
|
Emits a formatted runtime summary of strategy activity for logging
|
||||||
|
and monitoring purposes.
|
||||||
|
|
||||||
|
bestEdgeBid(exch: str, sym: str) -> List[bool, float, bool, str, float]:
|
||||||
|
description: >
|
||||||
|
This method is designed to determine whether and where a bid should be placed based on several factors
|
||||||
|
related to market conditions and strategy rules. Its primary goal of is to calculate the optimal bid price for a
|
||||||
|
given symbol on a specific exchange, taking into account market positions, hedging strategies, trading limits,
|
||||||
|
price precision, and fee structures. Returns a collection of decision outputs including bid eligibility status,
|
||||||
|
relative pricing divergence, long-position participation, selected hedge exchange, and the computed bid price.
|
||||||
|
|
||||||
|
bestEdgeOffer(exch: str, sym: str) -> list:
|
||||||
|
description: >
|
||||||
|
The primary goal of bestEdgeOffer is to calculate the optimal offer (ask) price for a given symbol on a specific
|
||||||
|
exchange, considering market positions, hedging strategies, trading limits, price precision, fee structures.
|
||||||
|
Returns almost identical items as bestEdgeBid, but on the other side of the order book
|
||||||
|
|
||||||
|
updateTob(exch: str, sym: str, tob: dict, ts: float, force: bool) -> None:
|
||||||
|
description: >
|
||||||
|
The primary goal of the updateTob function is to update the top of the order book for quick access to perform
|
||||||
|
market making operations (bidding and selling) using the highest bid and lowest ask prices.
|
||||||
|
|
||||||
|
interpretive_summary: >
|
||||||
|
Serves as the central coordination unit for the market making strategy,
|
||||||
|
maintaining shared runtime state across exchanges and assets while
|
||||||
|
enforcing eligibility rules and operational constraints. Designed to
|
||||||
|
balance responsiveness with safety through internal validation,
|
||||||
|
rate limiting counters, and symbol qualification logic.
|
||||||
|
|
||||||
|
invariants:
|
||||||
|
- Only assets validated by runtime eligibility checks may be traded.
|
||||||
|
- Exchange instances must be registered before strategy execution.
|
||||||
|
- Top-of-book data must exist before bid or ask calculations occur.
|
||||||
|
- Rate limiting counters must accurately reflect order activity.
|
||||||
|
|
||||||
|
tags:
|
||||||
|
domain:
|
||||||
|
- market_data
|
||||||
|
- strategy_execution
|
||||||
|
- order_execution
|
||||||
|
- exchange_integration
|
||||||
|
|
||||||
|
trading_function:
|
||||||
|
- position_sizing
|
||||||
|
- entry_logic
|
||||||
|
- exit_logic
|
||||||
|
|
||||||
|
strategy_layer:
|
||||||
|
- execution
|
||||||
|
- decision
|
||||||
|
|
||||||
|
system_layer:
|
||||||
|
- engine
|
||||||
|
|
||||||
|
intent:
|
||||||
|
- orchestration
|
||||||
|
- validation
|
||||||
|
- safety
|
||||||
|
|
||||||
|
data_type:
|
||||||
|
- signals
|
||||||
|
- orders
|
||||||
|
- positions
|
||||||
|
- exchanges
|
||||||
|
|
||||||
|
risk:
|
||||||
|
- capital_loss
|
||||||
|
- latency
|
||||||
|
- data_corruption
|
||||||
|
|
||||||
|
maturity:
|
||||||
|
- production
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
# artifact_schema.yaml
|
||||||
|
schema_name: trading_code_artifact
|
||||||
|
schema_version: v1.1
|
||||||
|
description: >
|
||||||
|
Defines the structure for derived knowledge artifacts generated from
|
||||||
|
trading system source code. Artifacts capture factual structure,
|
||||||
|
interpretive intent, invariants, and validated tags for reasoning
|
||||||
|
and retrieval by the AI backend.
|
||||||
|
|
||||||
|
required_fields:
|
||||||
|
- source_file
|
||||||
|
- schema_version
|
||||||
|
- factual_summary
|
||||||
|
- tags
|
||||||
|
|
||||||
|
optional_fields:
|
||||||
|
- methods
|
||||||
|
- interpretive_summary
|
||||||
|
- invariants
|
||||||
|
- provenance
|
||||||
|
|
||||||
|
field_definitions:
|
||||||
|
|
||||||
|
source_file:
|
||||||
|
type: string
|
||||||
|
description: Relative path to the source file in the trading repository.
|
||||||
|
constraints:
|
||||||
|
- non_empty
|
||||||
|
- relative_path
|
||||||
|
|
||||||
|
schema_version:
|
||||||
|
type: string
|
||||||
|
description: Version of the artifact schema used to generate this artifact.
|
||||||
|
|
||||||
|
factual_summary:
|
||||||
|
type: text
|
||||||
|
description: >
|
||||||
|
Objective description of what the file or module does.
|
||||||
|
Focuses on responsibilities and structure, not rationale.
|
||||||
|
constraints:
|
||||||
|
- min_length: 40
|
||||||
|
- max_length: 500
|
||||||
|
- no_interpretive_language
|
||||||
|
|
||||||
|
methods:
|
||||||
|
type: object
|
||||||
|
optional: true
|
||||||
|
description: >
|
||||||
|
Optional method-level descriptions for classes or modules where
|
||||||
|
fine-grained behavioral understanding is useful.
|
||||||
|
method_definition:
|
||||||
|
signature:
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
type: text
|
||||||
|
constraints:
|
||||||
|
- no_implementation_details
|
||||||
|
- max_length: 200
|
||||||
|
|
||||||
|
interpretive_summary:
|
||||||
|
type: text
|
||||||
|
optional: true
|
||||||
|
description: >
|
||||||
|
High-level explanation of why the file exists, what architectural
|
||||||
|
role it plays, and what tradeoffs or risks it is designed to manage.
|
||||||
|
constraints:
|
||||||
|
- min_length: 40
|
||||||
|
- max_length: 500
|
||||||
|
- no_code_identifiers
|
||||||
|
|
||||||
|
invariants:
|
||||||
|
type: list
|
||||||
|
optional: true
|
||||||
|
description: >
|
||||||
|
Conditions that must always hold true for correct behavior.
|
||||||
|
item_constraints:
|
||||||
|
- type: string
|
||||||
|
- min_length: 10
|
||||||
|
|
||||||
|
tags:
|
||||||
|
type: object
|
||||||
|
description: >
|
||||||
|
Classification metadata for the artifact. All tag dimensions
|
||||||
|
and values must conform to the backend tag schema.
|
||||||
|
constraints:
|
||||||
|
- validated_against_tag_schema
|
||||||
|
|
||||||
|
provenance:
|
||||||
|
type: object
|
||||||
|
optional: true
|
||||||
|
fields:
|
||||||
|
generated_at:
|
||||||
|
type: datetime
|
||||||
|
generated_by:
|
||||||
|
type: string
|
||||||
|
source_commit:
|
||||||
|
type: string
|
||||||
|
confidence_score:
|
||||||
|
type: float
|
||||||
|
constraints:
|
||||||
|
- min: 0.0
|
||||||
|
- max: 1.0
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
# tag_schema.yaml
|
||||||
|
schema_version: v1
|
||||||
|
|
||||||
|
dimensions:
|
||||||
|
domain:
|
||||||
|
- market_data
|
||||||
|
- signal_generation
|
||||||
|
- strategy_execution
|
||||||
|
- risk_management
|
||||||
|
- order_execution
|
||||||
|
- exchange_integration
|
||||||
|
- pnl_accounting
|
||||||
|
|
||||||
|
trading_function:
|
||||||
|
- data_ingest
|
||||||
|
- alpha_generation
|
||||||
|
- position_sizing
|
||||||
|
- entry_logic
|
||||||
|
- exit_logic
|
||||||
|
|
||||||
|
strategy_layer:
|
||||||
|
- signal
|
||||||
|
- decision
|
||||||
|
- execution
|
||||||
|
- evaluation
|
||||||
|
|
||||||
|
system_layer:
|
||||||
|
- api
|
||||||
|
- service
|
||||||
|
- engine
|
||||||
|
- worker
|
||||||
|
- persistence
|
||||||
|
|
||||||
|
intent:
|
||||||
|
- orchestration
|
||||||
|
- abstraction
|
||||||
|
- isolation
|
||||||
|
- validation
|
||||||
|
- optimization
|
||||||
|
- safety
|
||||||
|
|
||||||
|
data_type:
|
||||||
|
- signals
|
||||||
|
- orders
|
||||||
|
- positions
|
||||||
|
- pnl
|
||||||
|
- configs
|
||||||
|
- exchanges
|
||||||
|
|
||||||
|
risk:
|
||||||
|
- capital_loss
|
||||||
|
- liquidation
|
||||||
|
- latency
|
||||||
|
- data_corruption
|
||||||
|
- security
|
||||||
|
- hedging
|
||||||
|
|
||||||
|
maturity:
|
||||||
|
- experimental
|
||||||
|
- production
|
||||||
Loading…
Reference in New Issue