Module Trading_engine.Initial_portfolio

Immutable point-in-time portfolio state used to start a replay.

type position = private {
  1. instrument_id : Id.Instrument.t;
  2. quantity : Scalar.Quantity.t;
  3. cost_basis : Scalar.Money.t;
  4. realized_pnl : Scalar.Money.t;
  5. dividend_pnl : Scalar.Money.t;
  6. execution_fees : Scalar.Money.t;
  7. borrow_fees : Scalar.Money.t;
}
type t = private {
  1. base_currency : string;
  2. cash : (string * Scalar.Money.t) list;
  3. positions : position list;
  4. marks : (Id.Instrument.t * Scalar.Price.t) list;
  5. fx_rates : (string * Scalar.Price.t) list;
}
val position : instrument_id:Id.Instrument.t -> quantity:Scalar.Quantity.t -> cost_basis:Scalar.Money.t -> realized_pnl:Scalar.Money.t -> dividend_pnl:Scalar.Money.t -> execution_fees:Scalar.Money.t -> borrow_fees:Scalar.Money.t -> (position, string) Stdlib.result
val create : base_currency:string -> cash:(string * Scalar.Money.t) list -> positions:position list -> marks:(Id.Instrument.t * Scalar.Price.t) list -> fx_rates:(string * Scalar.Price.t) list -> (t, string) Stdlib.result
val cash_only : base_currency:string -> cash:(string * Scalar.Money.t) list -> (t, string) Stdlib.result