Skip to content

Commit

Permalink
Ported reinsurance tests from reinsurancetesttool repo.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Pinkerton authored and sambles committed Nov 7, 2018
1 parent 93ff308 commit 4de8ed4
Show file tree
Hide file tree
Showing 247 changed files with 202,656 additions and 0 deletions.
3 changes: 3 additions & 0 deletions requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ mock
responses
Sphinx
tox
parameterized
tabulate
backports
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ mccabe==0.6.1 # via flake8
mock==2.0.0
numpy==1.14.0 # via pandas
pandas==0.22.0
parameterized==0.6.1
pathlib2==2.3.0
pbr==3.1.1 # via mock
pip-tools==2.0.2
Expand All @@ -64,6 +65,7 @@ six==1.11.0
snowballstemmer==1.2.1 # via sphinx
sphinx==1.6.7
sphinxcontrib-websupport==1.0.1 # via sphinx
tabulate==0.8.2
tox==2.9.1
typing==3.6.6 # via python-interface, sphinx
urllib3==1.22 # via requests
Expand Down
246 changes: 246 additions & 0 deletions tests/exposures/direct_layer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
import pandas as pd
import os
import subprocess
import shutil
from oasislmf.exposures import oed


class DirectLayer(object):
"""
Set of direct policiies.
Generates ktools inputs and runs financial module.
Does not handle multiple policies on same set of risks i.e. multiple layers.
NB. This is a simple implication to support the reinsurance Oasis file generation.
A full implementation supporting OED account and location files will be developed
and included in the OasisLmf package separately allowing this code to be deprecated.
"""

def __init__(self, accounts, locations):
self.accounts = accounts
self.locations = locations

self.item_ids = list()
self.item_tivs = list()
self.coverages = pd.DataFrame()
self.items = pd.DataFrame()
self.fmprogrammes = pd.DataFrame()
self.fmprofiles = pd.DataFrame()
self.fm_policytcs = pd.DataFrame()
self.fm_xrefs = pd.DataFrame()
self.xref_descriptions = pd.DataFrame()

self.item_id_dict = dict()

def _get_location_tiv(self, location, coverage_type_id):
switcher = {
oed.BUILDING_COVERAGE_TYPE_ID: location.BuildingTIV,
oed.OTHER_BUILDING_COVERAGE_TYPE_ID: location.OtherTIV,
oed.CONTENTS_COVERAGE_TYPE_ID: location.ContentsTIV,
oed.TIME_COVERAGE_TYPE_ID: location.BITIV
}
return switcher.get(coverage_type_id, 0)

def generate_oasis_structures(self):

coverage_id = 0
item_id = 0
group_id = 0
policy_agg_id = 0
profile_id = 0

coverages_list = list()
items_list = list()
fmprogrammes_list = list()
fmprofiles_list = list()
fm_policytcs_list = list()
fm_xrefs_list = list()
xref_descriptions_list = list()

site_agg_id = 0
for policy_index, policy in self.accounts.iterrows():
policy_agg_id = policy_agg_id + 1
profile_id = profile_id + 1
fmprofiles_list.append(
oed.get_profile(
profile_id,
deductible=policy.AccDed6All,
limit=policy.AccLimit6All))
fm_policytcs_list.append(oed.FmPolicyTc(
layer_id=1,
level_id=2,
agg_id=policy_agg_id,
profile_id=profile_id
))
for location_index, location in self.locations.loc[self.locations["AccNumber"] == policy.AccNumber].iterrows():
group_id = group_id + 1
site_agg_id = site_agg_id + 1
profile_id = profile_id + 1

fmprofiles_list.append(
oed.get_profile(
profile_id=profile_id,
deductible=location.LocDed6All,
limit=location.LocLimit6All))
fm_policytcs_list.append(oed.FmPolicyTc(
layer_id=1,
level_id=1,
agg_id=site_agg_id,
profile_id=profile_id
))
fmprogrammes_list.append(
oed.FmProgramme(
from_agg_id=site_agg_id,
level_id=2,
to_agg_id=policy_agg_id
)
)

for coverage_type_id in oed.COVERAGE_TYPES:
tiv = self._get_location_tiv(location, coverage_type_id)
if tiv > 0:
coverage_id = coverage_id + 1
self.item_id_dict[coverage_id] = location

coverages_list.append(
oed.Coverage(
coverage_id=coverage_id,
tiv=tiv,
))
for peril in oed.PERILS:
item_id = item_id + 1
self.item_ids.append(item_id)
self.item_tivs.append(tiv)
items_list.append(
oed.Item(
item_id=item_id,
coverage_id=coverage_id,
areaperil_id=-1,
vulnerability_id=-1,
group_id=group_id
))
fmprogrammes_list.append(
oed.FmProgramme(
from_agg_id=item_id,
level_id=1,
to_agg_id=site_agg_id
)
)
fm_xrefs_list.append(
oed.FmXref(
output_id=item_id,
agg_id=item_id,
layer_id=1
))
xref_descriptions_list.append(
oed.XrefDescription(
xref_id=item_id,
account_number=location.AccNumber,
location_number=location.LocNumber,
coverage_type_id=coverage_type_id,
peril_id=peril,
policy_number=policy.PolNumber,
#portfolio_number=policy.PortNumber,
tiv=tiv
)
)

self.coverages = pd.DataFrame(coverages_list)
self.items = pd.DataFrame(items_list)
self.fmprogrammes = pd.DataFrame(fmprogrammes_list)
self.fmprofiles = pd.DataFrame(fmprofiles_list)
self.fm_policytcs = pd.DataFrame(fm_policytcs_list)
self.fm_xrefs = pd.DataFrame(fm_xrefs_list)
self.xref_descriptions = pd.DataFrame(xref_descriptions_list)


def write_oasis_files(self, directory=None):
self.coverages.to_csv("coverages.csv", index=False)
self.items.to_csv("items.csv", index=False)
self.fmprogrammes.to_csv("fm_programme.csv", index=False)
self.fmprofiles.to_csv("fm_profile.csv", index=False)
self.fm_policytcs.to_csv("fm_policytc.csv", index=False)
self.fm_xrefs.to_csv("fm_xref.csv", index=False)

if directory is None:
directory = "direct"
else:
directory = os.path.join(directory, "direct")

if os.path.exists(directory):
shutil.rmtree(directory)
os.makedirs(directory)

input_files = oed.GUL_INPUTS_FILES + oed.IL_INPUTS_FILES

for input_file in input_files:
conversion_tool = oed.CONVERSION_TOOLS[input_file]
input_file_path = input_file + ".csv"
if not os.path.exists(input_file_path):
continue

output_file_path = os.path.join(directory, input_file + ".bin")
command = "{} < {} > {}".format(
conversion_tool, input_file_path, output_file_path)
proc = subprocess.Popen(command, shell=True)
proc.wait()
if proc.returncode != 0:
raise Exception(
"Failed to convert {}: {}".format(input_file_path, command))


def report_item_ids(self):
"""
return a dataframe showing the relationship between item_id's and Locations
"""
locations_list = [self.item_id_dict[ID].LocNumber for ID in self.item_ids]
from_agg_ids = self.fmprogrammes[self.fmprogrammes['level_id'] == 1].from_agg_id.tolist()
item_map_df = pd.concat([
self.items[['item_id','coverage_id']],
self.coverages['tiv'],
pd.DataFrame({'LocNumber': locations_list})
],axis=1)
# filter 'item_id' that exisit in 'from_agg_id'
return item_map_df[item_map_df['item_id'].isin(from_agg_ids)]

def apply_fm(self, loss_percentage_of_tiv=1.0, net=False):
guls_list = list()
for item_id, tiv in zip(self.item_ids, self.item_tivs):
event_loss = loss_percentage_of_tiv * tiv
guls_list.append(
oed.GulRecord(event_id=1, item_id=item_id, sidx=-1, loss=event_loss))
guls_list.append(
oed.GulRecord(event_id=1, item_id=item_id, sidx=-2, loss=0))
guls_list.append(
oed.GulRecord(event_id=1, item_id=item_id, sidx=1, loss=event_loss))
guls_df = pd.DataFrame(guls_list)
guls_df.to_csv("guls.csv", index=False)
net_flag = ""
if net:
net_flag = "-n"
command = "gultobin -S 1 < guls.csv | fmcalc -p direct {} -a {} | tee ils.bin | fmtocsv > ils.csv".format(
net_flag, oed.ALLOCATE_TO_ITEMS_BY_PREVIOUS_LEVEL_ALLOC_ID)
proc = subprocess.Popen(command, shell=True)
proc.wait()
if proc.returncode != 0:
raise Exception("Failed to run fm")
losses_df = pd.read_csv("ils.csv")
losses_df.drop(losses_df[losses_df.sidx != 1].index, inplace=True)
del losses_df['sidx']
guls_df.drop(guls_df[guls_df.sidx != 1].index, inplace=True)
del guls_df['event_id']
del guls_df['sidx']
guls_df = pd.merge(
self.xref_descriptions,
guls_df, left_on=['xref_id'], right_on=['item_id'])
losses_df = pd.merge(
guls_df,
losses_df, left_on='xref_id', right_on='output_id',
suffixes=["_gul", "_il"])
del losses_df['event_id']
del losses_df['output_id']
del losses_df['xref_id']
del losses_df['item_id']

return losses_df
Binary file not shown.
3 changes: 3 additions & 0 deletions tests/exposures/examples/acc_1_CAT_XL/account.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
PortNumber,PortName,PortNotes,AccNumber,AccName,AccGroup,AccStatus,ExpiringAccNumber,CedantName,AccCurrency,AccUserDef1,AccUserDef2,AccUserDef3,AccUserDef4,AccUserDef5,AccPeril,AccDedCode1Building,AccDedType1Building,AccDed1Building,AccMinDed1Building,AccMaxDed1Building,AccDedCode2Other,AccDedType2Other,AccDed2Other,AccMinDed2Other,AccMaxDed2Other,AccDedCode3Contents,AccDedType3Contents,AccDed3Contents,AccMinDed3Contents,AccMaxDed3Contents,AccDedCode4BI,AccDedType4BI,AccDed4BI,AccMinDed4BI,AccMaxDed4BI,AccDedCode5PD,AccDedType5PD,AccDed5PD,AccMinDed5PD,AccMaxDed5PD,AccDedCode6All,AccDedType6All,AccDed6All,AccMinDed6All,AccMaxDed6All,AccLimitCode1Building,AccLimitType1Building,AccLimit1Building,AccLimitCode2Other,AccLimitType2Other,AccLimit2Other,AccLimitCode3Contents,AccLimitType3Contents,AccLimit3Contents,AccLimitCode4BI,AccLimitType4BI,AccLimit4BI,AccLimitCode5PD,AccLimitType5PD,AccLimit5PD,AccLimitCode6All,AccLimitType6All,AccLimit6All,PolNumber,PolStatus,PolInceptionDate,PolExpiryDate,ProducerName,Underwriter,BranchName,LOB,ExpiringPolNumber,PolPerilsCovered,PolGrossPremium,PolTax,PolBrokerage,PolNetPremium,LayerNumber,LayerParticipation,LayerLimit,LayerAttachment,HoursClause,PolPeril,PolDedCode1Building,PolDedType1Building,PolDed1Building,PolMinDed1Building,PolMaxDed1Building,PolDedCode2Other,PolDedType2Other,PolDed2Other,PolMinDed2Other,PolMaxDed2Other,PolDedCode3Contents,PolDedType3Contents,PolDed3Contents,PolMinDed3Contents,PolMaxDed3Contents,PolDedCode4BI,PolDedType4BI,PolDed4BI,PolMinDed4BI,PolMaxDed4BI,PolDedCode5PD,PolDedType5PD,PolDed5PD,PolMinDed5PD,PolMaxDed5PD,PolDedCode6All,PolDedType6All,PolDed6All,PolMinDed6All,PolMaxDed6All,PolLimitCode1Building,PolLimitType1Building,PolLimit1Building,PolLimitCode2Other,PolLimitType2Other,PolLimit2Other,PolLimitCode3Contents,PolLimitType3Contents,PolLimit3Contents,PolLimitCode4BI,PolLimitType4BI,PolLimit4BI,PolLimitCode5PD,PolLimitType5PD,PolLimit5PD,PolLimitCode6All,PolLimitType6All,PolLimit6All,StepFunctionName,StepTriggerType,StepNumber,StartTriggerBuilding,EndTriggerBuilding,DeductibleBuilding,PayOutBuilding,StartTriggerContent,EndTriggerContent,DeductibleContent,PayOutContent,StartTriggerBuildingContent,EndTriggerBuildingContent,DeductibleBuildingContent,PayOutBuildingContent,MinimumTIV,ScaleFactor,IsLimitAtDamage,PolUserDef1,PolUserDef2,PolUserDef3,PolUserDef4,PolUserDef5,CondNumber,CondName,CondPeril,CondDedCode1Building,CondDedType1Building,CondDed1Building,CondMinDed1Building,CondMaxDed1Building,CondDedCode2Other,CondDedType2Other,CondDed2Other,CondMinDed2Other,CondMaxDed2Other,CondDedCode3Contents,CondDedType3Contents,CondDed3Contents,CondMinDed3Contents,CondMaxDed3Contents,CondDedCode4BI,CondDedType4BI,CondDed4BI,CondMinDed4BI,CondMaxDed4BI,CondDedCode5PD,CondDedType5PD,CondDed5PD,CondMinDed5PD,CondMaxDed5PD,CondDedCode6All,CondDedType6All,CondDed6All,CondMinDed6All,CondMaxDed6All,CondLimitCode1Building,CondLimitType1Building,CondLimit1Building,CondLimitCode2Other,CondLimitType2Other,CondLimit2Other,CondLimitCode3Contents,CondLimitType3Contents,CondLimit3Contents,CondLimitCode4BI,CondLimitType4BI,CondLimit4BI,CondLimitCode5PD,CondLimitType5PD,CondLimit5PD,CondLimitCode6All,CondLimitType6All,CondLimit6All
1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,WW1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10000, - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,WW1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10000, - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
5 changes: 5 additions & 0 deletions tests/exposures/examples/acc_1_CAT_XL/location.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
AccNumber,LocNumber,LocName,LocGroup,IsPrimary,IsTenant,BuildingID,LocInceptionDate,LocExpiryDate,PercentComplete,CompletionDate,CountryCode,Latitude,Longitude,StreetAddress,PostalCode,City,SubArea2,SubArea,LowResCresta,HighResCresta,AreaCode,AreaName,AddressMatch,GeocodeQuality,Geocoder,OrgOccupancyScheme,OrgOccupancyCode,OrgConstructionScheme,OrgConstructionCode,OccupancyCode,ConstructionCode,YearBuilt,NumberOfStories,NumberOfBuildings,FloorArea,FloorAreaUnit,LocUserDef1,LocUserDef2,LocUserDef3,LocUserDef4,LocUserDef5,LocPerilsCovered,BuildingTIV,OtherTIV,ContentsTIV,BITIV,BIPOI,LocCurrency,LocGrossPremium,LocTax,LocBrokerage,LocNetPremium,NonCatGroundUpLoss,LocParticipation,PayoutBasis,ReinsTag,CondTag,CondPriority,LocDedCode1Building,LocDedType1Building,LocDed1Building,LocMinDed1Building,LocMaxDed1Building,LocDedCode2Other,LocDedType2Other,LocDed2Other,LocMinDed2Other,LocMaxDed2Other,LocDedCode3Contents,LocDedType3Contents,LocDed3Contents,LocMinDed3Contents,LocMaxDed3Contents,LocDedCode4BI,LocDedType4BI,LocDed4BI,LocMinDed4BI,LocMaxDed4BI,LocDedCode5PD,LocDedType5PD,LocDed5PD,LocMinDed5PD,LocMaxDed5PD,LocDedCode6All,LocDedType6All,LocDed6All,LocMinDed6All,LocMaxDed6All,LocLimitCode1Building,LocLimitType1Building,LocLimit1Building,LocLimitCode2Other,LocLimitType2Other,LocLimit2Other,LocLimitCode3Contents,LocLimitType3Contents,LocLimit3Contents,LocLimitCode4BI,LocLimitType4BI,LocLimit4BI,LocLimitCode5PD,LocLimitType5PD,LocLimit5PD,LocLimitCode6All,LocLimitType6All,LocLimit6All,BIWaitingPeriod,LocPeril,YearUpgraded,SurgeLeakage,SprinklerType,RoofCover,RoofYearBuilt,RoofGeometry,RoofEquipment,RoofFrame,RoofMaintenance,BuildingCondition,RoofAttachedStructure,RoofDeck,RoofPitch,RoofAnchorage,RoofDeckAttachment,RoofCoverAttachment,GlassType,LatticeType,FloodZone,SoftStory,Basement,BasementLevelCount,WindowProtection,FoundationType,WallAttachedStructure,AppurtenantStructure,ConstructionQuality,GroundEquipment,EquipmentBracing,Flashing,BuildingShape,ShapeIrregularity,Pounding,Ornamentation,SpecialEQConstruction,Retrofit,CrippleWalls,FoundationConnection,ShortColumn,Fatigue,Cladding,BIPreparedness,BIRedundancy,BuildingElevation,BuildingElevationUnit,Datum,GroundElevation,GroundElevationUnit,Tank,Redundancy,InternalPartition,ExternalDoors,Torsion,MechanicalEquipmentSide,ContentsWindVuln,ContentsFloodVuln,ContentsQuakeVuln,SmallDebris,FloorsOccupied,FloodDefenseElevation,FloodDefenseElevationUnit,FloodDebrisResilience,BaseFloodElevation,BaseFloodElevationUnit,BuildingHeight,BuildingHeightUnit,BuildingValuation,TreeExposure,Chimney,BuildingType,Packaging,Protection,SalvageProtection,ValuablesStorage,DaysHeld,BrickVeneer,FEMACompliance,CustomFloodSOP,CustomFloodZone,MultiStoryHall,BuildingExteriorOpening,ServiceEquipmentProtection,TallOneStory,TerrainRoughness,NumberOfEmployees,Payroll
1,1,0,0,0,0,0,0,0,0,0,US,0,0,0,0,0,0,,0,0,CA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,500,500,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,2,0,0,0,0,0,0,0,0,0,US,0,0,0,0,0,0,,0,0,CA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,500,500,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2,3,0,0,0,0,0,0,0,0,0,US,0,0,0,0,0,0,,0,0,CA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,500,500,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2,4,0,0,0,0,0,0,0,0,0,US,0,0,0,0,0,0,,0,0,CA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,500,500,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2 changes: 2 additions & 0 deletions tests/exposures/examples/acc_1_CAT_XL/ri_info.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ReinsNumber,ReinsLayerNumber,ReinsName,ReinsPerilCode,ReinsInceptionDate,ReinsExpiryDate,CededPercent,RiskLimit,RiskAttachment,OccLimit,OccAttachment,OccurenceFranchiseDed,OccurenceReverseFranchise,AggregateLimit,AggregateAttachmentPoint,ReinsCurrency,InuringPriority,ReinsType,AttachmentBasis,ReinstatementNumber,ReinstatementCharge,ReinsPremium,ReinsHoursClause,PlacedPercent,DeemedPercentPlaced,ReinsFXrate,TreatyShare,UseReinsDates
1,1,ABC QS,WW1,01/01/2018,31/12/2018,1.0,0,0,1000,50,0,0,0,0,USD,1,CAT XL,LO,99,0,6,,1,1,1,1,No
2 changes: 2 additions & 0 deletions tests/exposures/examples/acc_1_CAT_XL/ri_scope.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ReinsNumber,PortNumber,AccNumber,PolNumber,LocationGroup,LocNumber,CedantName,ProducerName,LOB,CountryCode,ReinsuranceTag,CededPercent,RiskLevel
1,1,1,,,,,,,,,1,SEL
Loading

0 comments on commit 4de8ed4

Please sign in to comment.