Positions domain model

Table of Contents

This page is a capture in the next bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.

Implement the positions domain model. A position aggregates the net exposure for a given instrument and book combination, derived from the trade blotter. See plan for context.

Covers long/short positions across all instrument families, backed by one new temporal table: ores_trading_positions_tbl (book_id, instrument_id, trade_type_code, quantity, notional, currency, as_of_date, and standard temporal/audit fields).

Tasks

  • [ ] SQL: ores_trading_positions_tbl + notify trigger + drop files
  • [ ] SQL: Register in trading_create.sql, drop_trading.sql
  • [ ] Domain: position struct, JSON I/O, table I/O, protocol messages
  • [ ] Repository: position entity, mapper, repository
  • [ ] Service: position_service
  • [ ] Server: messaging handler + registrar registration
  • [ ] Qt UI: ClientPositionModel, PositionMdiWindow, PositionDetailDialog, PositionHistoryDialog, PositionController, MainWindow integration
  • [ ] Database: recreate to pick up new table

Emacs 29.1 (Org mode 9.6.6)