Skip to content
Snippets Groups Projects
Commit 7f2470db authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

Split the ValuationTables and LifeInsuranceContracts package into two separate packages

parent 6044b00b
Branches
Tags
No related merge requests found
Package: ValuationTables Package: LifeInsuranceContracts
Type: Package Type: Package
Title: A framework for cohort life tables and general life insurance contracts Version: 0.1
Version: 1.0 Date: 2016-05-07
Date: 2016-04-01 Title: A framework for general life insurance contracts, including profit participation, contract changes etc.
Author: Reinhold Kainhofer <reinhold@kainhofer.com> Authors@R: c(person("Reinhold", "Kainhofer", role=c("aut", "cre"), email="reinhold@kainhofer.com"))
Author: Reinhold Kainhofer [aut, cre]
Maintainer: Reinhold Kainhofer <reinhold@kainhofer.com> Maintainer: Reinhold Kainhofer <reinhold@kainhofer.com>
Description: Yet to be written Depends: R6, ValuationTables, objectProperties
License: Not yet finally decided, probably GPL v3+ or LGPL or something similar Description: TODO
License: GPL (>= 2)
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
# frame_files = lapply(sys.frames(), function(x) x$ofile)
# frame_files = Filter(Negate(is.null), frame_files)
# PATH <- dirname(frame_files[[length(frame_files)]])
# rm(frame_files)
# setwd(dirname(PATH))
# setwd("R")
library("openxlsx")
###############################################################################
### RR67 Rententafel für Männer, 3%
###############################################################################
rr67.data=openxlsx::read.xlsx("Tables/AVOe_R.xlsx",
sheet="OeVM59-61 RR67", startRow = 3, colNames = TRUE);
rr67=valuationTable.period(
name="ÖVM 59/61 RR67", ages=rr67.data$Alter, deathProbs=rr67.data$qx
);
# rm(rr67.data);
###############################################################################
### EROM/EROF 85 and G 1985 (period and age-shifted generation)
###############################################################################
eromf.data=openxlsx::read.xlsx("Tables/AVOe_R.xlsx", sheet="EROM-F Basistafeln", startRow = 3)
erom85.male=valuationTable.period(
name="EROM 85, male", ages=eromf.data$Alter, deathProbs=eromf.data$EROM.85
);
erom85.female=valuationTable.period(
name="EROF 85, female", ages=eromf.data$Alter, deathProbs=eromf.data$EROF.85
);
EROM.G1950.male=valuationTable.period(
name="EROM G 1950 Basistafel, male",
ages=eromf.data$Alter,
deathProbs=eromf.data$EROM.G1950,
baseYear=1950
);
EROF.G1950.female=valuationTable.period(
name="EROF G 1950 Basistafel, female",
ages=eromf.data$Alter,
deathProbs=eromf.data$EROF.G1950,
baseYear=1950
);
eromf.data.av=openxlsx::read.xlsx("Tables/AVOe_R.xlsx", sheet="EROM-F G AV", startRow = 3, rowNames = TRUE, colNames = TRUE)
EROM.G1950.male.av=valuationTable.ageShift(
name="EROM G 1950 mit Altersverschiebung, male",
ages=eromf.data$Alter,
deathProbs=eromf.data$EROM.G1950,
ageShifts=eromf.data.av["Shift.M"],
baseYear=1950
);
EROF.G1950.female.av=valuationTable.ageShift(
name="EROF G 1950 mit Altersverschiebung, female",
ages=eromf.data$Alter,
deathProbs=eromf.data$EROF.G1950,
ageShifts=eromf.data.av["Shift.F"],
baseYear=1950
);
###############################################################################
# AVÖ 1996R exact (Male, Female), 1st-order only
###############################################################################
AVOe1996R.exakt.data=openxlsx::read.xlsx("Tables/AVOe_R.xlsx",
sheet="AVOe 1996R exakt", startRow = 3, cols=c(1:6, 8:12));
AVOe1996R.exakt.data
AVOe1996R.trend.switching=function(year) {
if (year<=1971) {
15/(1991-year)
} else if (1971<year && year<1981) {
1+(year-1981)^2/(year-1991)/20
} else if (1981<=year && year<=2000) {
1
} else if (2000<year && year<2010) {
1-(year-2000)^2/(year-1991)/20
} else if (year>=2010) {
14/(year-1991)
}
}
AVÖ1996R.male=valuationTable.trendProjection(
name="AVÖ 1996R male",
ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=AVOe1996R.exakt.data$qx1991 * AVOe1996R.exakt.data$factorM,
trend=AVOe1996R.exakt.data$trendM.long,
trend2=AVOe1996R.exakt.data$trendM.short,
dampingFunction=AVOe1996R.trend.switching
);
AVÖ1996R.female=valuationTable.trendProjection(
name="AVÖ 1996R female",
ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=AVOe1996R.exakt.data$qy1991 * AVOe1996R.exakt.data$factorF,
trend=AVOe1996R.exakt.data$trendF.long,
trend2=AVOe1996R.exakt.data$trendF.short,
dampingFunction=AVOe1996R.trend.switching
);
AVÖ1996R.male.group=valuationTable.trendProjection(
name="AVÖ 1996R male, group",
ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=AVOe1996R.exakt.data$qx1991 * AVOe1996R.exakt.data$factorMG,
trend=AVOe1996R.exakt.data$trendM.long,
trend2=AVOe1996R.exakt.data$trendM.short,
dampingFunction=AVOe1996R.trend.switching
);
AVÖ1996R.female.group=valuationTable.trendProjection(
name="AVÖ 1996R female, group",
ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=AVOe1996R.exakt.data$qy1991 * AVOe1996R.exakt.data$factorFG,
trend=AVOe1996R.exakt.data$trendF.long,
trend2=AVOe1996R.exakt.data$trendF.short,
dampingFunction=AVOe1996R.trend.switching
);
###############################################################################
# AVÖ 2005R exact (Male, Female, unisex)
# gender-specific tables also have 2nd-order tables, unisex only 1st-order table
###############################################################################
AVOe2005R.exakt.data=openxlsx::read.xlsx("Tables/AVOe_R.xlsx", sheet="AVOe 2005R", startRow = 3, cols=c(1:7, 9:14, 16:18));
AVOe2005R.trend.damping=function(t) {
100*atan(t/100)
}
AVOe2005R_gen=function(nm, probs, trend) {
with(
AVOe2005R.exakt.data,
valuationTable.trendProjection(
name=nm,
ages=age, baseYear=2001,
deathProbs=AVOe2005R.exakt.data[[probs]], trend=AVOe2005R.exakt.data[[trend]],
dampingFunction=AVOe2005R.trend.damping
)
)
}
AVOe2005R.male =AVOe2005R_gen("AVÖ 2005R male (exact), loaded", "qx2001", "trendM");
AVOe2005R.female=AVOe2005R_gen("AVÖ 2005R female (exact), loaded", "qy2001", "trendF");
AVOe2005R.unisex=AVOe2005R_gen("AVÖ 2005R unisex (exact), loaded", "qu2001", "trendU");
AVOe2005R.male.unloaded =AVOe2005R_gen("AVÖ 2005R male (exact), unloaded", "qx2001.2Ord", "trendM.2Ord");
AVOe2005R.female.unloaded=AVOe2005R_gen("AVÖ 2005R female (exact), unloaded", "qy2001.2Ord", "trendF.2Ord");
AVOe2005R.male.group =AVOe2005R_gen("AVÖ 2005R male group (exact), loaded", "qx2001G", "trendM");
AVOe2005R.female.group=AVOe2005R_gen("AVÖ 2005R female group (exact), loaded", "qy2001G", "trendF");
AVOe2005R.unisex.group=AVOe2005R_gen("AVÖ 2005R unisex group (exact), loaded", "qu2001G", "trendU");
AVOe2005R.male.nodamping = undampenTrend(AVOe2005R.male);
AVOe2005R.female.nodamping = undampenTrend(AVOe2005R.female);
AVOe2005R.unisex.nodamping = undampenTrend(AVOe2005R.unisex);
AVOe2005R.male.nodamping.unloaded = undampenTrend(AVOe2005R.male.unloaded);
AVOe2005R.female.nodamping.unloaded = undampenTrend(AVOe2005R.female.unloaded);
AVOe2005R.male.nodamping.group = undampenTrend(AVOe2005R.male.group);
AVOe2005R.female.nodamping.group = undampenTrend(AVOe2005R.female.group);
AVOe2005R.unisex.nodamping.group = undampenTrend(AVOe2005R.unisex.group);
###############################################################################
#AVÖ 2005R with age-shifting (Male, Female, unisex), 1st-order only
###############################################################################
AVOe2005R.av.base = openxlsx::read.xlsx("Tables/AVOe_R.xlsx", sheet="AVOe 2005R AV Basistafel", startRow = 3, rowNames = FALSE);
AVOe2005R.av.verschiebung = openxlsx::read.xlsx("Tables/AVOe_R.xlsx", sheet="AVOe 2005R AV Verschiebung", startRow = 3, rowNames = TRUE);
AVOe2005R_gen.av=function(nm, probs, shft) {
valuationTable.ageShift(
name=nm,
ages=AVOe2005R.av.base$age,
deathProbs=AVOe2005R.av.base[[probs]],
ageShifts=na.omit(AVOe2005R.av.verschiebung[shft])
)
}
AVOe2005R.male.av =AVOe2005R_gen.av("AVÖ 2005R male (age-shifted), loaded", "qx1965", "shiftM");
AVOe2005R.female.av=AVOe2005R_gen.av("AVÖ 2005R female (age-shifted), loaded", "qy1965", "shiftF");
AVOe2005R.unisex.av=AVOe2005R_gen.av("AVÖ 2005R unisex (age-shifted), loaded", "qu1972", "shiftU");
AVOe2005R.male.group.av =AVOe2005R_gen.av("AVÖ 2005R male group (age-shifted), loaded", "qx1965G", "shiftMG");
AVOe2005R.female.group.av=AVOe2005R_gen.av("AVÖ 2005R female group (age-shifted), loaded", "qy1965G", "shiftFG");
AVOe2005R.unisex.group.av=AVOe2005R_gen.av("AVÖ 2005R unisex group (age-shifted), loaded", "qu1972G", "shiftUG");
###############################################################################
# options("scipen" = 3, "digits"=10)
# t=AVOe2005R.unisex;
# deathProbabilities(t, YOB=1981)
# plotValuationTables(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB=1972,title="Vergleich österreichische Sterbetafeln, YOB=1972 (bei Generationentafeln)")
#
# plotValuationTables(mort.AT.census.2001.male, AVOe2005R.male, YOB=1972, title="Vergleich österreichische Sterbetafeln")
plotValuationTables(getCohortTable(AVOe2005R.male, YOB=1972), getCohortTable(AVOe2005R.male, YOB=2016), title="Vergleich österreichische Sterbetafeln")
# frame_files = lapply(sys.frames(), function(x) x$ofile)
# frame_files = Filter(Negate(is.null), frame_files)
# PATH <- dirname(frame_files[[length(frame_files)]])
# rm(frame_files)
# setwd(dirname(PATH))
library("openxlsx")
###############################################################################
### Volkszählungen Österreich
###############################################################################
a.vz.dataM = openxlsx::read.xlsx("Tables/A_Volkszaehlungen.xlsx", sheet="Austria_M",
startRow = 3, colNames = TRUE)
a.vz.dataF = openxlsx::read.xlsx("Tables/A_Volkszaehlungen.xlsx", sheet="Austria_F",
startRow = 3, colNames = TRUE)
censtable = function(data, name, qslot, baseYear=1900) {
qx=data[names(data)==qslot];
ix=complete.cases(qx);
valuationTable.period(name=name, ages=data$x[ix], deathProbs=qx[ix,], baseYear=baseYear)
}
mort.AT.census.1869.male = censtable(a.vz.dataM, name="ÖVSt 1868/71 M", baseYear=1869, qslot="1868/71");
mort.AT.census.1880.male = censtable(a.vz.dataM, name="ÖVSt 1879/82 M", baseYear=1880, qslot="1879/82");
mort.AT.census.1890.male = censtable(a.vz.dataM, name="ÖVSt 1889/92 M", baseYear=1890, qslot="1889/92");
mort.AT.census.1900.male = censtable(a.vz.dataM, name="ÖVSt 1899/1902 M", baseYear=1900, qslot="1899/1902");
mort.AT.census.1910.male = censtable(a.vz.dataM, name="ÖVSt 1909/12 M", baseYear=1910, qslot="1909/12");
mort.AT.census.1931.male = censtable(a.vz.dataM, name="ÖVSt 1930/33 M", baseYear=1931, qslot="1930/33");
mort.AT.census.1951.male = censtable(a.vz.dataM, name="ÖVSt 1949/51 M", baseYear=1951, qslot="1949/51");
mort.AT.census.1961.male = censtable(a.vz.dataM, name="ÖVSt 1959/61 M", baseYear=1961, qslot="1959/61");
mort.AT.census.1971.male = censtable(a.vz.dataM, name="ÖVSt 1970/72 M", baseYear=1971, qslot="1970/72");
mort.AT.census.1981.male = censtable(a.vz.dataM, name="ÖVSt 1980/82 M", baseYear=1981, qslot="1980/82");
mort.AT.census.1991.male = censtable(a.vz.dataM, name="ÖVSt 1990/92 M", baseYear=1991, qslot="1990/92");
mort.AT.census.2001.male = censtable(a.vz.dataM, name="ÖVSt 2000/02 M", baseYear=2001, qslot="2000/02");
mort.AT.census.2011.male = censtable(a.vz.dataM, name="ÖVSt 2010/2012 M", baseYear=2011, qslot="2010/12");
mort.AT.census.1869.female = censtable(a.vz.dataF, name="ÖVSt 1868/71 F", baseYear=1869, qslot="1868/71");
mort.AT.census.1880.female = censtable(a.vz.dataF, name="ÖVSt 1879/82 F", baseYear=1880, qslot="1879/82");
mort.AT.census.1890.female = censtable(a.vz.dataF, name="ÖVSt 1889/92 F", baseYear=1890, qslot="1889/92");
mort.AT.census.1900.female = censtable(a.vz.dataF, name="ÖVSt 1899/1902 F", baseYear=1900, qslot="1899/1902");
mort.AT.census.1910.female = censtable(a.vz.dataF, name="ÖVSt 1909/12 F", baseYear=1910, qslot="1909/12");
mort.AT.census.1931.female = censtable(a.vz.dataF, name="ÖVSt 1930/33 F", baseYear=1931, qslot="1930/33");
mort.AT.census.1951.female = censtable(a.vz.dataF, name="ÖVSt 1949/51 F", baseYear=1951, qslot="1949/51");
mort.AT.census.1961.female = censtable(a.vz.dataF, name="ÖVSt 1959/61 F", baseYear=1961, qslot="1959/61");
mort.AT.census.1971.female = censtable(a.vz.dataF, name="ÖVSt 1970/72 F", baseYear=1971, qslot="1970/72");
mort.AT.census.1981.female = censtable(a.vz.dataF, name="ÖVSt 1980/82 F", baseYear=1981, qslot="1980/82");
mort.AT.census.1991.female = censtable(a.vz.dataF, name="ÖVSt 1990/92 F", baseYear=1991, qslot="1990/92");
mort.AT.census.2001.female = censtable(a.vz.dataF, name="ÖVSt 2000/02 F", baseYear=2001, qslot="2000/02");
mort.AT.census.2011.female = censtable(a.vz.dataF, name="ÖVSt 2010/2012 F", baseYear=2011, qslot="2010/12");
mort.AT.census.2001.unisex = valuationTable.mixed(table1=mort.AT.census.2001.male, table2=mort.AT.census.2001.female)
mort.AT.census.ALL.male = makeQxDataFrame(
mort.AT.census.1869.male,
mort.AT.census.1880.male,
mort.AT.census.1890.male,
mort.AT.census.1900.male,
mort.AT.census.1910.male,
mort.AT.census.1931.male,
mort.AT.census.1951.male,
mort.AT.census.1961.male,
mort.AT.census.1971.male,
mort.AT.census.1981.male,
mort.AT.census.1991.male,
mort.AT.census.2001.male,
mort.AT.census.2011.male);
mort.AT.census.ALL.female = makeQxDataFrame(
mort.AT.census.1869.female,
mort.AT.census.1880.female,
mort.AT.census.1890.female,
mort.AT.census.1900.female,
mort.AT.census.1910.female,
mort.AT.census.1931.female,
mort.AT.census.1951.female,
mort.AT.census.1961.female,
mort.AT.census.1971.female,
mort.AT.census.1981.female,
mort.AT.census.1991.female,
mort.AT.census.2001.female,
mort.AT.census.2011.female);
rm(a.vz.dataM, a.vz.dataF, censtable)
###############################################################################
plotValuationTables(mort.AT.census.ALL.male, title="Vergleich österreichische Sterbetafeln, Männer", legend.position=c(1,0))
plotValuationTables(mort.AT.census.ALL.female, title="Vergleich österreichische Sterbetafeln, Frauen", legend.position=c(1,0))
frame_files = lapply(sys.frames(), function(x) x$ofile)
frame_files = Filter(Negate(is.null), frame_files)
PATH <- dirname(frame_files[[length(frame_files)]])
rm(frame_files)
setwd(dirname(PATH))
library("gdata")
###############################################################################
# DAV 1994R exact (Male, Female), 1st-order only
###############################################################################
DAV1994R.exakt.data=read.xls(
"Tafeln/DAV_R.xls",
sheet="DAV 1994R", skip=2, #row.names=1,
col.names=c("age",
"qx2000", "qy2000", "trendM", "trendF", "qxAVbase1955", "qyAVbase1955",
"", "", "", "", "", "")
);
DAV1994R.male=valuationTable.trendProjection(
name="DAV 1994R male",
ages=DAV1994R.exakt.data$age, baseYear=2000,
deathProbs=DAV1994R.exakt.data$qx2000,
trend=DAV1994R.exakt.data$trendM
);
DAV1994R.female=valuationTable.trendProjection(
name="DAV 1994R female",
ages=DAV1994R.exakt.data$age, baseYear=2000,
deathProbs=DAV1994R.exakt.data$qy2000,
trend=DAV1994R.exakt.data$trendF
);
###############################################################################
# DAV 2004R exact (Male, Female), 1st-order only
###############################################################################
DAV2004R.data.basistafeln=read.xls(
"Tafeln/DAV_2004_R.xls",
sheet="Basistafeln", skip=3, #row.names=1,
col.names=c("age",
"qxSel2Ord", "qySel2Ord", "qxAgg2Ord", "qyAgg2Ord",
"qxSelBestand", "qySelBestand", "qxAggBestand", "qyAggBestand",
"qxSel", "qySel", "qxAgg", "qyAgg")
);
DAV2004R.data.trend=read.xls(
"Tafeln/DAV_2004_R.xls",
sheet="Trends", skip=4, header=FALSE, #row.names=1,
col.names=c("age",
"trend2Ord.male.start", "trend2Ord.female.start",
"trend2Ord.male.end", "trend2Ord.female.end",
"trendBestand.male.start", "trendBestand.female.start",
"trendBestand.male.end", "trendBestand.female.end",
"trend1Ord.male", "trend1Ord.female")
);
DAV2004R.data.select=read.xls(
"Tafeln/DAV_2004_R.xls",
sheet="Selektionsfaktoren", skip=2, header=FALSE, #row.names=1,
col.names=c("year", "SelectMale", "SelectFemale")
);
DAV2004R.data.av.grundtafeln=read.xls(
"Tafeln/DAV_2004_R.xls",
sheet="Grundtafeln", skip=3, #row.names=1,
col.names=c("age",
"qxBestand", "qyBestand",
"qxB20", "qyB20",
"qx1Ord", "qy1Ord")
);
DAV2004R.data.av=read.xls(
"Tafeln/DAV_2004_R.xls",
sheet="Altersverschiebungen", skip=1, row.names=1,
col.names=c("YOB", "shiftMBestand", "shiftFBestand",
"shiftMB20", "shiftFB20",
"shiftM1Ord", "shiftF1Ord")
);
DAV2004R.male=valuationTable.trendProjection(
name="DAV 2004R male",
ages=DAV2004R.exakt.data$age, baseYear=2000,
deathProbs=DAV2004R.exakt.data$qx2000,
trend=DAV2004R.exakt.data$trendM
);
DAV2004R.female=valuationTable.trendProjection(
name="DAV 2004R female",
ages=DAV2004R.exakt.data$age, baseYear=2000,
deathProbs=DAV2004R.exakt.data $qy2000,
trend=DAV2004R.exakt.data$trendF
);
frame_files = lapply(sys.frames(), function(x) x$ofile)
frame_files = Filter(Negate(is.null), frame_files)
PATH <- dirname(frame_files[[length(frame_files)]])
rm(frame_files)
setwd(dirname(PATH))
library("gdata")
# DAV1994T (Male, Female), 1st-order and general mortality 1986/88
dav1994T.data=read.xls(
"Tafeln/DAV_T.xls",
sheet=1, skip=1, #row.names=1,
col.names=c("age",
"", "",
"qx2", "qxKI", "qx",
"", "", "",
"qy2", "qyKI", "qy"
));
DAV1994T.male=valuationTable.period(
name="DAV 1994T male, loaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qx)
DAV1994T.male.2Ord=valuationTable.period(
name="DAV 1994T male, unloaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qx2)
DAV1994T.female=valuationTable.period(
name="DAV 1994T female, loaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qy)
DAV1994T.female.2Ord=valuationTable.period(
name="DAV 1994T female, unloaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qy2)
rm(DAV1994T.data)
######################################################
## DAV 2008T Aggregat / Smoker / Non-Smoker
######################################################
DAV2008T.data=read.xls(
"Tafeln/DAV_T.xls",
sheet=2, skip=2, #row.names=1,
col.names=c("age", "", "", "",
"qx2", "qx2NR", "qx2R",
"qx1", "qx1NR", "qx1R",
"", "", "", "",
"qy2", "qy2NR", "qy2R",
"qy1", "qy1NR", "qy1R"
));
### DAV 2008T Aggregat (smoker+non-smoker combined)
DAV2008T.male=valuationTable.period(
name="DAV 2008T male, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1)
DAV2008T.male.2Ord=valuationTable.period(
name="DAV 2008T male, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2)
DAV2008T.female=valuationTable.period(
name="DAV 2008T female, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1)
DAV2008T.female.2Ord=valuationTable.period(
name="DAV 2008T female, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2)
### DAV 2008T Smoker
DAV2008T.male.smoker=valuationTable.period(
name="DAV 2008T male smoker, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1R)
DAV2008T.male.smoker.2Ord=valuationTable.period(
name="DAV 2008T male smoker, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2R)
DAV2008T.female.smoker=valuationTable.period(
name="DAV 2008T female smoker, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1R)
DAV2008T.female.smoker.2Ord=valuationTable.period(
name="DAV 2008T female smoker, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2R)
### DAV 2008T Non-Smoker
DAV2008T.male.nonsmoker=valuationTable.period(
name="DAV 2008T male non-smoker, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1NR)
DAV2008T.male.nonsmoker.2Ord=valuationTable.period(
name="DAV 2008T male non-smoker, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2NR)
DAV2008T.female.nonsmoker=valuationTable.period(
name="DAV 2008T female non-smoker, loaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1NR)
DAV2008T.female.nonsmoker.2Ord=valuationTable.period(
name="DAV 2008T female non-smoker, unloaded",
ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2NR)
rm(DAV2008T.data);
frame_files = lapply(sys.frames(), function(x) x$ofile)
frame_files = Filter(Negate(is.null), frame_files)
PATH <- dirname(frame_files[[length(frame_files)]])
rm(frame_files)
setwd(dirname(PATH))
library("gdata")
###############################################################################
### 1971 IAM individual annuity table; with optional projection scale B_x
###############################################################################
USA1971IAM.data=read.xls(
"Tafeln/USA_Annuities.xls",
sheet="1971 IAM", skip=2, #row.names=1,
col.names=c("age","qx", "qy", "B"));
USA1971IAM.male=valuationTable.period (
name="USA 1971 IAM, male",
ages=USA1971IAM.data$age,
deathProbs=USA1971IAM.data$qx)
USA1971IAM.female=valuationTable.period (
name="USA 1971 IAM, female",
ages=USA1971IAM.data$age,
deathProbs=USA1971IAM.data$qy)
USA1971IAM.male.projected=valuationTable.improvementFactors (
name="USA 1971 IAM, male",
ages=USA1971IAM.data$age, baseYear=1971,
deathProbs=USA1971IAM.data$qx,
improvement=USA1971IAM.data$B)
USA1971IAM.female.projected=valuationTable.improvementFactors (
name="USA 1971 IAM, female",
ages=USA1971IAM.data$age, baseYear=1971,
deathProbs=USA1971IAM.data$qy,
improvement=USA1971IAM.data$B)
rm(USA1971IAM.data);
###############################################################################
### 1983 Table "a" (individual) and GAM (group annuities), period tables
###############################################################################
USA1983a.data=read.xls(
"Tafeln/USA_Annuities.xls",
sheet="1983a - GAM", skip=2,
col.names=c("age","qx", "qy", "qxG", "qyG"));
USA1983a.male=valuationTable.period (
name="USA 1983 Table a, male",
ages=USA1983a.data$age,
deathProbs=USA1983a.data$qx)
USA1983a.female=valuationTable.period (
name="USA 1983 Table a, female",
ages=USA1983a.data$age,
deathProbs=USA1983a.data$qy)
USA1983GAM.male=valuationTable.period (
name="USA 1983 GAM, male",
ages=USA1983a.data$age,
deathProbs=USA1983a.data$qxG)
USA1983GAM.female=valuationTable.period (
name="USA 1983 GAM, female",
ages=USA1983a.data$age,
deathProbs=USA1983a.data$qyG)
rm(USA1983a.data);
###############################################################################
### 1994 GAR/GAM group annuity tables, with improvement factors AA_x
###############################################################################
USA1994GAM.data=read.xls(
"Tafeln/USA_Annuities.xls",
sheet="1994 GAR", skip=2,
col.names=c("age","qx", "AAx", "qy", "AAy", "qxBasic", "qyBasic"));
USA1994GAM.male.basic=valuationTable.period (
name="USA 1994 GAM basic (unloaded), male",
ages=USA1994GAM.data$age,
deathProbs=USA1994GAM.data$qxBasic)
USA1994GAM.female.basic=valuationTable.period (
name="USA 1994 GAM basic (unloaded), female",
ages=USA1994GAM.data$age,
deathProbs=USA1994GAM.data$qyBasic)
USA1994GAR.male=valuationTable.improvementFactors (
name="USA 1994 GAM, male",
ages=USA1994GAM.data$age,
deathProbs=USA1994GAM.data$qx,
improvement=USA1994GAM.data$AAx)
USA1994GAR.female=valuationTable.improvementFactors (
name="USA 1994 GAM, female",
ages=USA1994GAM.data$age,
deathProbs=USA1994GAM.data$qy,
improvement=USA1994GAM.data$AAy)
rm(USA1994GAM.data);
###############################################################################
### Annuity 2000 Basic (unloaded) and Mortality (loaded) Tables, PERIOD tables
###############################################################################
USAAnnuity2000.data=read.xls(
"Tafeln/USA_Annuities.xls",
sheet="Annuity 2000", skip=2, #row.names=1,
col.names=c("age","qxBasic", "qyBasic", "qx", "qy"));
USAAnnuity2000.basic.male=valuationTable.period (
name="USA Annuity 2000 basic, male",
ages=USAAnnuity2000.data$age,
deathProbs=USAAnnuity2000.data$qxBasic)
USAAnnuity2000.basic.female=valuationTable.period (
name="USA Annuity 2000 basic, female",
ages=USAAnnuity2000.data$age,
deathProbs=USAAnnuity2000.data$qyBasic)
USAAnnuity2000.male.projected=valuationTable.period (
name="USA Annuity 2000, male",
ages=USAAnnuity2000.data$age,
deathProbs=USAAnnuity2000.data$qx)
USAAnnuity2000.female.projected=valuationTable.period (
name="USA Annuity 2000, female",
ages=USAAnnuity2000.data$age,
deathProbs=USAAnnuity2000.data$qy)
rm(USAAnnuity2000.data);
###############################################################################
### 1994 GAR/GAM group annuity tables, with improvement factors AA_x
###############################################################################
USA2012IAM.data=read.xls(
"Tafeln/USA_Annuities.xls",
sheet="2012 IAR", skip=3,
col.names=c("age","qxBasic", "qyBasic", "qx", "qy", "G2x", "G2y", "", "", ""));
USA2012IAM.male.basic=valuationTable.period (
name="USA 2012 IAM basic (unloaded), male",
ages=USA2012IAM.data$age,
deathProbs=USA2012IAM.data$qxBasic)
USA2012IAM.female.basic=valuationTable.period (
name="USA 2012 IAM basic (unloaded), female",
ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
deathProbs=USA2012IAM.data$qyBasic)
USA2012IAM.male=valuationTable.improvementFactors (
name="USA 2012 IAM, male",
ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
deathProbs=USA2012IAM.data$qx,
improvement=USA2012IAM.data$G2x)
USA2012IAM.female=valuationTable.improvementFactors (
name="USA 2012 IAM, female",
ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
deathProbs=USA2012IAM.data$qy,
improvement=USA2012IAM.data$G2y)
rm(USA2012IAM.data);
# r-valuation-tables # r-life-insurance-contracts
R package implementing actuarial valuation tables (period and cohort life tables) and also general insurance contracts R package implementing general insurance contracts
\name{ValuationTables-package}
\alias{ValuationTables-package}
\alias{ValuationTables}
\docType{package}
\title{
What the package does (short line)
~~ package title ~~
}
\description{
More about what it does (maybe more than one line)
~~ A concise (1-5 lines) description of the package ~~
}
\details{
\tabular{ll}{
Package: \tab ValuationTables\cr
Type: \tab Package\cr
Version: \tab 1.0\cr
Date: \tab 2013-05-03\cr
License: \tab What license is it under?\cr
}
~~ An overview of how to use the package, including the most important functions ~~
}
\author{
Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
~~ The author and/or maintainer of the package ~~
}
\references{
~~ Literature or other references for background information ~~
}
~~ Optionally other standard keywords, one per line, from file KEYWORDS in the R documentation directory ~~
\keyword{ package }
\seealso{
~~ Optional links to other man pages, e.g. ~~
~~ \code{\link[<pkg>:<pkg>-package]{<pkg>}} ~~
}
\examples{
~~ simple examples of the most important functions ~~
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment