-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | quantitative finance library -- -- General purpose quantitative finance library @package HQu @version 0.0.0.3 -- | General purpose quantitative finance library module HQu someFunc :: IO () module Q.Currency -- | Currency specification data Currency Currency :: String -> String -> Integer -> Integer -> Currency -- | currency name, e.g. "U.S. dollar" [cName] :: Currency -> String -- | ISO 4217 three-letter code, e.g. USD [cCode] :: Currency -> String -- | ISO 4217 numeric code, e.g. 840 [cIsoCode] :: Currency -> Integer -- | number of fractionary parts in a unit [cFracsPerUnit] :: Currency -> Integer instance GHC.Classes.Eq Q.Currency.Currency instance GHC.Show.Show Q.Currency.Currency module Q.Currencies.Europe -- | Swiss france chf :: Currency -- | European Euro eur :: Currency -- | British pound sterling gbp :: Currency module Q.Currencies.Asia -- | Syrian Pounds syp :: Currency module Q.Currencies.America -- | Canadian dollar cad :: Currency -- | U.S. dollar usd :: Currency module Q.Plotting colorPairs :: [(Text, Text)] module Q.Stats.TimeSeries data DataPoint a b DataPoint :: a -> b -> DataPoint a b -- | Time [dpT] :: DataPoint a b -> a -- | Value [dpV] :: DataPoint a b -> b parseDateTime :: String -> Maybe LocalTime localTimeFormat' :: Format LocalTime dayFormat' :: Format Day parseTime :: String -> Maybe LocalTime parseDay :: String -> Maybe LocalTime dayToString :: Day -> Text dateToString :: LocalTime -> String read :: forall a. FromNamedRecord a => FilePath -> IO [a] valuesOnly :: [DataPoint a b] -> [b] toPair :: DataPoint a b -> (a, b) instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Q.Stats.TimeSeries.DataPoint a b) instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Q.Stats.TimeSeries.DataPoint a b) instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Q.Stats.TimeSeries.DataPoint a b) instance GHC.Generics.Generic (Q.Stats.TimeSeries.DataPoint a b) instance Data.Csv.Conversion.FromNamedRecord (Q.Stats.TimeSeries.DataPoint Data.Time.LocalTime.Internal.LocalTime.LocalTime GHC.Types.Double) instance Data.Csv.Conversion.FromNamedRecord (Q.Stats.TimeSeries.DataPoint GHC.Types.Double GHC.Types.Double) module Q.Stats.Arima data Ewma d Ewma :: Double -> d -> Ewma d ll :: (PDF d Double, Traversable t) => Ewma (d Double) -> t (DataPoint LocalTime Double) -> StateT Double Identity (t Double) forecast :: forall d. Distribution d Double => Ewma (d Double) -> StateT Double RVar Double forecastN :: (MonadRandom m, Distribution d Double) => Ewma (d Double) -> Double -> Int -> m ([Double], Double) module Q.Stochastic.Process rwalkState :: RVarT (State Double) Double type Time = Double -- | Discretization of stochastic process over given interval class (Num b) => Discretize d b -- | Discretization of the drift process. dDrift :: (Discretize d b, StochasticProcess a b) => a -> d -> (Time, b) -> RVar b -- | Discretization of the diffusion process. dDiff :: (Discretize d b, StochasticProcess a b) => a -> d -> (Time, b) -> RVar b -- | dt used. dDt :: (Discretize d b, StochasticProcess a b) => a -> d -> (Time, b) -> Time -- | A stochastic process of the form <math> class (Num b) => StochasticProcess a b -- | The process drift. pDrift :: StochasticProcess a b => a -> (Time, b) -> RVar b -- | The process diffusion. pDiff :: StochasticProcess a b => a -> (Time, b) -> RVar b -- | Evolve a process from a given state to a given time. pEvolve :: (StochasticProcess a b, Discretize d b) => a -> d -> (Time, b) -> Time -> RVar b -> RVar b -- | Similar to evolve, but evolves the process with the discretization -- scheme <math>. pEvolve' :: (StochasticProcess a b, Discretize d b, Num b) => a -> d -> (Time, b) -> RVar b -> RVar (Time, b) -- | Geometric Brownian motion data GeometricBrownian GeometricBrownian :: Double -> Double -> GeometricBrownian -- | Drift [gbDrift] :: GeometricBrownian -> Double -- | Vol [gbDiff] :: GeometricBrownian -> Double -- | Ito process data ItoProcess ItoProcess :: ((Time, Double) -> Double) -> ((Time, Double) -> Double) -> ItoProcess [ipDrift] :: ItoProcess -> (Time, Double) -> Double [ipDiff] :: ItoProcess -> (Time, Double) -> Double instance GHC.Show.Show Q.Stochastic.Process.GeometricBrownian instance Q.Stochastic.Process.StochasticProcess Q.Stochastic.Process.GeometricBrownian GHC.Types.Double instance GHC.Num.Num a => GHC.Num.Num (Data.RVar.RVarT m a) module Q.Stochastic.Discretize -- | Euler discretization of stochastic processes newtype Euler Euler :: Double -> Euler [eDt] :: Euler -> Double -- | Euler end-point discretization of stochastic processes newtype EndEuler EndEuler :: Double -> EndEuler [eeDt] :: EndEuler -> Double instance GHC.Classes.Eq Q.Stochastic.Discretize.Euler instance GHC.Show.Show Q.Stochastic.Discretize.Euler instance GHC.Classes.Eq Q.Stochastic.Discretize.EndEuler instance GHC.Show.Show Q.Stochastic.Discretize.EndEuler instance (forall a b. Q.Stochastic.Process.StochasticProcess a GHC.Types.Double) => Q.Stochastic.Process.Discretize Q.Stochastic.Discretize.EndEuler GHC.Types.Double instance Q.Stochastic.Process.Discretize Q.Stochastic.Discretize.Euler GHC.Types.Double instance Q.Stochastic.Process.Discretize Q.Stochastic.Discretize.Euler (Data.Vector.Storable.Vector GHC.Types.Double) module Q.Stochastic module Q.Time.Date -- | Defines a holidays for given calendar. Corresponds to calendar class -- in QuantLib class Calendar m isHoliday :: Calendar m => m -> (Integer, Int, Int) -> Bool isWeekend :: Calendar m => m -> Day -> Bool isBusinessDay :: Calendar m => m -> Day -> Bool hBusinessDayBetween :: Calendar m => m -> (Day, Day) -> Int hNextBusinessDay :: Calendar m => m -> Day -> Day instance GHC.Enum.Enum Q.Time.Date.BusinessDayConvention instance GHC.Classes.Eq Q.Time.Date.BusinessDayConvention instance GHC.Show.Show Q.Time.Date.BusinessDayConvention instance GHC.Generics.Generic Q.Time.Date.BusinessDayConvention module Q.Time.DayCounter -- | Day counter type class class DayCounter m dcName :: DayCounter m => m -> String dcCount :: DayCounter m => m -> Day -> Day -> Int dcYearFraction :: DayCounter m => m -> Day -> Day -> Double -- | Thirty day counters as in QuantLib data Thirty360 ThirtyUSA :: Thirty360 ThirtyEuropean :: Thirty360 ThirtyItalian :: Thirty360 instance GHC.Read.Read Q.Time.DayCounter.Thirty360 instance GHC.Show.Show Q.Time.DayCounter.Thirty360 instance GHC.Classes.Eq Q.Time.DayCounter.Thirty360 instance GHC.Generics.Generic Q.Time.DayCounter.Thirty360 instance Q.Time.DayCounter.DayCounter Q.Time.DayCounter.Thirty360 module Q.Time -- | Converts a shortned ISO08601 date to a Day parseDay :: String -> Maybe Day -- | Converts a shortened ISO08601 date string, or datetime to a -- LocalTime. If the string doesn't contain time then -- midnight is used. parseLocalTime :: String -> Maybe LocalTime instance Data.Csv.Conversion.ToField Data.Time.Calendar.Days.Day instance Data.Csv.Conversion.FromField Data.Time.Calendar.Days.Day module Q.Types -- | Single-observable container. data Observables1 Observables1 :: {-# UNPACK #-} !Double -> Observables1 -- | Two observable container. data Observables2 Observables2 :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> Observables2 -- | Three observable container. data Observables3 Observables3 :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> Observables3 -- | Four observable container. data Observables4 Observables4 :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> Observables4 -- | Five observable container. data Observables5 Observables5 :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> Observables5 -- | Type for Put or Calls data OptionType Put :: OptionType Call :: OptionType newtype Cash Cash :: Double -> Cash newtype Spot Spot :: Double -> Spot class Obs1 a get1 :: Obs1 a => a -> Double class (Obs1 a) => Obs2 a get2 :: Obs2 a => a -> Double class (Obs2 a) => Obs3 a get3 :: Obs3 a => a -> Double class (Obs3 a) => Obs4 a get4 :: Obs4 a => a -> Double class (Obs4 a) => Obs5 a get5 :: Obs5 a => a -> Double newtype Strike Strike :: Double -> Strike newtype Forward Forward :: Double -> Forward newtype Premium Premium :: Double -> Premium newtype Delta Delta :: Double -> Delta newtype Vega Vega :: Double -> Vega newtype Gamma Gamma :: Double -> Gamma newtype Expiry Expiry :: Day -> Expiry newtype YearFrac YearFrac :: Double -> YearFrac [unYearFrac] :: YearFrac -> Double newtype Rate Rate :: Double -> Rate newtype DF DF :: Double -> DF newtype Vol Vol :: Double -> Vol -- | (w(S_0, K, T) = sigma_{BS}(S_0, K, T)T ) newtype TotalVar TotalVar :: Double -> TotalVar -- | Represents concepts that scale as a function of time such as -- Vol class TimeScaleable a scale :: TimeScaleable a => YearFrac -> a -> a cpi :: Num p => OptionType -> p discountFactor :: YearFrac -> Rate -> DF discount :: DF -> Double -> Double undiscount :: DF -> Double -> Double rateFromDiscount :: YearFrac -> DF -> Rate totalVarToVol :: TotalVar -> YearFrac -> Vol volToTotalVar :: Vol -> YearFrac -> TotalVar ($*$) :: (Coercible a Double, Coercible b Double) => a -> b -> a ($/$) :: (Coercible a Double, Coercible b Double) => a -> b -> a ($+$) :: (Coercible a Double, Coercible b Double) => a -> b -> a instance GHC.Enum.Bounded Q.Types.OptionType instance GHC.Read.Read Q.Types.OptionType instance GHC.Show.Show Q.Types.OptionType instance GHC.Classes.Eq Q.Types.OptionType instance GHC.Generics.Generic Q.Types.OptionType instance Foreign.Storable.Storable Q.Types.Cash instance GHC.Float.Floating Q.Types.Cash instance GHC.Float.RealFloat Q.Types.Cash instance GHC.Real.RealFrac Q.Types.Cash instance GHC.Real.Real Q.Types.Cash instance GHC.Real.Fractional Q.Types.Cash instance GHC.Num.Num Q.Types.Cash instance GHC.Classes.Ord Q.Types.Cash instance GHC.Read.Read Q.Types.Cash instance GHC.Show.Show Q.Types.Cash instance GHC.Classes.Eq Q.Types.Cash instance GHC.Generics.Generic Q.Types.Cash instance Foreign.Storable.Storable Q.Types.Spot instance GHC.Float.Floating Q.Types.Spot instance GHC.Float.RealFloat Q.Types.Spot instance GHC.Real.RealFrac Q.Types.Spot instance GHC.Real.Real Q.Types.Spot instance GHC.Real.Fractional Q.Types.Spot instance GHC.Num.Num Q.Types.Spot instance GHC.Classes.Ord Q.Types.Spot instance GHC.Read.Read Q.Types.Spot instance GHC.Show.Show Q.Types.Spot instance GHC.Classes.Eq Q.Types.Spot instance GHC.Generics.Generic Q.Types.Spot instance Foreign.Storable.Storable Q.Types.Forward instance GHC.Float.Floating Q.Types.Forward instance GHC.Float.RealFloat Q.Types.Forward instance GHC.Real.RealFrac Q.Types.Forward instance GHC.Real.Real Q.Types.Forward instance GHC.Real.Fractional Q.Types.Forward instance GHC.Num.Num Q.Types.Forward instance GHC.Classes.Ord Q.Types.Forward instance GHC.Read.Read Q.Types.Forward instance GHC.Show.Show Q.Types.Forward instance GHC.Classes.Eq Q.Types.Forward instance GHC.Generics.Generic Q.Types.Forward instance Foreign.Storable.Storable Q.Types.Strike instance GHC.Float.Floating Q.Types.Strike instance GHC.Float.RealFloat Q.Types.Strike instance GHC.Real.RealFrac Q.Types.Strike instance GHC.Real.Real Q.Types.Strike instance GHC.Real.Fractional Q.Types.Strike instance GHC.Num.Num Q.Types.Strike instance GHC.Classes.Ord Q.Types.Strike instance GHC.Read.Read Q.Types.Strike instance GHC.Show.Show Q.Types.Strike instance GHC.Classes.Eq Q.Types.Strike instance GHC.Generics.Generic Q.Types.Strike instance GHC.Classes.Ord Q.Types.Expiry instance GHC.Read.Read Q.Types.Expiry instance GHC.Show.Show Q.Types.Expiry instance GHC.Classes.Eq Q.Types.Expiry instance GHC.Generics.Generic Q.Types.Expiry instance Foreign.Storable.Storable Q.Types.Premium instance GHC.Float.Floating Q.Types.Premium instance GHC.Float.RealFloat Q.Types.Premium instance GHC.Real.RealFrac Q.Types.Premium instance GHC.Real.Real Q.Types.Premium instance GHC.Real.Fractional Q.Types.Premium instance GHC.Num.Num Q.Types.Premium instance GHC.Classes.Ord Q.Types.Premium instance GHC.Read.Read Q.Types.Premium instance GHC.Show.Show Q.Types.Premium instance GHC.Classes.Eq Q.Types.Premium instance GHC.Generics.Generic Q.Types.Premium instance Foreign.Storable.Storable Q.Types.Delta instance GHC.Float.Floating Q.Types.Delta instance GHC.Float.RealFloat Q.Types.Delta instance GHC.Real.RealFrac Q.Types.Delta instance GHC.Real.Real Q.Types.Delta instance GHC.Real.Fractional Q.Types.Delta instance GHC.Num.Num Q.Types.Delta instance GHC.Classes.Ord Q.Types.Delta instance GHC.Read.Read Q.Types.Delta instance GHC.Show.Show Q.Types.Delta instance GHC.Classes.Eq Q.Types.Delta instance GHC.Generics.Generic Q.Types.Delta instance Foreign.Storable.Storable Q.Types.Vega instance GHC.Float.Floating Q.Types.Vega instance GHC.Float.RealFloat Q.Types.Vega instance GHC.Real.RealFrac Q.Types.Vega instance GHC.Real.Real Q.Types.Vega instance GHC.Real.Fractional Q.Types.Vega instance GHC.Num.Num Q.Types.Vega instance GHC.Classes.Ord Q.Types.Vega instance GHC.Read.Read Q.Types.Vega instance GHC.Show.Show Q.Types.Vega instance GHC.Classes.Eq Q.Types.Vega instance GHC.Generics.Generic Q.Types.Vega instance Foreign.Storable.Storable Q.Types.Gamma instance GHC.Float.Floating Q.Types.Gamma instance GHC.Float.RealFloat Q.Types.Gamma instance GHC.Real.RealFrac Q.Types.Gamma instance GHC.Real.Real Q.Types.Gamma instance GHC.Real.Fractional Q.Types.Gamma instance GHC.Num.Num Q.Types.Gamma instance GHC.Classes.Ord Q.Types.Gamma instance GHC.Read.Read Q.Types.Gamma instance GHC.Show.Show Q.Types.Gamma instance GHC.Classes.Eq Q.Types.Gamma instance GHC.Generics.Generic Q.Types.Gamma instance Foreign.Storable.Storable Q.Types.YearFrac instance GHC.Float.Floating Q.Types.YearFrac instance GHC.Float.RealFloat Q.Types.YearFrac instance GHC.Real.RealFrac Q.Types.YearFrac instance GHC.Real.Real Q.Types.YearFrac instance GHC.Real.Fractional Q.Types.YearFrac instance GHC.Num.Num Q.Types.YearFrac instance GHC.Classes.Ord Q.Types.YearFrac instance GHC.Read.Read Q.Types.YearFrac instance GHC.Show.Show Q.Types.YearFrac instance GHC.Classes.Eq Q.Types.YearFrac instance GHC.Generics.Generic Q.Types.YearFrac instance Foreign.Storable.Storable Q.Types.Rate instance GHC.Float.Floating Q.Types.Rate instance GHC.Float.RealFloat Q.Types.Rate instance GHC.Real.RealFrac Q.Types.Rate instance GHC.Real.Real Q.Types.Rate instance GHC.Real.Fractional Q.Types.Rate instance GHC.Num.Num Q.Types.Rate instance GHC.Classes.Ord Q.Types.Rate instance GHC.Read.Read Q.Types.Rate instance GHC.Show.Show Q.Types.Rate instance GHC.Classes.Eq Q.Types.Rate instance GHC.Generics.Generic Q.Types.Rate instance Foreign.Storable.Storable Q.Types.DF instance GHC.Float.Floating Q.Types.DF instance GHC.Float.RealFloat Q.Types.DF instance GHC.Real.RealFrac Q.Types.DF instance GHC.Real.Real Q.Types.DF instance GHC.Real.Fractional Q.Types.DF instance GHC.Num.Num Q.Types.DF instance GHC.Classes.Ord Q.Types.DF instance GHC.Read.Read Q.Types.DF instance GHC.Show.Show Q.Types.DF instance GHC.Classes.Eq Q.Types.DF instance GHC.Generics.Generic Q.Types.DF instance Foreign.Storable.Storable Q.Types.Vol instance GHC.Float.Floating Q.Types.Vol instance GHC.Float.RealFloat Q.Types.Vol instance GHC.Real.RealFrac Q.Types.Vol instance GHC.Real.Real Q.Types.Vol instance GHC.Real.Fractional Q.Types.Vol instance GHC.Num.Num Q.Types.Vol instance GHC.Classes.Ord Q.Types.Vol instance GHC.Read.Read Q.Types.Vol instance GHC.Show.Show Q.Types.Vol instance GHC.Classes.Eq Q.Types.Vol instance GHC.Generics.Generic Q.Types.Vol instance Foreign.Storable.Storable Q.Types.TotalVar instance GHC.Float.Floating Q.Types.TotalVar instance GHC.Float.RealFloat Q.Types.TotalVar instance GHC.Real.RealFrac Q.Types.TotalVar instance GHC.Real.Real Q.Types.TotalVar instance GHC.Real.Fractional Q.Types.TotalVar instance GHC.Num.Num Q.Types.TotalVar instance GHC.Classes.Ord Q.Types.TotalVar instance GHC.Read.Read Q.Types.TotalVar instance GHC.Show.Show Q.Types.TotalVar instance GHC.Classes.Eq Q.Types.TotalVar instance GHC.Generics.Generic Q.Types.TotalVar instance Q.Types.Obs5 Q.Types.Observables5 instance Q.Types.Obs4 Q.Types.Observables4 instance Q.Types.Obs4 Q.Types.Observables5 instance Q.Types.Obs3 Q.Types.Observables3 instance Q.Types.Obs3 Q.Types.Observables4 instance Q.Types.Obs3 Q.Types.Observables5 instance Q.Types.Obs2 Q.Types.Observables2 instance Q.Types.Obs2 Q.Types.Observables3 instance Q.Types.Obs2 Q.Types.Observables4 instance Q.Types.Obs2 Q.Types.Observables5 instance Q.Types.Obs1 Q.Types.Observables1 instance Q.Types.Obs1 Q.Types.Observables2 instance Q.Types.Obs1 Q.Types.Observables3 instance Q.Types.Obs1 Q.Types.Observables4 instance Q.Types.Obs1 Q.Types.Observables5 instance Q.Types.TimeScaleable GHC.Types.Double instance Q.Types.TimeScaleable Q.Types.Rate instance Q.Types.TimeScaleable Q.Types.Vol instance Data.Csv.Conversion.FromField Q.Types.Vol instance Data.Csv.Conversion.ToField Q.Types.Vol instance Data.Csv.Conversion.FromField Q.Types.Rate instance Data.Csv.Conversion.ToField Q.Types.Rate instance Data.Csv.Conversion.FromField Q.Types.YearFrac instance Data.Csv.Conversion.ToField Q.Types.YearFrac instance Data.Csv.Conversion.FromField Q.Types.Gamma instance Data.Csv.Conversion.ToField Q.Types.Gamma instance Data.Csv.Conversion.FromField Q.Types.Vega instance Data.Csv.Conversion.ToField Q.Types.Vega instance Data.Csv.Conversion.FromField Q.Types.Delta instance Data.Csv.Conversion.ToField Q.Types.Delta instance Data.Csv.Conversion.FromField Q.Types.Premium instance Data.Csv.Conversion.ToField Q.Types.Premium instance Data.Csv.Conversion.FromField Q.Types.Expiry instance Data.Csv.Conversion.ToField Q.Types.Expiry instance Data.Csv.Conversion.FromField Q.Types.Strike instance Data.Csv.Conversion.ToField Q.Types.Strike instance Data.Csv.Conversion.FromField Q.Types.Spot instance Data.Csv.Conversion.ToField Q.Types.Spot instance Data.Csv.Conversion.FromField Q.Types.Cash instance Data.Csv.Conversion.ToField Q.Types.Cash instance GHC.Enum.Enum Q.Types.OptionType instance Data.Csv.Conversion.FromField Q.Types.OptionType instance Data.Csv.Conversion.ToField Q.Types.OptionType module Q.SortedVector fromList :: (Storable a, Ord a) => [a] -> SortedVector a fromVector :: (Storable a, Ord a) => Vector a -> SortedVector a fromSortedList :: Storable a => [a] -> SortedVector a newtype SortedVector a SortedVector :: Vector a -> SortedVector a minElement :: Storable a => SortedVector a -> a maxElement :: Storable a => SortedVector a -> a module Q.Interpolation class (Ord k, Storable k, Storable v) => Interpolator a k v interpolate :: Interpolator a k v => a -> [(k, v)] -> k -> v class (Ord k, Storable k, Storable v) => InterpolatorV a k v interpolateV :: InterpolatorV a k v => a -> SortedVector k -> Vector v -> k -> v instance (GHC.Classes.Ord k, Foreign.Storable.Storable k, Foreign.Storable.Storable v, Q.Interpolation.InterpolatorV a k v) => Q.Interpolation.Interpolator a k v module Q.Payoff class Payoff a payoff :: (Payoff a, Obs1 b) => a -> b -> Cash -- | Path independent payoffs based on a fixed strike. data StrikedPayoff -- | Vanilla option payoff <math> for call and <math> for put PlainVanillaPayoff :: OptionType -> Strike -> StrikedPayoff PercentagePayoff :: OptionType -> Strike -> StrikedPayoff AssetOrNothingPayoff :: OptionType -> Strike -> StrikedPayoff CashOrNothingPayoff :: OptionType -> Strike -> Cash -> StrikedPayoff instance Q.Payoff.Payoff Q.Payoff.StrikedPayoff module Q.Options.ImpliedVol.StrikeInterpolation data StrikeInterpolation Linear :: StrikeInterpolation CubicNatural :: StrikeInterpolation CubicAkima :: StrikeInterpolation CubicMonotone :: StrikeInterpolation data StrikeExtrapolation Constant :: StrikeExtrapolation ConstantGradient :: StrikeExtrapolation ConstantCurvature :: StrikeExtrapolation instance Q.Interpolation.InterpolatorV Q.Options.ImpliedVol.StrikeInterpolation.StrikeInterpolation Q.Types.Strike Q.Types.Vol module Q.Options data Valuation Valuation :: Premium -> Delta -> Vega -> Gamma -> Valuation [vPremium] :: Valuation -> Premium [vDelta] :: Valuation -> Delta [vVega] :: Valuation -> Vega [vGamma] :: Valuation -> Gamma -- | intrinsinc value of an option. intrinsinc :: OptionType -> Forward -> Strike -> DF -> Double -- | returns True if the undiscounted option premium is greater than the -- intrinsinc hasTimeValue :: OptionType -> Forward -> Strike -> Premium -> DF -> Bool instance GHC.Show.Show Q.Options.Valuation module Q.Options.Black76 data Black76 Black76 :: Forward -> DF -> YearFrac -> Vol -> Black76 [b76F] :: Black76 -> Forward [b76DF] :: Black76 -> DF [b76T] :: Black76 -> YearFrac [b76Vol] :: Black76 -> Vol -- | At the money forward strike. atmf :: Black76 -> Strike -- | European option valuation with black 76 euOption :: Black76 -> OptionType -> Strike -> Valuation -- | see euOption eucall :: Black76 -> Strike -> Valuation -- | see euOption euput :: Black76 -> Strike -> Valuation module Q.Greeks -- | A relative or an absolute bump. Used with numerical Greeks. data Bump Abs :: Double -> Bump Rel :: Double -> Bump data DiffMethod ForwardDiff :: DiffMethod BackwardDiff :: DiffMethod CenteralDiff :: DiffMethod class Bumpable a bumpUp :: Bumpable a => a -> Bump -> a bumpDown :: Bumpable a => a -> Bump -> a stepSize :: Bumpable a => a -> Bump -> Double firstOrder :: Bumpable a => DiffMethod -> Bump -> (a -> Double) -> a -> Double instance GHC.Types.Coercible a GHC.Types.Double => Q.Greeks.Bumpable a module Q.ContingentClaim -- | A cash flow is a time and amount. data CashFlow CashFlow :: LocalTime -> Double -> CashFlow -- | The cash flow time. [cfTime] :: CashFlow -> LocalTime -- | The cash flow amount. [cfAmount] :: CashFlow -> Double -- | Stop at time t and potentially apply n payouts up to the monitoring -- time. data CCProcessor a CCProcessor :: LocalTime -> [Map LocalTime a -> CashFlow] -> CCProcessor a -- | Stopping time. [monitorTime] :: CCProcessor a -> LocalTime -- | list of payout functions at the stopping time. [payouts] :: CCProcessor a -> [Map LocalTime a -> CashFlow] -- | A claim contingent on some observable a. -- -- An example of an observable is a spot driven asset, such as a stock. newtype ContingentClaim a ContingentClaim :: [CCProcessor a] -> ContingentClaim a [unCC] :: ContingentClaim a -> [CCProcessor a] -- | multipley a contingent claim by its notional. multiplier :: Double -> ContingentClaim a -> ContingentClaim a -- | Change direction of the portfolio short :: ContingentClaim a -> ContingentClaim a type CCBuilder w r a = WriterT w (Reader r) a -- | Monitor an observable at the given time t. monitor :: LocalTime -> CCBuilder (ContingentClaim a) (Map LocalTime a) a -- | Pay an amount at a given time pay :: forall a. LocalTime -> CCBuilder (ContingentClaim a) (Map LocalTime a) CashFlow -> ContingentClaim a instance GHC.Classes.Eq Q.ContingentClaim.CashFlow instance GHC.Show.Show Q.ContingentClaim.CashFlow instance GHC.Base.Monoid (Q.ContingentClaim.ContingentClaim a) instance GHC.Base.Semigroup (Q.ContingentClaim.ContingentClaim a) module Q.ContingentClaim.Options vanillaPayout :: OptionType -> Double -> Double -> Double spreadPayout :: OptionType -> Double -> Double -> Double -> Double straddlePayout :: Double -> Double -> Double vanillaOption :: OptionType -> Double -> LocalTime -> ContingentClaim Double callOption :: Double -> LocalTime -> ContingentClaim Double putOption :: Double -> LocalTime -> ContingentClaim Double -- | A call spread is a portfolio: <math> s.t. <math> callSpread :: Double -> Double -> LocalTime -> ContingentClaim Double -- | A put spread is a portfolio: <math> s.t. <math> putSpread :: Double -> Double -> LocalTime -> ContingentClaim Double -- | A straddle is a a portfolio :(C(K, T) + Put(K, T)) straddle :: Double -> LocalTime -> ContingentClaim Double module Q.MonteCarlo type Path b = [(Time, b)] -- | Summary type class aggregates all priced values of paths class (PathPricer p) => Summary m p | m -> p -- | Updates summary with given priced pathes sSummarize :: Summary m p => m -> [p] -> m -- | Defines a metric, i.e. calculate distance between 2 summaries sNorm :: Summary m p => m -> m -> Double -- | Path generator is a stochastic path generator class PathGenerator m pgMkNew :: PathGenerator m => m -> IO m pgGenerate :: PathGenerator m => Integer -> m -> Path b -- | Path pricer provides a price for given path class PathPricer m ppPrice :: PathPricer m => m -> Path b -> m type MonteCarlo s a = StateT [(Time, s)] RVar a -- | Generate a single trajectory stopping at each provided time. trajectory :: forall a b d. (StochasticProcess a b, Discretize d b) => d -> a -> b -> [Time] -> [RVar b] -> RVar [b] -- | Generate multiple trajectories. See trajectory trajectories :: forall a b d. (StochasticProcess a b, Discretize d b) => Int -> d -> a -> b -> [Time] -> [RVar b] -> RVar [[b]] observationTimes :: ContingentClaim a -> [Day] class Model a b | a -> b discountFactor :: Model a b => a -> YearFrac -> YearFrac -> RVar Rate evolve :: Model a b => a -> YearFrac -> StateT (YearFrac, b) RVar Double module Q.Options.BlackScholes -- | Parameters for a simplified black scholes equation. data BlackScholes BlackScholes :: Spot -> Rate -> Vol -> BlackScholes -- | The asset's spot on the valuation date. [bsSpot] :: BlackScholes -> Spot -- | Risk free rate. [bsRate] :: BlackScholes -> Rate -- | Volatility. [bsVol] :: BlackScholes -> Vol atmf :: BlackScholes -> YearFrac -> Strike -- | European option valuation with black scholes. euOption :: BlackScholes -> YearFrac -> OptionType -> Strike -> Valuation -- | see euOption eucall :: BlackScholes -> YearFrac -> Strike -> Valuation -- | see euOption euput :: BlackScholes -> YearFrac -> Strike -> Valuation instance GHC.Show.Show Q.Options.BlackScholes.BlackScholes instance Q.MonteCarlo.Model Q.Options.BlackScholes.BlackScholes GHC.Types.Double module Q.Options.ImpliedVol.LetsBeRational euImpliedVol :: OptionType -> Forward -> Strike -> YearFrac -> Rate -> Premium -> Vol module Q.Options.Bachelier data Bachelier Bachelier :: Forward -> Rate -> Vol -> Bachelier -- | European option valuation with bachelier model. euOption :: Bachelier -> YearFrac -> OptionType -> Strike -> Valuation -- | see euOption eucall :: Bachelier -> YearFrac -> Strike -> Valuation -- | see euOption euput :: Bachelier -> YearFrac -> Strike -> Valuation instance GHC.Show.Show Q.Options.Bachelier.Bachelier instance Q.MonteCarlo.Model Q.Options.Bachelier.Bachelier GHC.Types.Double module Q.Options.ImpliedVol.Normal -- | Method to use to calculate the normal implied vol. data Method -- | Jackel analytical formula approximation. Jackel :: Method -- | J. Choi, K kim, and M. Kwak (2009) | Numerical root finding. Currently -- Ridders is used. ChoKimKwak :: Method RootFinding :: Natural -> Tolerance -> (Double, Double, Double) -> Method -- | Maximum number of iterations. [maxIter] :: Method -> Natural -- | Tolerance (relative or absolute) [tol] :: Method -> Tolerance -- | Triple of (low bound, initial guess, upper bound). If initial -- guess if out of bracket middle of bracket is taken as. [bracket] :: Method -> (Double, Double, Double) -- | Default method implementation of euImpliedVolWith using -- Jackel. euImpliedVol :: OptionType -> Forward -> Strike -> YearFrac -> Rate -> Premium -> Vol -- | Calcualte the bachelier option implied vol of a european option. -- -- If the options premium does not have time value -- hasTimeValue return 0. euImpliedVolWith :: Method -> OptionType -> Forward -> Strike -> YearFrac -> Rate -> Premium -> Vol euImpliedVolWith' :: Method -> OptionType -> Forward -> Strike -> YearFrac -> Rate -> Premium -> Vol sqrtEpsilon :: Double h :: Floating p => p -> p instance Data.Default.Class.Default Q.Options.ImpliedVol.Normal.Method module Q.Options.ImpliedVol newtype LogRelStrike LogRel :: Double -> LogRelStrike newtype AbsRelStrike AbsRel :: Double -> AbsRelStrike newtype MoneynessForwardStrike MoneynessForward :: Double -> MoneynessForwardStrike newtype LogMoneynessForwardStrike LogMoneynessForward :: Double -> LogMoneynessForwardStrike newtype MoneynessSpotStrike MoneynessSpot :: Double -> MoneynessSpotStrike newtype LogMoneynessSpotStrike LogMoneynessSpot :: Double -> LogMoneynessSpotStrike newtype VolShift VolShift :: Double -> VolShift data VolType Normal :: VolType LogNormal :: VolType ShiftedLogNormal :: VolShift -> VolType euImpliedVol :: VolType -> OptionType -> Forward -> Strike -> YearFrac -> DF -> Premium -> Vol instance Foreign.Storable.Storable Q.Options.ImpliedVol.AbsRelStrike instance GHC.Float.Floating Q.Options.ImpliedVol.AbsRelStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.AbsRelStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.AbsRelStrike instance GHC.Real.Real Q.Options.ImpliedVol.AbsRelStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.AbsRelStrike instance GHC.Num.Num Q.Options.ImpliedVol.AbsRelStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.AbsRelStrike instance GHC.Read.Read Q.Options.ImpliedVol.AbsRelStrike instance GHC.Show.Show Q.Options.ImpliedVol.AbsRelStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.AbsRelStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.AbsRelStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.LogRelStrike instance GHC.Float.Floating Q.Options.ImpliedVol.LogRelStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.LogRelStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.LogRelStrike instance GHC.Real.Real Q.Options.ImpliedVol.LogRelStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.LogRelStrike instance GHC.Num.Num Q.Options.ImpliedVol.LogRelStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.LogRelStrike instance GHC.Read.Read Q.Options.ImpliedVol.LogRelStrike instance GHC.Show.Show Q.Options.ImpliedVol.LogRelStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.LogRelStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.LogRelStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Float.Floating Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Real.Real Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Num.Num Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Read.Read Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Show.Show Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.MoneynessForwardStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.MoneynessForwardStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Float.Floating Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Real.Real Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Num.Num Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Read.Read Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Show.Show Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.LogMoneynessForwardStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.LogMoneynessForwardStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Float.Floating Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Real.Real Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Num.Num Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Read.Read Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Show.Show Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.MoneynessSpotStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.MoneynessSpotStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Float.Floating Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Float.RealFloat Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Real.RealFrac Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Real.Real Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Real.Fractional Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Num.Num Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Classes.Ord Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Read.Read Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Show.Show Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Classes.Eq Q.Options.ImpliedVol.LogMoneynessSpotStrike instance GHC.Generics.Generic Q.Options.ImpliedVol.LogMoneynessSpotStrike instance Foreign.Storable.Storable Q.Options.ImpliedVol.VolShift instance GHC.Float.Floating Q.Options.ImpliedVol.VolShift instance GHC.Float.RealFloat Q.Options.ImpliedVol.VolShift instance GHC.Real.RealFrac Q.Options.ImpliedVol.VolShift instance GHC.Real.Real Q.Options.ImpliedVol.VolShift instance GHC.Real.Fractional Q.Options.ImpliedVol.VolShift instance GHC.Num.Num Q.Options.ImpliedVol.VolShift instance GHC.Classes.Ord Q.Options.ImpliedVol.VolShift instance GHC.Read.Read Q.Options.ImpliedVol.VolShift instance GHC.Show.Show Q.Options.ImpliedVol.VolShift instance GHC.Classes.Eq Q.Options.ImpliedVol.VolShift instance GHC.Generics.Generic Q.Options.ImpliedVol.VolShift instance GHC.Read.Read Q.Options.ImpliedVol.VolType instance GHC.Show.Show Q.Options.ImpliedVol.VolType instance GHC.Classes.Eq Q.Options.ImpliedVol.VolType instance GHC.Generics.Generic Q.Options.ImpliedVol.VolType module Q.Options.ImpliedVol.TimeSlice class TimeSlice v k totalVar :: TimeSlice v k => v -> k -> TotalVar instance Q.Options.ImpliedVol.TimeSlice.TimeSlice (k -> Q.Types.TotalVar) k instance Q.Options.ImpliedVol.TimeSlice.TimeSlice Q.Options.Black76.Black76 k module Q.Options.ImpliedVol.TimeInterpolation data TimeInterpolation LinearInVol :: TimeInterpolation LinearInTotalVar :: TimeInterpolation Gatheral :: TimeInterpolation data TimeExtrapolation TerminalMoneyness :: TimeExtrapolation module Q.Options.ImpliedVol.SVI newtype Alpha Alpha :: Double -> Alpha newtype Beta Beta :: Double -> Beta newtype Rho Rho :: Double -> Rho newtype M M :: Double -> M newtype Sigma Sigma :: Double -> Sigma -- | Stochastic volatility inspired parameterization of the vol surface. data SVI -- | The original raw SVI representation from Gatheral RSVI :: Alpha -> Beta -> Rho -> M -> Sigma -> SVI isValidSVI :: SVI -> Bool instance GHC.Float.Floating Q.Options.ImpliedVol.SVI.Alpha instance GHC.Real.Fractional Q.Options.ImpliedVol.SVI.Alpha instance GHC.Num.Num Q.Options.ImpliedVol.SVI.Alpha instance GHC.Classes.Ord Q.Options.ImpliedVol.SVI.Alpha instance GHC.Show.Show Q.Options.ImpliedVol.SVI.Alpha instance GHC.Classes.Eq Q.Options.ImpliedVol.SVI.Alpha instance GHC.Generics.Generic Q.Options.ImpliedVol.SVI.Alpha instance GHC.Float.Floating Q.Options.ImpliedVol.SVI.Beta instance GHC.Real.Fractional Q.Options.ImpliedVol.SVI.Beta instance GHC.Num.Num Q.Options.ImpliedVol.SVI.Beta instance GHC.Classes.Ord Q.Options.ImpliedVol.SVI.Beta instance GHC.Show.Show Q.Options.ImpliedVol.SVI.Beta instance GHC.Classes.Eq Q.Options.ImpliedVol.SVI.Beta instance GHC.Generics.Generic Q.Options.ImpliedVol.SVI.Beta instance GHC.Float.Floating Q.Options.ImpliedVol.SVI.Rho instance GHC.Real.Fractional Q.Options.ImpliedVol.SVI.Rho instance GHC.Num.Num Q.Options.ImpliedVol.SVI.Rho instance GHC.Classes.Ord Q.Options.ImpliedVol.SVI.Rho instance GHC.Show.Show Q.Options.ImpliedVol.SVI.Rho instance GHC.Classes.Eq Q.Options.ImpliedVol.SVI.Rho instance GHC.Generics.Generic Q.Options.ImpliedVol.SVI.Rho instance GHC.Float.Floating Q.Options.ImpliedVol.SVI.M instance GHC.Real.Fractional Q.Options.ImpliedVol.SVI.M instance GHC.Num.Num Q.Options.ImpliedVol.SVI.M instance GHC.Classes.Ord Q.Options.ImpliedVol.SVI.M instance GHC.Show.Show Q.Options.ImpliedVol.SVI.M instance GHC.Classes.Eq Q.Options.ImpliedVol.SVI.M instance GHC.Generics.Generic Q.Options.ImpliedVol.SVI.M instance GHC.Float.Floating Q.Options.ImpliedVol.SVI.Sigma instance GHC.Real.Fractional Q.Options.ImpliedVol.SVI.Sigma instance GHC.Num.Num Q.Options.ImpliedVol.SVI.Sigma instance GHC.Classes.Ord Q.Options.ImpliedVol.SVI.Sigma instance GHC.Show.Show Q.Options.ImpliedVol.SVI.Sigma instance GHC.Classes.Eq Q.Options.ImpliedVol.SVI.Sigma instance GHC.Generics.Generic Q.Options.ImpliedVol.SVI.Sigma instance Q.Options.ImpliedVol.TimeSlice.TimeSlice Q.Options.ImpliedVol.SVI.SVI Q.Options.ImpliedVol.LogRelStrike module Q.Options.ImpliedVol.InterpolatingSmile data InterpolatingSmile StrikeSmile :: Forward -> YearFrac -> SortedVector Strike -> Vector Vol -> StrikeInterpolation -> StrikeExtrapolation -> Strike -> Strike -> InterpolatingSmile [smileForward] :: InterpolatingSmile -> Forward [smileTenor] :: InterpolatingSmile -> YearFrac [smileStrikes] :: InterpolatingSmile -> SortedVector Strike [smileVols] :: InterpolatingSmile -> Vector Vol [smileInterpolation] :: InterpolatingSmile -> StrikeInterpolation [smileExtrapolation] :: InterpolatingSmile -> StrikeExtrapolation [smileMinStrike] :: InterpolatingSmile -> Strike [smileMaxStrike] :: InterpolatingSmile -> Strike impliedVol :: InterpolatingSmile -> Strike -> Vol instance Q.Options.ImpliedVol.TimeSlice.TimeSlice Q.Options.ImpliedVol.InterpolatingSmile.InterpolatingSmile Q.Types.Strike module Q.Options.ImpliedVol.Surface -- | Implied volatility surface where the strikes are in the space of -- k and implied volatility time slice is v. data Surface v k Surface :: Spot -> SortedVector YearFrac -> (YearFrac -> Forward) -> (YearFrac -> DF) -> (YearFrac -> TotalVar) -> Map YearFrac v -> TimeInterpolation -> VolType -> Surface v k -- | Spot. [surfaceSpot] :: Surface v k -> Spot -- | Ordered list of tenors. [surfaceTenors] :: Surface v k -> SortedVector YearFrac -- | The forward curve. [surfaceForwardCurve] :: Surface v k -> YearFrac -> Forward -- | The discount curve. [surfaceDiscountCurve] :: Surface v k -> YearFrac -> DF -- | A spline of the at the money total variance. [surfaceAtmTotalVar] :: Surface v k -> YearFrac -> TotalVar -- | Map from tenor to TimeSlice [surfaceVols] :: Surface v k -> Map YearFrac v -- | Method of interpolation between tenors. [surfaceTimeInterpolation] :: Surface v k -> TimeInterpolation -- | The type of surface. [surfaceType] :: Surface v k -> VolType totalVarKT :: (StrikeSpace k, TimeSlice v k) => Surface v k -> Strike -> YearFrac -> TotalVar fwdTotalVarKT :: (StrikeSpace k, TimeSlice v k) => Surface v k -> Strike -> YearFrac -> Strike -> YearFrac -> TotalVar volKT :: (StrikeSpace k, TimeSlice v k) => Surface v k -> Strike -> YearFrac -> Vol instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Types.Strike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.AbsRelStrike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.LogRelStrike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.MoneynessForwardStrike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.LogMoneynessForwardStrike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.LogMoneynessSpotStrike instance Q.Options.ImpliedVol.Surface.StrikeSpace Q.Options.ImpliedVol.MoneynessSpotStrike module Q.Util.File write :: Show t => [[t]] -> [String] -> FilePath -> IO ()