示例#1
0
          ppf.core.leg(
             TradeServer.retrieve(flows, 'flows')
             , eval("ppf.core."+pay_or_receive)
             , adjuvants
             , eval("ppf.pricer.payoffs."+payoff)())
      TradeServer._legs[tag] = leg
      return tag
    except RuntimeError, e: utils.raise_com_exception(e)

  def CreateTrade(
    self
    , tag
    , legs
    , exercise_sched
    , exercise_type):
    try:
      tl = [TradeServer.retrieve(l, 'legs') for l in legs[1:]]
      if exercise_sched:
        exercises = TradeServer.retrieve(exercise_sched, 'exercises')
        if not exercise_type:
          raise RuntimeError, "missing exercise type"
        call_cancel = eval("ppf.core.exercise_type."+exercise_type)
        trade = ppf.core.trade(tl, (exercises, call_cancel))
      else:
        trade = ppf.core.trade(tl, None)
      TradeServer._trades[tag] = trade
      return tag
    except RuntimeError, e: utils.raise_com_exception(e)
    
if __name__ == "__main__": utils.register_com_class(TradeServer)
示例#2
0
    _pricers = {}

    retrieve = staticmethod(lambda tag, which: utils.retrieve(
        'pricer_server', 'PricerServer', tag, which))

    def CreateHullWhiteLatticePricer(self, tag, trade_id, env_id, num_states,
                                     num_std_dev):
        try:
            from trade_server import TradeServer
            from market_server import MarketServer
            trade = TradeServer.retrieve(trade_id, 'trades')
            env = MarketServer.retrieve(env_id, 'environments')
            model_args = {"num states": num_states, "num std dev": num_std_dev}
            factory = ppf.model.hull_white_lattice_model_factory()
            model = factory(trade, env, model_args)
            pricer = ppf.pricer.lattice_pricer(trade, model, env, None)
            PricerServer._pricers[tag] = pricer
            return tag
        except RuntimeError, e:
            ppf.com.utils.raise_com_exception(e)

    def InvokePricer(self, tag):
        try:
            return PricerServer.retrieve(tag, 'pricers').__call__()
        except RuntimeError, e:
            utils.raise_com_exception(e)


if __name__ == "__main__":
    utils.register_com_class(PricerServer)
示例#3
0
            leg = \
                ppf.core.leg(
                   TradeServer.retrieve(flows, 'flows')
                   , eval("ppf.core."+pay_or_receive)
                   , adjuvants
                   , eval("ppf.pricer.payoffs."+payoff)())
            TradeServer._legs[tag] = leg
            return tag
        except RuntimeError, e:
            utils.raise_com_exception(e)

    def CreateTrade(self, tag, legs, exercise_sched, exercise_type):
        try:
            tl = [TradeServer.retrieve(l, 'legs') for l in legs[1:]]
            if exercise_sched:
                exercises = TradeServer.retrieve(exercise_sched, 'exercises')
                if not exercise_type:
                    raise RuntimeError, "missing exercise type"
                call_cancel = eval("ppf.core.exercise_type." + exercise_type)
                trade = ppf.core.trade(tl, (exercises, call_cancel))
            else:
                trade = ppf.core.trade(tl, None)
            TradeServer._trades[tag] = trade
            return tag
        except RuntimeError, e:
            utils.raise_com_exception(e)


if __name__ == "__main__":
    utils.register_com_class(TradeServer)
示例#4
0
        try:
            import ppf.math.interpolation
            interp = eval("ppf.math.interpolation." + interp)
            times, factors = [x[1]
                              for x in curve[1:]], [x[2] for x in curve[1:]]
            MarketServer.retrieve(tag, 'environments').add_curve(
                str(name), ppf.market.curve(times, factors, interp))
        except RuntimeError, e:
            utils.raise_com_exception(e)

    def AddConstant(self, tag, name, value):
        try:
            MarketServer.retrieve(tag, 'environments').add_constant(
                str(name), value)
        except RuntimeError, e:
            utils.raise_com_exception(e)

    def AddSurface(self, tag, name, expiries, tenors, values):
        try:
            import numpy
            exp, ten = expiries[1:], tenors[1:]
            surface = [x[1:] for x in values[1:]]
            MarketServer.retrieve(tag, 'environments').add_surface(
                str(name), ppf.market.surface(exp, ten, numpy.array(surface)))
        except RuntimeError, e:
            utils.raise_com_exception(e)


if __name__ == "__main__":
    utils.register_com_class(MarketServer)
示例#5
0
import utils

class BlackScholesServer(object):
  _public_methods_ = ["OptionPrice"]
  _reg_progid_ = "ppf.black_scholes"
  _reg_clsid_ = "{14B40B3E-DC9A-4E07-A512-F65DA07BDC09}"

  def OptionPrice(self, spot, strike, rate, vol, time, call_put):
     from ppf.core import black_scholes
     try:
       return black_scholes(
                 S=spot, K=strike, r=rate, sig=vol, T=time, CP=call_put)
     except RuntimeError, e:
       ppf.com.utils.raise_com_exception(e)

if __name__ == "__main__":
  utils.register_com_class(BlackScholesServer)
示例#6
0
       MarketServer._environments[tag] = \
          ppf.market.environment(utils.to_ppf_date(t))
       return tag
     except RuntimeError, e: utils.raise_com_exception(e)

  def AddCurve(self, tag, name, curve, interp):
    try:
      import ppf.math.interpolation
      interp = eval("ppf.math.interpolation."+interp)
      times, factors = [x[1] for x in curve[1:]],[x[2] for x in curve[1:]]
      MarketServer.retrieve(tag, 'environments').add_curve(
          str(name), ppf.market.curve(times, factors, interp))
    except RuntimeError, e: utils.raise_com_exception(e)

  def AddConstant(self, tag, name, value):
    try:
      MarketServer.retrieve(tag, 'environments').add_constant(
        str(name), value)
    except RuntimeError, e: utils.raise_com_exception(e)

  def AddSurface(self, tag, name, expiries, tenors, values):
    try:
      import numpy
      exp, ten = expiries[1:], tenors[1:]
      surface = [x[1:] for x in values[1:]]
      MarketServer.retrieve(tag,'environments').add_surface(
        str(name), ppf.market.surface(exp, ten, numpy.array(surface)))
    except RuntimeError, e: utils.raise_com_exception(e)

if __name__ == "__main__": utils.register_com_class(MarketServer)
示例#7
0
import utils


class BlackScholesServer(object):
    _public_methods_ = ["OptionPrice"]
    _reg_progid_ = "ppf.black_scholes"
    _reg_clsid_ = "{14B40B3E-DC9A-4E07-A512-F65DA07BDC09}"

    def OptionPrice(self, spot, strike, rate, vol, time, call_put):
        from ppf.core import black_scholes
        try:
            return black_scholes(S=spot,
                                 K=strike,
                                 r=rate,
                                 sig=vol,
                                 T=time,
                                 CP=call_put)
        except RuntimeError, e:
            ppf.com.utils.raise_com_exception(e)


if __name__ == "__main__":
    utils.register_com_class(BlackScholesServer)
示例#8
0
  retrieve = staticmethod(
       lambda tag, which :
         utils.retrieve('pricer_server', 'PricerServer', tag, which))

  def CreateHullWhiteLatticePricer(
      self
      , tag
      , trade_id
      , env_id
      , num_states
      , num_std_dev):
    try:
      from trade_server import TradeServer
      from market_server import MarketServer
      trade = TradeServer.retrieve(trade_id, 'trades')
      env   = MarketServer.retrieve(env_id, 'environments')
      model_args = {"num states": num_states, "num std dev": num_std_dev} 
      factory = ppf.model.hull_white_lattice_model_factory()
      model = factory(trade, env, model_args)
      pricer = ppf.pricer.lattice_pricer(trade, model, env, None)
      PricerServer._pricers[tag] = pricer
      return tag
    except RuntimeError, e: ppf.com.utils.raise_com_exception(e)

  def InvokePricer(self, tag):
    try:
      return PricerServer.retrieve(tag, 'pricers').__call__()
    except RuntimeError, e: utils.raise_com_exception(e)

if __name__ == "__main__": utils.register_com_class(PricerServer)