packages feed

HQu-0.0.0.0: src/Q/Options/ImpliedVol/TimeSlice.hs

{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE AllowAmbiguousTypes#-}
{-# LANGUAGE FunctionalDependencies #-}
module Q.Options.ImpliedVol.TimeSlice
  (
      module Q.Types
    , module Q.Options.ImpliedVol
    , TimeSlice(..)
  )
where

import Q.Types
import Q.Options.ImpliedVol
import Q.Options.Black76

class TimeSlice v k where
  totalVar :: v -> k -> TotalVar

instance TimeSlice (k -> TotalVar) k where
  totalVar f = f

instance TimeSlice Black76 k where
  totalVar Black76{..} _ = TotalVar $ vol * vol * t
    where (Vol vol) = b76Vol
          (YearFrac t) = b76T