hquantlib-0.0.4.0: src/QuantLib/Methods/Pricer.hs
{-# LANGUAGE BangPatterns #-}
module QuantLib.Methods.Pricer
( MaxMinClosePricer (..)
, LastPointPricer (..)
, LogLastPointPricer (..)
) where
import QuantLib.Methods.MonteCarlo (PathPricer (..))
import QuantLib.Stochastic.Process (Dot (..))
data MaxMinClosePricer = MMCP {
mmcpHigh :: Double,
mmcpLow :: Double,
mmcpClose :: Double
} deriving (Show)
instance PathPricer MaxMinClosePricer where
ppPrice _ path = MMCP high low close
where !close = last xs
!high = maximum xs
!low = minimum xs
xs = map getX path
-- | This pricer gets the last point of path
newtype LastPointPricer = LastPointPricer Double
instance PathPricer LastPointPricer where
ppPrice _ = LastPointPricer <$> getX . last
-- | This pricer estimates the log of difference between start and end of process
newtype LogLastPointPricer = LogLastPointPricer Double
instance PathPricer LogLastPointPricer where
ppPrice _ path = LogLastPointPricer (log (lastX / firstX))
where
lastX = getX $ last path
firstX = getX $ head path