module QuantLib.Event
(module QuantLib.Event
) where
import QuantLib.Prices
import QuantLib.Time.Date
class Event a where
evDate :: a->Date
evOccured :: a->Date->Bool
evOccured a
event Date
date = a -> Date
forall a. Event a => a -> Date
evDate a
event Date -> Date -> Bool
forall a. Ord a => a -> a -> Bool
< Date
date
evOccuredInclude:: a->Date->Bool
evOccuredInclude a
event Date
date = a -> Date
forall a. Event a => a -> Date
evDate a
event Date -> Date -> Bool
forall a. Ord a => a -> a -> Bool
<= Date
date
evCompare :: a->a->Ordering
evCompare a
x a
y
| a -> Date
forall a. Event a => a -> Date
evDate a
x Date -> Date -> Bool
forall a. Eq a => a -> a -> Bool
== a -> Date
forall a. Event a => a -> Date
evDate a
y = Ordering
EQ
| a -> Date
forall a. Event a => a -> Date
evDate a
x Date -> Date -> Bool
forall a. Ord a => a -> a -> Bool
<= a -> Date
forall a. Event a => a -> Date
evDate a
y = Ordering
LT
| Bool
otherwise = Ordering
GT
evEqual :: a->a->Bool
evEqual a
x a
y = a -> Date
forall a. Event a => a -> Date
evDate a
x Date -> Date -> Bool
forall a. Eq a => a -> a -> Bool
== a -> Date
forall a. Event a => a -> Date
evDate a
y
data CashFlow = CashFlow {
CashFlow -> Date
cfDate :: Date,
CashFlow -> Double
cfAmount :: Double
} deriving (Int -> CashFlow -> ShowS
[CashFlow] -> ShowS
CashFlow -> String
(Int -> CashFlow -> ShowS)
-> (CashFlow -> String) -> ([CashFlow] -> ShowS) -> Show CashFlow
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CashFlow] -> ShowS
$cshowList :: [CashFlow] -> ShowS
show :: CashFlow -> String
$cshow :: CashFlow -> String
showsPrec :: Int -> CashFlow -> ShowS
$cshowsPrec :: Int -> CashFlow -> ShowS
Show)
instance Event CashFlow where
evDate :: CashFlow -> Date
evDate (CashFlow Date
date Double
_) = Date
date
instance Eq CashFlow where
== :: CashFlow -> CashFlow -> Bool
(==) = CashFlow -> CashFlow -> Bool
forall a. Event a => a -> a -> Bool
evEqual
instance Ord CashFlow where
compare :: CashFlow -> CashFlow -> Ordering
compare = CashFlow -> CashFlow -> Ordering
forall a. Event a => a -> a -> Ordering
evCompare
type Leg = [CashFlow]
data Callability = Call {
Callability -> CallPrice
cPrice :: CallPrice,
Callability -> Date
cDate :: Date
} | Put {
cPrice :: CallPrice,
cDate :: Date
} deriving (Int -> Callability -> ShowS
[Callability] -> ShowS
Callability -> String
(Int -> Callability -> ShowS)
-> (Callability -> String)
-> ([Callability] -> ShowS)
-> Show Callability
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Callability] -> ShowS
$cshowList :: [Callability] -> ShowS
show :: Callability -> String
$cshow :: Callability -> String
showsPrec :: Int -> Callability -> ShowS
$cshowsPrec :: Int -> Callability -> ShowS
Show)
instance Event Callability where
evDate :: Callability -> Date
evDate = Callability -> Date
cDate
instance Eq Callability where
== :: Callability -> Callability -> Bool
(==) = Callability -> Callability -> Bool
forall a. Event a => a -> a -> Bool
evEqual
instance Ord Callability where
compare :: Callability -> Callability -> Ordering
compare = Callability -> Callability -> Ordering
forall a. Event a => a -> a -> Ordering
evCompare