Skip to content

Commit f4245f2

Browse files
Merge branch 'master' into try-renaming2
2 parents 53568ee + 77b648e commit f4245f2

File tree

5 files changed

+119
-117
lines changed

5 files changed

+119
-117
lines changed

NEWS.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
# version 1.0.0
22

3-
- rename `ESGtoolkit` to `esgtoolkit`
3+
- rename `ESGtoolkit` to `esgtoolkit` (announced [here](https://thierrymoudiki.github.io/blog/2023/10/02/r/esgtoolkit-v062))
44
- include `ycinter` and `ycextra` (from package `ycinterextra`, discontinued and unilaterally removed from CRAN)
55

6+
# version 0.6.2
7+
8+
- **Important:** Starting with 1.0.0, the next version, it will be renamed as: 'esgtoolkit' (to finally remove all my active packages from CRAN)
9+
610
# version 0.6.0
711

812
- include hermite cubic spline and Smith-Wilson methods for curve interpolation

R/discount_factors.R

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Stochastic discount factors or discounted values -----
2+
esgdiscountfactor <- function(r, X)
3+
{
4+
if(missing(r) || missing(X))
5+
stop("'r' and 'X' must be provided")
6+
7+
length.r <- length(r)
8+
length.X <- length(X)
9+
start.r <- start(r)
10+
deltat.r <- deltat(r)
11+
start.X <- start(X)
12+
deltat.X <- deltat(X)
13+
14+
if(length.r == 1 && length.X == 1)
15+
{
16+
return(X*exp(-r))
17+
}
18+
19+
if(length.r == 1 && length.X != 1)
20+
{
21+
r <- ts(matrix(r, nrow(X), ncol(X)),
22+
start = start.X, deltat = deltat.X)
23+
24+
if(tsp(X)[1] > 0)
25+
{
26+
return(ts(X*exp(-apply(r, 2, cumsum)*deltat.X),
27+
start = 0,
28+
deltat = deltat.X))
29+
}
30+
else
31+
{
32+
Int_r <- exp(-apply(r, 2, cumsum)*deltat.X)
33+
return(ts(X*rbind(rep(1, ncol(X)),
34+
Int_r[1:(nrow(X)-1), ]), ,
35+
start = 0,
36+
deltat = deltat.X))
37+
}
38+
}
39+
40+
if(length.r != 1 && length.X == 1)
41+
{
42+
X <- ts(matrix(X, nrow(r), ncol(r)),
43+
start = start.r, deltat = deltat.r)
44+
45+
return(ts(X*exp(-apply(r, 2, cumsum)*deltat.r),
46+
start = 0,
47+
deltat = deltat.r))
48+
}
49+
50+
if(length.r != 1 && length.X != 1)
51+
{
52+
if(tsp(X)[1] > 0)
53+
{
54+
return(suppressWarnings(ts(X*window(exp(-apply(r, 2, cumsum)*deltat.r),
55+
start = start.X,
56+
deltat = deltat.X),
57+
start = 0,
58+
deltat = deltat.X)))
59+
}
60+
else
61+
{
62+
Int_r <- ts(exp(-apply(r, 2, cumsum)*deltat.r), deltat = deltat.r)
63+
return(suppressWarnings(ts(X*rbind(rep(1, ncol(X)),
64+
Int_r[1:(nrow(X)-1), ]), ,
65+
start = 0,
66+
deltat = deltat.X)))
67+
}
68+
}
69+
}
70+
71+
72+
# Estimation of discounted asset prices -----
73+
esgmcprices <- function(r, X, maturity = NULL)
74+
{
75+
if(missing(r) || missing(X))
76+
stop("'r' and 'X' must be provided")
77+
78+
maturity.out <- maturity
79+
80+
if(is.ts(X) && tsp(X)[1] > 0 && !is.null(maturity))
81+
{
82+
maturity.out <- maturity - deltat(X)
83+
}
84+
85+
Y <- esgdiscountfactor(r, X)
86+
87+
if(length(r) == 1 && length(X) == 1)
88+
{
89+
return(Y)
90+
}
91+
92+
Z <- ts(rowMeans(Y), start = start(Y), deltat = deltat(Y))
93+
94+
if(!is.null(maturity))
95+
{
96+
return(window(Z, start = maturity.out, end = maturity.out))
97+
}
98+
else
99+
{
100+
return(Z)
101+
}
102+
103+
}
104+

R/tests.R

Lines changed: 0 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,5 @@
11
# Martingale Tests and Monte Carlo convergence --------------------------------------------------
22

3-
# Stochastic discount factors or discounted values
4-
esgdiscountfactor <- function(r, X)
5-
{
6-
if(missing(r) || missing(X))
7-
stop("'r' and 'X' must be provided")
8-
9-
length.r <- length(r)
10-
length.X <- length(X)
11-
start.r <- start(r)
12-
deltat.r <- deltat(r)
13-
start.X <- start(X)
14-
deltat.X <- deltat(X)
15-
16-
if(length.r == 1 && length.X == 1)
17-
{
18-
return(X*exp(-r))
19-
}
20-
21-
if(length.r == 1 && length.X != 1)
22-
{
23-
r <- ts(matrix(r, nrow(X), ncol(X)),
24-
start = start.X, deltat = deltat.X)
25-
26-
if(tsp(X)[1] > 0)
27-
{
28-
return(ts(X*exp(-apply(r, 2, cumsum)*deltat.X),
29-
start = 0,
30-
deltat = deltat.X))
31-
}
32-
else
33-
{
34-
Int_r <- exp(-apply(r, 2, cumsum)*deltat.X)
35-
return(ts(X*rbind(rep(1, ncol(X)),
36-
Int_r[1:(nrow(X)-1), ]), ,
37-
start = 0,
38-
deltat = deltat.X))
39-
}
40-
}
41-
42-
if(length.r != 1 && length.X == 1)
43-
{
44-
X <- ts(matrix(X, nrow(r), ncol(r)),
45-
start = start.r, deltat = deltat.r)
46-
47-
return(ts(X*exp(-apply(r, 2, cumsum)*deltat.r),
48-
start = 0,
49-
deltat = deltat.r))
50-
}
51-
52-
if(length.r != 1 && length.X != 1)
53-
{
54-
if(tsp(X)[1] > 0)
55-
{
56-
return(suppressWarnings(ts(X*window(exp(-apply(r, 2, cumsum)*deltat.r),
57-
start = start.X,
58-
deltat = deltat.X),
59-
start = 0,
60-
deltat = deltat.X)))
61-
}
62-
else
63-
{
64-
Int_r <- ts(exp(-apply(r, 2, cumsum)*deltat.r), deltat = deltat.r)
65-
return(suppressWarnings(ts(X*rbind(rep(1, ncol(X)),
66-
Int_r[1:(nrow(X)-1), ]), ,
67-
start = 0,
68-
deltat = deltat.X)))
69-
}
70-
}
71-
}
72-
73-
74-
# Estimation of discounted asset prices
75-
esgmcprices <- function(r, X, maturity = NULL)
76-
{
77-
if(missing(r) || missing(X))
78-
stop("'r' and 'X' must be provided")
79-
80-
maturity.out <- maturity
81-
82-
if(is.ts(X) && tsp(X)[1] > 0 && !is.null(maturity))
83-
{
84-
maturity.out <- maturity - deltat(X)
85-
}
86-
87-
Y <- esgdiscountfactor(r, X)
88-
89-
if(length(r) == 1 && length(X) == 1)
90-
{
91-
return(Y)
92-
}
93-
94-
Z <- ts(rowMeans(Y), start = start(Y), deltat = deltat(Y))
95-
96-
if(!is.null(maturity))
97-
{
98-
return(window(Z, start = maturity.out, end = maturity.out))
99-
}
100-
else
101-
{
102-
return(Z)
103-
}
104-
105-
}
106-
107-
1083
# Convergence of Monte Carlo prices
1094
esgmccv <- function(r, X, maturity, plot = TRUE, ...)
1105
{

R/zzz.R

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
#.onAttach <- function(lib, pkg) {
2-
#packageStartupMessage(
3-
# ".\n")
4-
#}
5-
6-
7-
.onLoad <- function(libname, pkgname) {
8-
9-
}
1+
.onAttach <- function(libname, pkgname) {
2+
packageStartupMessage(
3+
"\n \n This is version ",
4+
utils::packageVersion(pkgname),
5+
" of ",
6+
pkgname,
7+
". Starting with 1.0.0, the next version, it will be renamed as: 'esgtoolkit' (to finally remove all my active packages from CRAN) \n \n "
8+
)
9+
}

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
esgtoolkit | <a class="github-button" href="https://github.com/Techtonique/esgtoolkit/stargazers" data-color-scheme="no-preference: light; light: light; dark: dark;" data-size="large" aria-label="Star esgtoolkit/esgtoolkit on GitHub">Star</a>
22
==========
33

4-
[![Downloads](https://cranlogs.r-pkg.org/badges/esgtoolkit)](https://cran.r-project.org/package=esgtoolkit) (Not on CRAN anymore, so this is certainly not accurate... )
5-
64
[![Last Commit](https://img.shields.io/github/last-commit/Techtonique/esgtoolkit)](https://github.com/Techtonique/esgtoolkit)
75

6+
**Important:** Starting with 1.0.0, the package is renamed as lower case 'esgtoolkit' (to finally remove all my active packages from CRAN)
87

98
A toolkit for Monte Carlo Simulations in Finance, Economics, Insurance, Physics. Multiple simulation models can be created by combining building blocks provided in the package.
109

0 commit comments

Comments
 (0)