sig
  module Type :
    sig
      type t = Bid | Ask | Last | Model | Custom
      val t_of_sexp : Sexplib.Sexp.t -> Response.Tick_option.Type.t
      val sexp_of_t : Response.Tick_option.Type.t -> Sexplib.Sexp.t
    end
  type t = private {
    tick_type : Response.Tick_option.Type.t;
    implied_vol : float;
    delta : float;
    option_price : Price.t;
    pv_dividend : float;
    gamma : float;
    vega : float;
    theta : float;
    under_price : Price.t;
  }
  val under_price : Response.Tick_option.t -> Price.t
  val theta : Response.Tick_option.t -> float
  val vega : Response.Tick_option.t -> float
  val gamma : Response.Tick_option.t -> float
  val pv_dividend : Response.Tick_option.t -> float
  val option_price : Response.Tick_option.t -> Price.t
  val delta : Response.Tick_option.t -> float
  val implied_vol : Response.Tick_option.t -> float
  val tick_type : Response.Tick_option.t -> Response.Tick_option.Type.t
  module Fields :
    sig
      val names : string list
      val under_price :
        (Response.Tick_option.t, Price.t) Fieldslib.Field.readonly_t
      val theta : (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val vega : (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val gamma : (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val pv_dividend :
        (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val option_price :
        (Response.Tick_option.t, Price.t) Fieldslib.Field.readonly_t
      val delta : (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val implied_vol :
        (Response.Tick_option.t, float) Fieldslib.Field.readonly_t
      val tick_type :
        (Response.Tick_option.t, Response.Tick_option.Type.t)
        Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        tick_type:('acc__ ->
                   (Response.Tick_option.t, Response.Tick_option.Type.t)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        implied_vol:('acc__ ->
                     (Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        delta:('acc__ ->
               (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'acc__) ->
        option_price:('acc__ ->
                      (Response.Tick_option.t, Price.t)
                      Fieldslib.Field.readonly_t -> 'acc__) ->
        pv_dividend:('acc__ ->
                     (Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        gamma:('acc__ ->
               (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'acc__) ->
        vega:('acc__ ->
              (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
              'acc__) ->
        theta:('acc__ ->
               (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'acc__) ->
        under_price:('acc__ ->
                     (Response.Tick_option.t, Price.t)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        'acc__
      val iter :
        tick_type:((Response.Tick_option.t, Response.Tick_option.Type.t)
                   Fieldslib.Field.readonly_t -> unit) ->
        implied_vol:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> unit) ->
        delta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               unit) ->
        option_price:((Response.Tick_option.t, Price.t)
                      Fieldslib.Field.readonly_t -> unit) ->
        pv_dividend:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> unit) ->
        gamma:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               unit) ->
        vega:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
              unit) ->
        theta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               unit) ->
        under_price:((Response.Tick_option.t, Price.t)
                     Fieldslib.Field.readonly_t -> unit) ->
        unit
      val for_all :
        tick_type:((Response.Tick_option.t, Response.Tick_option.Type.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        implied_vol:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> bool) ->
        delta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        option_price:((Response.Tick_option.t, Price.t)
                      Fieldslib.Field.readonly_t -> bool) ->
        pv_dividend:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> bool) ->
        gamma:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        vega:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
              bool) ->
        theta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        under_price:((Response.Tick_option.t, Price.t)
                     Fieldslib.Field.readonly_t -> bool) ->
        bool
      val exists :
        tick_type:((Response.Tick_option.t, Response.Tick_option.Type.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        implied_vol:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> bool) ->
        delta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        option_price:((Response.Tick_option.t, Price.t)
                      Fieldslib.Field.readonly_t -> bool) ->
        pv_dividend:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> bool) ->
        gamma:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        vega:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
              bool) ->
        theta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               bool) ->
        under_price:((Response.Tick_option.t, Price.t)
                     Fieldslib.Field.readonly_t -> bool) ->
        bool
      val to_list :
        tick_type:((Response.Tick_option.t, Response.Tick_option.Type.t)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        implied_vol:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        delta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'elem__) ->
        option_price:((Response.Tick_option.t, Price.t)
                      Fieldslib.Field.readonly_t -> 'elem__) ->
        pv_dividend:((Response.Tick_option.t, float)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        gamma:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'elem__) ->
        vega:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
              'elem__) ->
        theta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
               'elem__) ->
        under_price:((Response.Tick_option.t, Price.t)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Response.Tick_option.t, 'x0) Fieldslib.Field.user ->
        'x0 list
      module Direct :
        sig
          val iter :
            Response.Tick_option.t ->
            tick_type:((Response.Tick_option.t, Response.Tick_option.Type.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Tick_option.t ->
                       Response.Tick_option.Type.t -> unit) ->
            implied_vol:((Response.Tick_option.t, float)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> float -> unit) ->
            delta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> unit) ->
            option_price:((Response.Tick_option.t, Price.t)
                          Fieldslib.Field.readonly_t ->
                          Response.Tick_option.t -> Price.t -> unit) ->
            pv_dividend:((Response.Tick_option.t, float)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> float -> unit) ->
            gamma:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> unit) ->
            vega:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                  Response.Tick_option.t -> float -> unit) ->
            theta:((Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> unit) ->
            under_price:((Response.Tick_option.t, Price.t)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> Price.t -> unit) ->
            unit
          val fold :
            Response.Tick_option.t ->
            init:'acc__ ->
            tick_type:('acc__ ->
                       (Response.Tick_option.t, Response.Tick_option.Type.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Tick_option.t ->
                       Response.Tick_option.Type.t -> 'acc__) ->
            implied_vol:('acc__ ->
                         (Response.Tick_option.t, float)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> float -> 'acc__) ->
            delta:('acc__ ->
                   (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> 'acc__) ->
            option_price:('acc__ ->
                          (Response.Tick_option.t, Price.t)
                          Fieldslib.Field.readonly_t ->
                          Response.Tick_option.t -> Price.t -> 'acc__) ->
            pv_dividend:('acc__ ->
                         (Response.Tick_option.t, float)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> float -> 'acc__) ->
            gamma:('acc__ ->
                   (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> 'acc__) ->
            vega:('acc__ ->
                  (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                  Response.Tick_option.t -> float -> 'acc__) ->
            theta:('acc__ ->
                   (Response.Tick_option.t, float) Fieldslib.Field.readonly_t ->
                   Response.Tick_option.t -> float -> 'acc__) ->
            under_price:('acc__ ->
                         (Response.Tick_option.t, Price.t)
                         Fieldslib.Field.readonly_t ->
                         Response.Tick_option.t -> Price.t -> 'acc__) ->
            'acc__
        end
    end
  val unpickler : t Tws_prot.Unpickler.t
  val pickler : t Tws_prot.Pickler.t Core.Std.Only_in_test.t
  val ( = ) : t -> t -> bool
  val create :
    tick_type:Response.Tick_option.Type.t ->
    implied_vol:float ->
    delta:float ->
    option_price:Price.t ->
    pv_dividend:float ->
    gamma:float ->
    vega:float ->
    theta:float -> under_price:Price.t -> Response.Tick_option.t
  val pp : Format.formatter -> Response.Tick_option.t -> unit
  val t_of_sexp : Sexplib.Sexp.t -> Response.Tick_option.t
  val sexp_of_t : Response.Tick_option.t -> Sexplib.Sexp.t
end