///|
pub struct CapeCodResult {
priv rate : Double
priv adjusted_exposure : Double
priv estimate : Estimate
}
///|
pub fn CapeCodResult::rate(self : CapeCodResult) -> Double {
self.rate
}
///|
pub fn CapeCodResult::adjusted_exposure(self : CapeCodResult) -> Double {
self.adjusted_exposure
}
///|
pub fn CapeCodResult::estimate(self : CapeCodResult) -> Estimate {
self.estimate
}
///|
/// Exposures share one unit and must be positive. Rate is fitted to paid claims.
pub fn cape_cod(
triangle : Triangle,
pattern : Pattern,
exposure : Array[Double],
) -> CapeCodResult raise RunoffError {
compatible(triangle, pattern)
validate_prior(exposure, triangle.order())
let mut paid = 0.0
let mut adjusted_exposure = 0.0
for i in 0..