Module Trading_engine.Corporate_action

Split and cash-dividend events applied before matching their effective market slice.

type kind =
  1. | Split of {
    1. numerator : int64;
    2. denominator : int64;
    }
  2. | Cash_dividend of {
    1. amount_per_unit : Scalar.Money.t;
    }
  3. | Distribution of {
    1. distribution_type : distribution_type;
    2. destination_instrument_id : Id.Instrument.t;
    3. numerator : int64;
    4. denominator : int64;
    5. basis_allocation_bps : int;
    6. fractional_policy : fractional_policy;
    }
and distribution_type =
  1. | Stock_dividend
  2. | Rights
  3. | Spin_off
and fractional_policy =
  1. | Reject_fractional
  2. | Cash_in_lieu of {
    1. price : Scalar.Price.t;
    2. currency : string;
    }
type t = private {
  1. id : Id.Corporate_action.t;
  2. instrument_id : Id.Instrument.t;
  3. kind : kind;
}
val split : id:Id.Corporate_action.t -> instrument_id:Id.Instrument.t -> numerator:int64 -> denominator:int64 -> (t, string) Stdlib.result
val cash_dividend : id:Id.Corporate_action.t -> instrument_id:Id.Instrument.t -> amount_per_unit:Scalar.Money.t -> (t, string) Stdlib.result
val distribution : id:Id.Corporate_action.t -> instrument_id:Id.Instrument.t -> distribution_type:distribution_type -> destination_instrument_id:Id.Instrument.t -> numerator:int64 -> denominator:int64 -> basis_allocation_bps:int -> fractional_policy:fractional_policy -> (t, string) Stdlib.result
val distribution_type_to_string : distribution_type -> string
val compare : t -> t -> int
val pp : Stdlib.Format.formatter -> t -> unit