Module Trading_engine.Financing

Effective-time borrow availability and multi-currency financing policy.

type day_count =
  1. | Actual_365
  2. | Actual_360
type compounding =
  1. | Simple
  2. | Daily
type missing_data =
  1. | Reject
  2. | Zero
type locate_policy =
  1. | Reject_order
  2. | Clip_fill
type recall_policy =
  1. | Reject_new_shorts
  2. | Close_out
type policy = private {
  1. day_count : day_count;
  2. compounding : compounding;
  3. borrow_missing_data : missing_data;
  4. cash_missing_data : missing_data;
  5. locate_policy : locate_policy;
  6. recall_policy : recall_policy;
}
type borrow_observation = private {
  1. instrument_id : Id.Instrument.t;
  2. effective_at : Ptime.t;
  3. available_quantity : Scalar.Quantity.t;
  4. annual_rate_bps : int;
  5. recalled : bool;
}
type cash_rate_observation = private {
  1. currency : string;
  2. effective_at : Ptime.t;
  3. credit_rate_bps : int;
  4. debit_rate_bps : int;
}
val policy : day_count:day_count -> compounding:compounding -> borrow_missing_data:missing_data -> cash_missing_data:missing_data -> locate_policy:locate_policy -> recall_policy:recall_policy -> policy
val legacy_policy : policy
val borrow_observation : instrument_id:Id.Instrument.t -> effective_at:Ptime.t -> available_quantity:Scalar.Quantity.t -> annual_rate_bps:int -> recalled:bool -> (borrow_observation, string) Stdlib.result
val cash_rate_observation : currency:string -> effective_at:Ptime.t -> credit_rate_bps:int -> debit_rate_bps:int -> (cash_rate_observation, string) Stdlib.result
val accrue : policy -> principal:Scalar.Money.t -> annual_rate_bps:int -> Ptime.Span.t -> (Scalar.Money.t, string) Stdlib.result

accrue returns signed interest. Rounding is nearest micro-unit with ties away from zero. Daily compounding rounds and capitalizes after every full day, then accrues a simple fractional-day remainder.

val day_count_to_string : day_count -> string
val compounding_to_string : compounding -> string
val missing_data_to_string : missing_data -> string
val locate_policy_to_string : locate_policy -> string
val recall_policy_to_string : recall_policy -> string