never executed always true always false
1 -- GENERATED by C->Haskell Compiler, version 0.28.8 Switcheroo, 25 November 2017 (Haskell)
2 -- Edit the ORIGNAL .chs file instead!
3
4
5 module QuantLib.TermStructure.Credit
6 (
7 ProbabilityTrait(..)
8 , DefaultProbabilityTermStructure
9 , DefaultProbabilityHelper
10 , factorSpreadedHazardRateCurve
11 , flatHazardRate'
12 , flatHazardRate
13 , spreadedHazardRateCurve
14 , defaultProbability
15 , hazardRate'
16 , hazardRate
17 , survivalProbability'
18 , survivalProbability
19 , defaultDensity'
20 , defaultDensity
21 , defaultProbability'
22 , defaultProbabilityBetween
23 , defaultProbabilityBetween'
24 , spreadCdsHelper
25 , upfrontCdsHelper
26 , interpolatedDefaultDensityCurve
27 , interpolatedHazardRateCurve
28 , interpolatedSurvivalProbabilityCurve
29 , piecewiseDefaultCurve
30 , piecewiseDefaultCurve'
31 ) where
32 import qualified Foreign.C.Types as C2HSImp
33 import qualified Foreign.ForeignPtr as C2HSImp
34 import qualified Foreign.Marshal.Utils as C2HSImp
35 import qualified Foreign.Ptr as C2HSImp
36
37
38
39
40
41
42
43 import QuantLib.Internal
44 import QuantLib.Instrument(PricingModel)
45 import QuantLib.Internal.Type
46 import QuantLib.Time.Schedule(DateGenerationRule, Frequency)
47 import QuantLib.Internal.Common
48
49 data ProbabilityTrait = SurvivalProbability
50 | HazardRate
51 | DefaultDensity
52 deriving (Show,Eq,Read)
53 instance Enum ProbabilityTrait where
54 succ SurvivalProbability = HazardRate
55 succ HazardRate = DefaultDensity
56 succ DefaultDensity = error "ProbabilityTrait.succ: DefaultDensity has no successor"
57
58 pred HazardRate = SurvivalProbability
59 pred DefaultDensity = HazardRate
60 pred SurvivalProbability = error "ProbabilityTrait.pred: SurvivalProbability has no predecessor"
61
62 enumFromTo from to = go from
63 where
64 end = fromEnum to
65 go v = case compare (fromEnum v) end of
66 LT -> v : go (succ v)
67 EQ -> [v]
68 GT -> []
69
70 enumFrom from = enumFromTo from DefaultDensity
71
72 fromEnum SurvivalProbability = 0
73 fromEnum HazardRate = 1
74 fromEnum DefaultDensity = 2
75
76 toEnum 0 = SurvivalProbability
77 toEnum 1 = HazardRate
78 toEnum 2 = DefaultDensity
79 toEnum unmatched = error ("ProbabilityTrait.toEnum: Cannot match " ++ show unmatched)
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 -- |a curve whose hazard rate is another curve's, scaled by a spread factor
98 factorSpreadedHazardRateCurve :: (DefaultProbabilityTermStructure) -> (GenQuote q) -> IO ((DefaultProbabilityTermStructure))
99 factorSpreadedHazardRateCurve a1 a2 =
100 withGenTermStructure a1 $ \a1' ->
101 withQuote a2 $ \a2' ->
102 preErrorCheck $ \a3' ->
103 factorSpreadedHazardRateCurve'_ a1' a2' a3' >>= \res ->
104 peekDefaultProbabilityTermStructure res >>= \res' ->
105 errorCheck a3'>>
106 return (res')
107
108
109
110 -- |flat hazard-rate curve anchored at a settlement date
111 flatHazardRate' :: (Word) -> (Calendar) -> (GenQuote q) -> (DayCounter) -> IO ((DefaultProbabilityTermStructure))
112 flatHazardRate' a1 a2 a3 a4 =
113 let {a1' = fromIntegral a1} in
114 withCalendar a2 $ \a2' ->
115 withQuote a3 $ \a3' ->
116 withDayCounter a4 $ \a4' ->
117 preErrorCheck $ \a5' ->
118 flatHazardRate''_ a1' a2' a3' a4' a5' >>= \res ->
119 peekDefaultProbabilityTermStructure res >>= \res' ->
120 errorCheck a5'>>
121 return (res')
122
123
124
125 -- |flat hazard-rate curve anchored at a reference date
126 flatHazardRate :: (Day) -> (GenQuote q) -> (DayCounter) -> IO ((DefaultProbabilityTermStructure))
127 flatHazardRate a1 a2 a3 =
128 withDay a1 $ \a1' ->
129 withQuote a2 $ \a2' ->
130 withDayCounter a3 $ \a3' ->
131 preErrorCheck $ \a4' ->
132 flatHazardRate'_ a1' a2' a3' a4' >>= \res ->
133 peekDefaultProbabilityTermStructure res >>= \res' ->
134 errorCheck a4'>>
135 return (res')
136
137
138
139 -- |a curve whose survival probability is another curve's, multiplied by a spread factor
140 spreadedHazardRateCurve :: (DefaultProbabilityTermStructure) -> (GenQuote q) -> IO ((DefaultProbabilityTermStructure))
141 spreadedHazardRateCurve a1 a2 =
142 withGenTermStructure a1 $ \a1' ->
143 withQuote a2 $ \a2' ->
144 preErrorCheck $ \a3' ->
145 spreadedHazardRateCurve'_ a1' a2' a3' >>= \res ->
146 peekDefaultProbabilityTermStructure res >>= \res' ->
147 errorCheck a3'>>
148 return (res')
149
150
151
152 -- |default probability from the reference date until a given date
153 defaultProbability :: (DefaultProbabilityTermStructure) -> (Day) -> (Bool) -- ^extrapolate
154 -> IO ((Double))
155 defaultProbability a1 a2 a3 =
156 withGenTermStructure a1 $ \a1' ->
157 withDay a2 $ \a2' ->
158 let {a3' = C2HSImp.fromBool a3} in
159 preErrorCheck $ \a4' ->
160 defaultProbability'_ a1' a2' a3' a4' >>= \res ->
161 let {res' = realToFrac res} in
162 errorCheck a4'>>
163 return (res')
164
165
166
167 -- |hazard rate at a given time, with annual frequency and continuous compounding
168 hazardRate' :: (DefaultProbabilityTermStructure) -> (Double) -> (Bool) -- ^extrapolate
169 -> IO ((Double))
170 hazardRate' a1 a2 a3 =
171 withGenTermStructure a1 $ \a1' ->
172 let {a2' = realToFrac a2} in
173 let {a3' = C2HSImp.fromBool a3} in
174 preErrorCheck $ \a4' ->
175 hazardRate''_ a1' a2' a3' a4' >>= \res ->
176 let {res' = realToFrac res} in
177 errorCheck a4'>>
178 return (res')
179
180
181
182 -- |hazard rate at a given date, with annual frequency and continuous compounding
183 hazardRate :: (DefaultProbabilityTermStructure) -> (Day) -> (Bool) -- ^extrapolate
184 -> IO ((Double))
185 hazardRate a1 a2 a3 =
186 withGenTermStructure a1 $ \a1' ->
187 withDay a2 $ \a2' ->
188 let {a3' = C2HSImp.fromBool a3} in
189 preErrorCheck $ \a4' ->
190 hazardRate'_ a1' a2' a3' a4' >>= \res ->
191 let {res' = realToFrac res} in
192 errorCheck a4'>>
193 return (res')
194
195
196
197 -- |The same day-counting rule used by the term structure should be used for calculating the passed time t.
198 survivalProbability' :: (DefaultProbabilityTermStructure) -> (Double) -> (Bool) -- ^extrapolate
199 -> IO ((Double))
200 survivalProbability' a1 a2 a3 =
201 withGenTermStructure a1 $ \a1' ->
202 let {a2' = realToFrac a2} in
203 let {a3' = C2HSImp.fromBool a3} in
204 preErrorCheck $ \a4' ->
205 survivalProbability''_ a1' a2' a3' a4' >>= \res ->
206 let {res' = realToFrac res} in
207 errorCheck a4'>>
208 return (res')
209
210
211
212 -- |survival probability from the reference date until a given date
213 survivalProbability :: (DefaultProbabilityTermStructure) -> (Day) -> (Bool) -- ^extrapolate
214 -> IO ((Double))
215 survivalProbability a1 a2 a3 =
216 withGenTermStructure a1 $ \a1' ->
217 withDay a2 $ \a2' ->
218 let {a3' = C2HSImp.fromBool a3} in
219 preErrorCheck $ \a4' ->
220 survivalProbability'_ a1' a2' a3' a4' >>= \res ->
221 let {res' = realToFrac res} in
222 errorCheck a4'>>
223 return (res')
224
225
226
227 -- |The same day-counting rule used by the term structure should be used for calculating the passed time t.
228 defaultDensity' :: (DefaultProbabilityTermStructure) -> (Double) -> (Bool) -- ^extrapolate
229 -> IO ((Double))
230 defaultDensity' a1 a2 a3 =
231 withGenTermStructure a1 $ \a1' ->
232 let {a2' = realToFrac a2} in
233 let {a3' = C2HSImp.fromBool a3} in
234 preErrorCheck $ \a4' ->
235 defaultDensity''_ a1' a2' a3' a4' >>= \res ->
236 let {res' = realToFrac res} in
237 errorCheck a4'>>
238 return (res')
239
240
241
242 -- |default density at a given date
243 defaultDensity :: (DefaultProbabilityTermStructure) -> (Day) -> (Bool) -- ^extrapolate
244 -> IO ((Double))
245 defaultDensity a1 a2 a3 =
246 withGenTermStructure a1 $ \a1' ->
247 withDay a2 $ \a2' ->
248 let {a3' = C2HSImp.fromBool a3} in
249 preErrorCheck $ \a4' ->
250 defaultDensity'_ a1' a2' a3' a4' >>= \res ->
251 let {res' = realToFrac res} in
252 errorCheck a4'>>
253 return (res')
254
255
256
257 -- |The same day-counting rule used by the term structure should be used for calculating the passed time t.
258 defaultProbability' :: (DefaultProbabilityTermStructure) -> (Double) -> (Bool) -- ^extrapolate
259 -> IO ((Double))
260 defaultProbability' a1 a2 a3 =
261 withGenTermStructure a1 $ \a1' ->
262 let {a2' = realToFrac a2} in
263 let {a3' = C2HSImp.fromBool a3} in
264 preErrorCheck $ \a4' ->
265 defaultProbability''_ a1' a2' a3' a4' >>= \res ->
266 let {res' = realToFrac res} in
267 errorCheck a4'>>
268 return (res')
269
270
271
272 -- |probability of default between two given dates
273 defaultProbabilityBetween :: (DefaultProbabilityTermStructure) -> (Day) -> (Day) -> (Bool) -- ^extrapolate
274 -> IO ((Double))
275 defaultProbabilityBetween a1 a2 a3 a4 =
276 withGenTermStructure a1 $ \a1' ->
277 withDay a2 $ \a2' ->
278 withDay a3 $ \a3' ->
279 let {a4' = C2HSImp.fromBool a4} in
280 preErrorCheck $ \a5' ->
281 defaultProbabilityBetween'_ a1' a2' a3' a4' a5' >>= \res ->
282 let {res' = realToFrac res} in
283 errorCheck a5'>>
284 return (res')
285
286
287
288 -- |probability of default between two given times
289 defaultProbabilityBetween' :: (DefaultProbabilityTermStructure) -> (Double) -> (Double) -> (Bool) -- ^extrapolate
290 -> IO ((Double))
291 defaultProbabilityBetween' a1 a2 a3 a4 =
292 withGenTermStructure a1 $ \a1' ->
293 let {a2' = realToFrac a2} in
294 let {a3' = realToFrac a3} in
295 let {a4' = C2HSImp.fromBool a4} in
296 preErrorCheck $ \a5' ->
297 defaultProbabilityBetween''_ a1' a2' a3' a4' a5' >>= \res ->
298 let {res' = realToFrac res} in
299 errorCheck a5'>>
300 return (res')
301
302
303
304 -- |bootstrap helper for a CDS quoted by running spread
305 spreadCdsHelper :: (GenQuote q) -- ^runningSpread
306 -> ((Word,TimeUnit)) -- ^tenor
307 -> (Int) -- ^settlementDays
308 -> (Calendar) -> (Frequency) -> (BusinessDayConvention) -> (DateGenerationRule) -> (DayCounter) -> (Double) -- recoveryRate
309 -> (GenYieldTermStructure y) -- ^discountCurve
310 -> (Bool) -- ^settlesAccrual
311 -> (Bool) -- ^paysAtDefaultTime
312 -> (Maybe Day) -- ^startDate
313 -> (DayCounter) -- ^lastPeriodDayCounter
314 -> (Bool) -- ^rebatesAccrual
315 -> (PricingModel) -- ^model
316 -> IO ((DefaultProbabilityHelper))
317 spreadCdsHelper a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
318 withQuote a1 $ \a1' ->
319 let {(a2'1, a2'2) = fromEnumQuantity a2} in
320 let {a3' = fromIntegral a3} in
321 withCalendar a4 $ \a4' ->
322 let {a5' = (fromIntegral . fromEnum) a5} in
323 let {a6' = fromEnumC a6} in
324 let {a7' = (fromIntegral . fromEnum) a7} in
325 withDayCounter a8 $ \a8' ->
326 let {a9' = realToFrac a9} in
327 withYieldTermStructure a10 $ \a10' ->
328 let {a11' = C2HSImp.fromBool a11} in
329 let {a12' = C2HSImp.fromBool a12} in
330 withMaybeDay a13 $ \a13' ->
331 withDayCounter a14 $ \a14' ->
332 let {a15' = C2HSImp.fromBool a15} in
333 let {a16' = (fromIntegral . fromEnum) a16} in
334 preErrorCheck $ \a17' ->
335 spreadCdsHelper'_ a1' a2'1 a2'2 a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
336 peekDefaultProbabilityHelper res >>= \res' ->
337 errorCheck a17'>>
338 return (res')
339
340
341
342 -- |the upfront must be quoted in fractional units.
343 upfrontCdsHelper :: (GenQuote q) -- ^upfront
344 -> (Double) -- ^runningSpread
345 -> ((Word,TimeUnit)) -- ^tenor
346 -> (Int) -- ^settlementDays
347 -> (Calendar) -> (Frequency) -> (BusinessDayConvention) -> (DateGenerationRule) -> (DayCounter) -> (Double) -- ^recoveryDate
348 -> (GenYieldTermStructure y) -- ^discountCurve
349 -> (Word) -- ^upfrontSettlementDays
350 -> (Bool) -- &settlesAccrual
351 -> (Bool) -- ^paysAtDefaultTime
352 -> (Maybe Day) -- ^startDate
353 -> (DayCounter) -- ^lastPeriodDayCounter
354 -> (Bool) -- ^rebatesAccrual
355 -> (PricingModel) -- ^model
356 -> IO ((DefaultProbabilityHelper))
357 upfrontCdsHelper a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
358 withQuote a1 $ \a1' ->
359 let {a2' = realToFrac a2} in
360 let {(a3'1, a3'2) = fromEnumQuantity a3} in
361 let {a4' = fromIntegral a4} in
362 withCalendar a5 $ \a5' ->
363 let {a6' = (fromIntegral . fromEnum) a6} in
364 let {a7' = fromEnumC a7} in
365 let {a8' = (fromIntegral . fromEnum) a8} in
366 withDayCounter a9 $ \a9' ->
367 let {a10' = realToFrac a10} in
368 withYieldTermStructure a11 $ \a11' ->
369 let {a12' = fromIntegral a12} in
370 let {a13' = C2HSImp.fromBool a13} in
371 let {a14' = C2HSImp.fromBool a14} in
372 withMaybeDay a15 $ \a15' ->
373 withDayCounter a16 $ \a16' ->
374 let {a17' = C2HSImp.fromBool a17} in
375 let {a18' = (fromIntegral . fromEnum) a18} in
376 preErrorCheck $ \a19' ->
377 upfrontCdsHelper'_ a1' a2' a3'1 a3'2 a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' >>= \res ->
378 peekDefaultProbabilityHelper res >>= \res' ->
379 errorCheck a19'>>
380 return (res')
381
382
383
384 interpolatedDefaultDensityCurve :: [(Day, Double)] -> DayCounter -> Calendar -> [(Day, GenQuote q)] -- ^jumps
385 -> Interpolation -> IO DefaultProbabilityTermStructure
386 interpolatedDefaultDensityCurve d dc c q i = uncurryNested (qlInterpolatedDefaultDensityCurve dd dq dc c qq qd) (qlInterpolation i) where {(qd, qq) = unzip q; (dd, dq) = unzip d}
387
388 -- |default-probability term structure built by interpolating default densities at given dates
389 qlInterpolatedDefaultDensityCurve :: ([Day]) -> ([Double]) -> (DayCounter) -> (Calendar) -> ([GenQuote q]) -> ([Day]) -> (Int) -> (Int) -> (Int) -> IO ((DefaultProbabilityTermStructure))
390 qlInterpolatedDefaultDensityCurve a1 a2 a3 a4 a5 a6 a7 a8 a9 =
391 withDayArray a1 $ \(a1'1, a1'2) ->
392 withDoubleArray a2 $ \(a2'1, a2'2) ->
393 withDayCounter a3 $ \a3' ->
394 withCalendar a4 $ \a4' ->
395 withQuoteArray a5 $ \(a5'1, a5'2) ->
396 withDayArray a6 $ \(a6'1, a6'2) ->
397 let {a7' = fromIntegral a7} in
398 let {a8' = fromIntegral a8} in
399 let {a9' = fromIntegral a9} in
400 preErrorCheck $ \a10' ->
401 qlInterpolatedDefaultDensityCurve'_ a1'1 a1'2 a2'1 a2'2 a3' a4' a5'1 a5'2 a6'1 a6'2 a7' a8' a9' a10' >>= \res ->
402 peekDefaultProbabilityTermStructure res >>= \res' ->
403 errorCheck a10'>>
404 return (res')
405
406
407
408 interpolatedHazardRateCurve :: [(Day, Double)] -> DayCounter -> Calendar -> [(Day, GenQuote q)] -- ^jumps
409 -> Interpolation
410 -> Bool -- ^extrapolate past the curve's max date
411 -> IO DefaultProbabilityTermStructure
412 interpolatedHazardRateCurve d dc c q i ex = uncurryNested (qlInterpolatedHazardRateCurve dd dq dc c qq qd) (qlInterpolation i) ex where {(qd, qq) = unzip q; (dd, dq) = unzip d}
413
414 -- |default-probability term structure built by interpolating hazard rates at given dates
415 qlInterpolatedHazardRateCurve :: ([Day]) -> ([Double]) -> (DayCounter) -> (Calendar) -> ([GenQuote q]) -> ([Day]) -> (Int) -> (Int) -> (Int) -> (Bool) -> IO ((DefaultProbabilityTermStructure))
416 qlInterpolatedHazardRateCurve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 =
417 withDayArray a1 $ \(a1'1, a1'2) ->
418 withDoubleArray a2 $ \(a2'1, a2'2) ->
419 withDayCounter a3 $ \a3' ->
420 withCalendar a4 $ \a4' ->
421 withQuoteArray a5 $ \(a5'1, a5'2) ->
422 withDayArray a6 $ \(a6'1, a6'2) ->
423 let {a7' = fromIntegral a7} in
424 let {a8' = fromIntegral a8} in
425 let {a9' = fromIntegral a9} in
426 let {a10' = C2HSImp.fromBool a10} in
427 preErrorCheck $ \a11' ->
428 qlInterpolatedHazardRateCurve'_ a1'1 a1'2 a2'1 a2'2 a3' a4' a5'1 a5'2 a6'1 a6'2 a7' a8' a9' a10' a11' >>= \res ->
429 peekDefaultProbabilityTermStructure res >>= \res' ->
430 errorCheck a11'>>
431 return (res')
432
433
434
435 interpolatedSurvivalProbabilityCurve :: [(Day, Double)] -> DayCounter -> Calendar -> [(Day, GenQuote q)] -- ^jumps
436 -> Interpolation -> IO DefaultProbabilityTermStructure
437 interpolatedSurvivalProbabilityCurve d dc c q i = uncurryNested (qlInterpolatedSurvivalProbabilityCurve dd dq dc c qq qd) (qlInterpolation i) where {(qd, qq) = unzip q; (dd, dq) = unzip d}
438
439 -- |default-probability term structure built by interpolating survival probabilities at given dates
440 qlInterpolatedSurvivalProbabilityCurve :: ([Day]) -> ([Double]) -> (DayCounter) -> (Calendar) -> ([GenQuote q]) -> ([Day]) -> (Int) -> (Int) -> (Int) -> IO ((DefaultProbabilityTermStructure))
441 qlInterpolatedSurvivalProbabilityCurve a1 a2 a3 a4 a5 a6 a7 a8 a9 =
442 withDayArray a1 $ \(a1'1, a1'2) ->
443 withDoubleArray a2 $ \(a2'1, a2'2) ->
444 withDayCounter a3 $ \a3' ->
445 withCalendar a4 $ \a4' ->
446 withQuoteArray a5 $ \(a5'1, a5'2) ->
447 withDayArray a6 $ \(a6'1, a6'2) ->
448 let {a7' = fromIntegral a7} in
449 let {a8' = fromIntegral a8} in
450 let {a9' = fromIntegral a9} in
451 preErrorCheck $ \a10' ->
452 qlInterpolatedSurvivalProbabilityCurve'_ a1'1 a1'2 a2'1 a2'2 a3' a4' a5'1 a5'2 a6'1 a6'2 a7' a8' a9' a10' >>= \res ->
453 peekDefaultProbabilityTermStructure res >>= \res' ->
454 errorCheck a10'>>
455 return (res')
456
457
458
459 piecewiseDefaultCurve :: Day -> [DefaultProbabilityHelper] -> DayCounter -> [(Day, GenQuote q)] -- ^jumps
460 -> ProbabilityTrait -> Interpolation -> IO DefaultProbabilityTermStructure
461 piecewiseDefaultCurve d h dc q t i = uncurryNested (qlPiecewiseDefaultCurve d h dc qq qd t) (qlInterpolation i) where (qd, qq) = unzip q
462 -- |default-probability term structure bootstrapped from CDS/default helpers, anchored at an explicit reference date
463 qlPiecewiseDefaultCurve :: (Day) -> ([DefaultProbabilityHelper]) -> (DayCounter) -> ([GenQuote q]) -> ([Day]) -> (ProbabilityTrait) -> (Int) -> (Int) -> (Int) -> IO ((DefaultProbabilityTermStructure))
464 qlPiecewiseDefaultCurve a1 a2 a3 a4 a5 a6 a7 a8 a9 =
465 withDay a1 $ \a1' ->
466 withDefaultProbabilityHelperArray a2 $ \(a2'1, a2'2) ->
467 withDayCounter a3 $ \a3' ->
468 withQuoteArray a4 $ \(a4'1, a4'2) ->
469 withDayArray a5 $ \(a5'1, a5'2) ->
470 let {a6' = (fromIntegral . fromEnum) a6} in
471 let {a7' = fromIntegral a7} in
472 let {a8' = fromIntegral a8} in
473 let {a9' = fromIntegral a9} in
474 preErrorCheck $ \a10' ->
475 qlPiecewiseDefaultCurve'_ a1' a2'1 a2'2 a3' a4'1 a4'2 a5'1 a5'2 a6' a7' a8' a9' a10' >>= \res ->
476 peekDefaultProbabilityTermStructure res >>= \res' ->
477 errorCheck a10'>>
478 return (res')
479
480
481
482 piecewiseDefaultCurve' :: Word -> Calendar -> [DefaultProbabilityHelper] -> DayCounter -> [(Day, GenQuote q)] -- ^jumps
483 -> ProbabilityTrait -> Interpolation -> IO DefaultProbabilityTermStructure
484 piecewiseDefaultCurve' d c h dc q t i = uncurryNested (qlPiecewiseDefaultCurve1 d c h dc qq qd t) (qlInterpolation i) where (qd, qq) = unzip q
485 -- |default-probability term structure bootstrapped from CDS/default helpers, anchored at a settlement-days/calendar pair
486 qlPiecewiseDefaultCurve1 :: (Word) -> (Calendar) -> ([DefaultProbabilityHelper]) -> (DayCounter) -> ([GenQuote q]) -> ([Day]) -> (ProbabilityTrait) -> (Int) -> (Int) -> (Int) -> IO ((DefaultProbabilityTermStructure))
487 qlPiecewiseDefaultCurve1 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 =
488 let {a1' = fromIntegral a1} in
489 withCalendar a2 $ \a2' ->
490 withDefaultProbabilityHelperArray a3 $ \(a3'1, a3'2) ->
491 withDayCounter a4 $ \a4' ->
492 withQuoteArray a5 $ \(a5'1, a5'2) ->
493 withDayArray a6 $ \(a6'1, a6'2) ->
494 let {a7' = (fromIntegral . fromEnum) a7} in
495 let {a8' = fromIntegral a8} in
496 let {a9' = fromIntegral a9} in
497 let {a10' = fromIntegral a10} in
498 preErrorCheck $ \a11' ->
499 qlPiecewiseDefaultCurve1'_ a1' a2' a3'1 a3'2 a4' a5'1 a5'2 a6'1 a6'2 a7' a8' a9' a10' a11' >>= \res ->
500 peekDefaultProbabilityTermStructure res >>= \res' ->
501 errorCheck a11'>>
502 return (res')
503
504
505
506 -- vim: set ff=unix ts=8 sts=2 sw=2 et:
507
508 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlFactorSpreadedHazardRateCurve"
509 factorSpreadedHazardRateCurve'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> ((C2HSImp.Ptr (CQuote')) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure'))))))
510
511 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlFlatHazardRate1"
512 flatHazardRate''_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr (CCalendar)) -> ((C2HSImp.Ptr (CQuote')) -> ((C2HSImp.Ptr (CDayCounter)) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure'))))))))
513
514 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlFlatHazardRate"
515 flatHazardRate'_ :: (C2HSImp.CInt -> ((C2HSImp.Ptr (CQuote')) -> ((C2HSImp.Ptr (CDayCounter)) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure')))))))
516
517 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlSpreadedHazardRateCurve"
518 spreadedHazardRateCurve'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> ((C2HSImp.Ptr (CQuote')) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure'))))))
519
520 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultProbability"
521 defaultProbability'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
522
523 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureHazardRate1"
524 hazardRate''_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
525
526 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureHazardRate"
527 hazardRate'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
528
529 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureSurvivalProbability1"
530 survivalProbability''_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
531
532 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureSurvivalProbability"
533 survivalProbability'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
534
535 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultDensity1"
536 defaultDensity''_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
537
538 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultDensity"
539 defaultDensity'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
540
541 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultProbability1"
542 defaultProbability''_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble)))))
543
544 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultProbability2"
545 defaultProbabilityBetween'_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble))))))
546
547 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlDefaultProbabilityTermStructureDefaultProbability3"
548 defaultProbabilityBetween''_ :: ((C2HSImp.Ptr (CDefaultProbabilityTermStructure')) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CDouble))))))
549
550 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlSpreadCdsHelper"
551 spreadCdsHelper'_ :: ((C2HSImp.Ptr (CQuote')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CDouble -> ((C2HSImp.Ptr (CYieldTermStructure')) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityHelper)))))))))))))))))))))
552
553 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlUpfrontCdsHelper"
554 upfrontCdsHelper'_ :: ((C2HSImp.Ptr (CQuote')) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CDouble -> ((C2HSImp.Ptr (CYieldTermStructure')) -> (C2HSImp.CUInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityHelper)))))))))))))))))))))))
555
556 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlInterpolatedDefaultDensityCurve"
557 qlInterpolatedDefaultDensityCurve'_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (CDayCounter)) -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CQuote'))) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure')))))))))))))))))
558
559 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlInterpolatedHazardRateCurve"
560 qlInterpolatedHazardRateCurve'_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (CDayCounter)) -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CQuote'))) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure'))))))))))))))))))
561
562 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlInterpolatedSurvivalProbabilityCurve"
563 qlInterpolatedSurvivalProbabilityCurve'_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (CDayCounter)) -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CQuote'))) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure')))))))))))))))))
564
565 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlPiecewiseDefaultCurve"
566 qlPiecewiseDefaultCurve'_ :: (C2HSImp.CInt -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CDefaultProbabilityHelper))) -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CQuote'))) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure'))))))))))))))))
567
568 foreign import ccall safe "QuantLib/TermStructure/Credit.chs.h qlPiecewiseDefaultCurve1"
569 qlPiecewiseDefaultCurve1'_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr (CCalendar)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CDefaultProbabilityHelper))) -> ((C2HSImp.Ptr (CDayCounter)) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (CQuote'))) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO (C2HSImp.Ptr (CDefaultProbabilityTermStructure')))))))))))))))))