Data Structure Design¶
The data structures in Bermuda were created with the following design objectives in mind:
Unity/Consistency: The primary user-facing class is
bermuda.Triangle
. Any amount of triangle data, from a small paid loss triangle for a single book of business to a massive, heterogeneous collection of industry loss data is representable as a singleTriangle
object. There are no artificial distinctions between a single triangle and a collection of triangles, or restrictions on what sorts of triangle data can be concatenated. Even predictive distributions of unobserved quantities can be handled by this class.Immutability: Objects in
bermuda.triangle
are immutable, meaning that there are no methods or functions that change the value of an object in-place. Methods on triangles such asfilter
,clip
, andselect
return modified copies of the original triangle. This makes reasoning about the behavior of triangle objects significantly easier.Ergonomics: Common manipulations on triangles are provided, and the internals of triangles are designed to make more common manipulations and transformations relatively straightforward.
Performance: The
bermuda.Triangle
class is designed to scale reasonably well, and to not be a performance or memory bottleneck in the modeling pipeline.