
P1: JYS
c06 JWBK378-Fletcher May 12, 2009 18:55 Printer: Yet to come
Data Model 85
in the forthcoming chapters. The class leg from module ppf.core.leg provides an
implementation of the leg.
class leg:
def
init (self
, flows
, pay
or receive
, adjuvant
table = None
, payoff = None):
self.
flows = flows
self.
pay or receive = pay or receive
self.
adjuvant table = adjuvant table
self.
payoff = payoff
def flows(self):
return self.
flows
def pay
receive(self):
return self.
pay or receive
def has
adjuvant table(self):
return self.
adjuvant table <> None
def has
payoff(self):
return self.
payoff <> None
def adjuvant
table(self):
if self.
adjuvant table == None:
raise RuntimeError, "Null adjuvant table"
return self.
adjuvant table
def payoff(self):
if self.
payoff == None:
raise RuntimeError, "Null payoff"
return self.
payoff
6.5 EXERCISES
Many financial structures have exercise decisions embedded in them. An exercise decision or
opportunity is the right to exercise into or cancel a stream of cash flows at some point in time.
Typically the writer of the option will require some notification of exercise and so an exercise
decision is most generally associated with two dates: a notification date and an exercise date.
It may also be written into the contract that the holder of the option must pay a fee upon
exercise. These three data elements are bundled up into the class exercise in the module
ppf.core.exercise.
class exercise:
def
init (self
, notification ...