module QuantLib.Instruments.Stock
        ( module QuantLib.Instruments.Stock
        ) where

import Data.Time.LocalTime
import QuantLib.Instruments.Instrument
import QuantLib.Priceable

-- | Single stock instrument 
data Stock = Stock {
        Stock -> Double
sQuote  :: Double,
        Stock -> LocalTime
sDate   :: LocalTime
        } deriving (Int -> Stock -> ShowS
[Stock] -> ShowS
Stock -> String
(Int -> Stock -> ShowS)
-> (Stock -> String) -> ([Stock] -> ShowS) -> Show Stock
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stock] -> ShowS
$cshowList :: [Stock] -> ShowS
show :: Stock -> String
$cshow :: Stock -> String
showsPrec :: Int -> Stock -> ShowS
$cshowsPrec :: Int -> Stock -> ShowS
Show)

instance Instrument Stock where
       iDate :: Stock -> LocalTime
iDate            = Stock -> LocalTime
sDate
       iIsExpired :: Stock -> Bool
iIsExpired     Stock
_ = Bool
False

instance Priceable Stock where
    npv :: Stock -> Double
npv (Stock Double
q LocalTime
_)     = Double
q
    errorEstimate :: Stock -> Double
errorEstimate Stock
_     = Double
0.0