Module Algostream_domain_portfolio.Position

type position_side =
  1. | Long
  2. | Short
  3. | Flat
type position = {
  1. symbol : Base.string;
  2. quantity : Base.float;
  3. average_price : Base.float;
  4. last_price : Base.float;
  5. unrealized_pnl : Base.float;
  6. realized_pnl : Base.float;
  7. total_cost : Base.float;
  8. commission_paid : Base.float;
  9. opened_at : Timestamp.t;
  10. updated_at : Timestamp.t;
  11. strategy_id : Base.string Base.option;
}
val stamp : Timestamp.t option -> Timestamp.t
val create_position : ?ts:Timestamp.t -> symbol:Base.string -> ?strategy_id:Base.string -> unit -> position
val position_side : position -> position_side
val is_flat : position -> bool
val is_long : position -> bool
val is_short : position -> bool
val market_value : position -> Base__Float.t
val cost_basis : position -> Base__Float.t
val update_last_price : ?ts:Timestamp.t -> position -> new_price:Base__Float.t -> position
val add_trade : ?ts:Timestamp.t -> position -> trade_quantity:Base__Float.t -> trade_price:Base.float -> commission:Base__Float.t -> position
val total_pnl : position -> Base__Float.t
val pnl_percentage : position -> Base__Float.t
val exposure : position -> Base.Float.t
val leverage : position -> account_value:Base.Float.t -> Base__Float.t
module Position_analytics : sig ... end