Module Trading_engine.Settlement

Deterministic trade-settlement calendars, policies, and instructions.

type cash_buying_power =
  1. | Total_cash
  2. | Settled_cash
type position_availability =
  1. | Total_positions
  2. | Settled_positions
type calendar = private {
  1. calendar_id : string;
  2. version : string;
  3. business_dates : string list;
}
type rule = private {
  1. instrument_id : Id.Instrument.t;
  2. calendar_id : string;
  3. lag_business_days : int;
}
type policy = private {
  1. cash_buying_power : cash_buying_power;
  2. position_availability : position_availability;
  3. calendars : calendar list;
  4. rules : rule list;
}
type status =
  1. | Pending
  2. | Settled of Ptime.t
  3. | Failed of {
    1. failed_at : Ptime.t;
    2. reason : string;
    }
type instruction = private {
  1. instruction_id : string;
  2. fill_id : Id.Fill.t;
  3. instrument_id : Id.Instrument.t;
  4. currency : string;
  5. cash_movement : Scalar.Money.t;
  6. position_movement : Scalar.Quantity.t;
  7. trade_date : string;
  8. due_date : string;
  9. status : status;
}
type failure = private {
  1. instruction_id : string;
  2. reason : string;
}
val calendar : calendar_id:string -> version:string -> business_dates:string list -> (calendar, string) Stdlib.result
val rule : instrument_id:Id.Instrument.t -> calendar_id:string -> lag_business_days:int -> (rule, string) Stdlib.result
val policy : cash_buying_power:cash_buying_power -> position_availability:position_availability -> calendars:calendar list -> rules:rule list -> (policy, string) Stdlib.result
val instruction : policy -> Fill.t -> (instruction, string) Stdlib.result
val failure : instruction_id:string -> reason:string -> (failure, string) Stdlib.result
val settle : instruction -> settled_at:Ptime.t -> (instruction, string) Stdlib.result
val fail : instruction -> failed_at:Ptime.t -> reason:string -> (instruction, string) Stdlib.result
val date_of_timestamp : Ptime.t -> string
val is_due : instruction -> Ptime.t -> bool
val cash_buying_power_to_string : cash_buying_power -> string
val position_availability_to_string : position_availability -> string
val status_to_string : status -> string