diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000000000000000000000000000000000000..91114bf2f2bba5e0c5252e75018da19b869776f1 --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..807ea251739a053faee6d72fe9dc3ae80d80cc15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.Rproj.user +.Rhistory +.RData diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000000000000000000000000000000000000..0d7be5c3660265276a3e7a7b94fcd2ea00cc726e --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,9 @@ +Package: ValuationTables +Type: Package +Title: What the package does (short line) +Version: 1.0 +Date: 2013-05-03 +Author: Who wrote it +Maintainer: Who to complain to <yourfault@somewhere.net> +Description: More about what it does (maybe more than one line) +License: What license is it under? diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000000000000000000000000000000000000..d75f824ec6278db24891505b14ab3d915514dba7 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1 @@ +exportPattern("^[[:alpha:]]+") diff --git a/R/S4classes.R b/R/S4classes.R new file mode 100644 index 0000000000000000000000000000000000000000..42f5e357712ce2dc6d8ae5c4ffb91926eec4cbda --- /dev/null +++ b/R/S4classes.R @@ -0,0 +1,119 @@ +library("lifecontingencies"); + +# (virtual) base class for valuation tables, contains only the name / ID +valuationTable=setClass( + "valuationTable", + slots=list(name="character"), + prototype=list(name="Actuarial Valuation Table"), + contains="VIRTUAL" +); + + +# A period life table, giving death probabilities for each age, up to +# maximum age omega. Optionally apply selection factors to the probabilities +valuationTable.period=setClass( + "valuationTable.period", + slots=list(ages="numeric", deathProbs="numeric"), + prototype=list(ages=eval(0:120), deathProbs=rep(1,120)), + contains="valuationTable" +); + +# A cohort life table, obtained by age-shifting from a given base table (PODs +# for a base YOB) +valuationTable.ageShift=setClass( + "valuationTable.ageShift", + slots=list(ageShifts="data.frame"), + prototype=list(ageShifts=data.frame(YOB=c(), shifts=c())), + contains="valuationTable.period" +); + +# A cohort life table, obtained by a trend projection from a given base table +# (PODs for a given observation year). Typically, the trend is obtained by +# the Lee-Carter method or some other trend estimation. +# The dampingFunction can be used to modify the cumulative years (e.g. G(tau+x) instead of tau+x) +# If trend2 is given, the G(tau+x) gives the weight of the first trend, 1-G(tau+x) the weight of the second trend +valuationTable.trendProjection=setClass( + "valuationTable.trendProjection", + slots=list(baseYear="numeric", trend="numeric", dampingFunction="function", trend2="numeric"), + prototype=list(baseYear=1980, trend=rep(0,120), dampingFunction=identity, trend2=0), + contains="valuationTable.period" +); + +# A cohort life table, obtained by an improvment factor projection +# from a given base table (PODs for a given observation year). +valuationTable.improvementFactors=setClass( + "valuationTable.improvementFactors", + slots=list(baseYear="numeric", improvement="numeric"), + prototype=list(baseYear=2012, improvement=rep(0,120)), + contains="valuationTable.period" +); + +# A cohort life table described by actual observations (data frame of PODs +# per year and age) +valuationTable.observed=setClass( + "valuationTable.observed", + slots=list(data="data.frame"), + prototype=list(data=data.frame()), + contains="valuationTable" +); + +# A cohort life table obtained by joining two cohort life tables, each of which +# applies only to certain observation years (e.g. for the past use the observed +# PODs, and project them to the future with the trend projection) +valuationTable.joined=setClass( + "valuationTable.joined", + slots=list( + table1="valuationTable", yearRange1="numeric", + table2="valuationTable", yearRange2="numeric"), + contains="valuationTable" +); + + + +setGeneric("getOmega", function(object) standardGeneric("getOmega")); +setMethod("getOmega", "valuationTable.period", + function (object) { + max(object@ages,na.rm=TRUE); + }) + +setGeneric("deathProbabilities", function(object, ..., YOB=1975) standardGeneric("deathProbabilities")); +setMethod("deathProbabilities", "valuationTable.period", + function(object, ..., YOB=1975) { + object@deathProbs; + }) +setMethod("deathProbabilities","valuationTable.ageShift", + function (object, ..., YOB=1975) { + qx=object@deathProbs; + shift.index=match(YOB, object@shifts, YOB); + if (shift.index) {} + # shift= + qx + }) +setMethod("deathProbabilities","valuationTable.trendProjection", + function (object, ..., YOB=1975) { + qx=object@deathProbs; + if (length(object@trend2)<=1) { +#print("length(object@trend2)==0"); + exp(-object@trend*object@dampingFunction(YOB+0:(length(qx)-1)-object@baseYear))*qx + } else { +#print("length(object@trend2)!=0"); +#print(length(object@trend2)); + # dampingFunction interpolates between the two trends: + weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction); + qx*exp(-(object@trend*(1-weights) + object@trend2*(weights))*(YOB+0:(length(qx)-1)-object@baseYear)) + } + }) +setMethod("deathProbabilities","valuationTable.improvementFactors", + function (object, ..., YOB=1975) { + qx=object@deathProbs; + (1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx + }) +setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable")); +setMethod("lifeTable","valuationTable", + function (object, ...) { + qx=deathProbabilities(object, ...); + if (qx[[length(qx)]]!=1) { qx=c(qx, 1, 1); } + probs2lifetable(qx, type="qx") + }) + + diff --git a/R/ValuationTables_Austria_Annuities.R b/R/ValuationTables_Austria_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..65f4ca36f47102f14ef79db65cea8de1c46bfd89 --- /dev/null +++ b/R/ValuationTables_Austria_Annuities.R @@ -0,0 +1,215 @@ +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") + + + +############################################################################### +### RR67 Rententafel für Männer, 3% +############################################################################### + +rr67.data=read.xls( + "Tafeln/AVOe_R.xls", + sheet="OeVM59-61 RR67", skip=1, #row.names=1, + col.names=c("age","qx")); + +rr67=valuationTable.period( + name="ÖVM 59/61 RR67", ages=rr67.data$age, deathProbs=rr67.data$qx +); +# rm(rr67.data); + + +############################################################################### +### EROM/EROF 85 and G 1985 (period and age-shifted generation) +############################################################################### + +eromf.data=read.xls( + "Tafeln/AVOe_R.xls", + sheet="EROM-F Basistafeln", skip=2, #row.names=1, + col.names=c("age", "EROM85", "EROF85", "EROMG1950", "EROFG1950") +); + + +erom85.male=valuationTable.period( + name="EROM 85, male", ages=eromf.data$age, deathProbs=eromf.data$EROM85 +); +erom85.female=valuationTable.period( + name="EROF 85, female", ages=eromf.data$age, deathProbs=eromf.data$EROF85 +); + +EROM.G1950.male=valuationTable.period( + name="EROM G 1950 Basistafel, male", + ages=eromf.data$age, + deathProbs=eromf.data$EROMG1950 +); +EROF.G1950.female=valuationTable.period( + name="EROF G 1950 Basistafel, female", + ages=eromf.data$age, + deathProbs=eromf.data$EROFG1950 +); + +eromf.data.av=read.xls( + "Tafeln/AVOe_R.xls", + sheet="EROM-F G AV", skip=1, row.names=1, + col.names=c("YOB", "shiftM", "shiftF") +); + +EROM.G1950.male.av=valuationTable.ageShift( + name="EROM G 1950 mit Altersverschiebung, male", + ages=eromf.data$age, + deathProbs=eromf.data$EROMG1950, + ageShifts=eromf.data.av[1] +); +EROF.G1950.female.av=valuationTable.ageShift( + name="EROF G 1950 mit Altersverschiebung, female", + ages=eromf.data$age, + deathProbs=eromf.data$EROFG1950, + ageShifts=eromf.data.av[2] +); + + +############################################################################### +# AVÖ 1996R exact (Male, Female), 1st-order only +############################################################################### + +avoe1996r.exakt.data=read.xls( + "Tafeln/AVOe_R.xls", + sheet="AVOe 1996R exakt", skip=2, #row.names=1, + col.names=c("age", + "q1991M", "trendM.long", "trendM.short", "factorMG", "factorM", + "", + "q1991F", "trendF.long", "trendF.short", "factorFG", "factorF", + rep("",12)) +); +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$q1991M*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$q1991F*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$q1991M*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$q1991F*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=read.xls( + "Tafeln/AVOe_R.xls", + sheet="AVOe 2005R", skip=1, #row.names=1, + header=FALSE, + col.names=c("age", + "q2001M","q2001MG", "trendM", + "q2001F", "q2001FG", "trendF", + "", + "q2001M.2Ord", "2001MG.2Ord", "trendM.2Ord", + "q2001F.2Ord", "q2001FG.2Ord", "trendF.2Ord", + "", + "q2001U", "q2001UG", "trendU") +); + +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", "q2001M", "trendM"); +avoe2005r.female=avoe2005r_gen("AVÖ 2005R female (exact), loaded", "q2001F", "trendF"); +avoe2005r.unisex=avoe2005r_gen("AVÖ 2005R unisex (exact), loaded", "q2001U", "trendU"); +avoe2005r.male.unloaded =avoe2005r_gen("AVÖ 2005R male (exact), unloaded", "q2001M.2Ord", "trendM.2Ord"); +avoe2005r.female.unloaded=avoe2005r_gen("AVÖ 2005R female (exact), unloaded", "q2001F.2Ord", "trendF.2Ord"); +avoe2005r.male.group =avoe2005r_gen("AVÖ 2005R male group (exact), loaded", "q2001MG", "trendM"); +avoe2005r.female.group=avoe2005r_gen("AVÖ 2005R female group (exact), loaded", "q2001FG", "trendF"); +avoe2005r.unisex.group=avoe2005r_gen("AVÖ 2005R unisex group (exact), loaded", "q2001UG", "trendU"); + + +############################################################################### +#AVÖ 2005R with age-shifting (Male, Female, unisex), 1st-order only +############################################################################### + +avoe2005r.av.base=read.xls( + "Tafeln/AVOe_R.xls", + sheet="AVOe 2005R AV Basistafel", skip=1, # row.names=1, + col.names=c("age", "q1965M", "q1965MG", "q1965F", "q1965FG", "q1972U", "q1972UG") +); + +avoe2005r.av.verschiebung=read.xls( + "Tafeln/AVOe_R.xls", + sheet="AVOe 2005R AV Verschiebung",skip=2,row.names=1, + col.names=c("YOB", "shiftM", "shiftMG", "shiftF", "shiftFG", "shiftU", "shiftUG") +) + +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", "q1965M", "shiftM"); +avoe2005r.female.av=avoe2005r_gen.av("AVÖ 2005R female (age-shifted), loaded", "q1965F", "shiftF"); +avoe2005r.unisex.av=avoe2005r_gen.av("AVÖ 2005R unisex (age-shifted), loaded", "q1972U", "shiftU"); +avoe2005r.male.group.av =avoe2005r_gen.av("AVÖ 2005R male group (age-shifted), loaded", "q1965MG", "shiftMG"); +avoe2005r.female.group.av=avoe2005r_gen.av("AVÖ 2005R female group (age-shifted), loaded", "q1965FG", "shiftFG"); +avoe2005r.unisex.group.av=avoe2005r_gen.av("AVÖ 2005R unisex group (age-shifted), loaded", "q1972UG", "shiftUG"); + + + +############################################################################### diff --git a/R/ValuationTables_Germany_Annuities.R b/R/ValuationTables_Germany_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..13c2cf014002a3efd87415596b79935d75cf91b0 --- /dev/null +++ b/R/ValuationTables_Germany_Annuities.R @@ -0,0 +1,91 @@ +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 +); diff --git a/R/ValuationTables_Germany_LifeInsurance.R b/R/ValuationTables_Germany_LifeInsurance.R new file mode 100644 index 0000000000000000000000000000000000000000..9d93f5f1b98b3c3bd2ebd68d266f5639d7c12138 --- /dev/null +++ b/R/ValuationTables_Germany_LifeInsurance.R @@ -0,0 +1,94 @@ +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); diff --git a/R/ValuationTables_USA_Annuities.R b/R/ValuationTables_USA_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..6674c685383a414eaeef70146050f7ff05c59535 --- /dev/null +++ b/R/ValuationTables_USA_Annuities.R @@ -0,0 +1,164 @@ +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); + diff --git a/Read-and-delete-me b/Read-and-delete-me new file mode 100644 index 0000000000000000000000000000000000000000..dcaca43dc12db133b1fddbf1bb81ae8798db3e01 --- /dev/null +++ b/Read-and-delete-me @@ -0,0 +1,8 @@ +* Edit the help file skeletons in 'man', possibly combining help files for multiple functions. +* Edit the exports in 'NAMESPACE', and add necessary imports. +* Put any C/C++/Fortran code in 'src'. +* If you have compiled code, add a useDynLib() directive to 'NAMESPACE'. +* Run R CMD build to build the package tarball. +* Run R CMD check to check the package tarball. + +Read "Writing R Extensions" for more information. diff --git a/Tafeln/AVOe_R.xls b/Tafeln/AVOe_R.xls new file mode 100644 index 0000000000000000000000000000000000000000..3518b2676801a42cc8c64b1a82e6992a108287c3 Binary files /dev/null and b/Tafeln/AVOe_R.xls differ diff --git a/Tafeln/DAV_2004_R.xls b/Tafeln/DAV_2004_R.xls new file mode 100644 index 0000000000000000000000000000000000000000..8e9190957e4f858e9ba4de2fab5660fe6d420526 Binary files /dev/null and b/Tafeln/DAV_2004_R.xls differ diff --git a/Tafeln/DAV_R.xls b/Tafeln/DAV_R.xls new file mode 100644 index 0000000000000000000000000000000000000000..35c58a73cbc6f062c815a2c0faea2f4334a2de24 Binary files /dev/null and b/Tafeln/DAV_R.xls differ diff --git a/Tafeln/DAV_T.xls b/Tafeln/DAV_T.xls new file mode 100644 index 0000000000000000000000000000000000000000..84d3e953b9c89632f1301ee2998609780ede3e2d Binary files /dev/null and b/Tafeln/DAV_T.xls differ diff --git a/Tafeln/Overview_Tables.ods b/Tafeln/Overview_Tables.ods new file mode 100644 index 0000000000000000000000000000000000000000..1a52a0cf19a36a1c5e93546f76698fdae7c2f256 Binary files /dev/null and b/Tafeln/Overview_Tables.ods differ diff --git a/Tafeln/USA_Annuities.xls b/Tafeln/USA_Annuities.xls new file mode 100644 index 0000000000000000000000000000000000000000..e0456b95c48c69794249ada1cd7ec299be4bf55d Binary files /dev/null and b/Tafeln/USA_Annuities.xls differ diff --git a/ValuationTables.Rproj b/ValuationTables.Rproj new file mode 100644 index 0000000000000000000000000000000000000000..96bdc3da74e6898e53b6b1412e5c6660588c7a69 --- /dev/null +++ b/ValuationTables.Rproj @@ -0,0 +1,16 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Package +PackageInstallArgs: --no-multiarch diff --git a/man/ValuationTables-package.Rd b/man/ValuationTables-package.Rd new file mode 100644 index 0000000000000000000000000000000000000000..d41e96bc2b2266b0f990218e5443cca423de709c --- /dev/null +++ b/man/ValuationTables-package.Rd @@ -0,0 +1,40 @@ +\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 ~~ +}