Version 0.3.0 of **ESGtoolkit** has been released – on GitHub for now. As in v0.2.0, it contains functions for the simulation of dependent random variables. Here is how you can **install** the package from R console:

```
library(devtools)
devtools::install_github("Techtonique/esgtoolkit")
```

When I first created ESGtoolkit back in 2014, its name stood for *Economic Scenarii Generation* toolkit. But since the **underlying technique** is an exact simulation of – solutions of – Stochastic Differential Equations (SDE), the ESG part of the name is more or less irrelevant now. SDEs are, indeed, used to describe the dynamics of several physical systems. The **main changes** in v0.3.0 are:

-The **use of VineCopula** instead of CDVine (soon to be archived) for the **simulation of dependencies between random variables**. **More on this later** in the post, and thanks to Thomas Nagler, Thibault Vatter and Ulf Schepsmeier for the fruitful discussions.

-A **new website** section for the package, created with pkgdown, and including documentation + examples + loads of graphs: https://techtonique.github.io/.

It’s worth noticing that ESGtoolkit is not destined to evolve at a *great* pace. And notably, **there’ll never be model calibration features**, as those are already available in a lot of tools out there in the wild.

# But what are Copulas?

Simply put, Copulas (as in VineCopula) are functions which are used to **create flexible multivariate dependencies** from marginal distributions. **What does that mean?**
What we’re more accustomed to as a dependency between variables is **linear correlation**. Commonly, *correlation*. For example, if we let `Sales`

be your
dollar sales of kombucha per month, and `Advert`

be your advertising costs, then
the linear correlation between `Sales`

and `Advert`

is (very) roughly, the frequency at which they both vary in the same direction, when put on the same scale.

When linear correlation is close to 1, `Sales`

and `Advert`

mostly vary in the same direction. Otherwise, when it’s close to -1, `Sales`

and `Advert`

mostly vary in opposite directions. But **linear correlation is… linear**. The intuition behind this, is the proportionality of the correlation coefficient with the slope of a simple linear regression model. Linearity implies, it doesn’t take into account more complex, nonlinear types of dependencies which can occur quite frequently though.

# Examples

Not familiar with R? You can skip this introductory code and report to the next section.

## Code

```
devtools::install_github("Techtonique/esgtoolkit")
library(ESGtoolkit)
```

```
## Simulation parameters
# Number of risk factors
d <- 2
# Number of possible combinations of the risk factors
dd <- d*(d-1)/2
# Copula family : Gaussian -----
fam1 <- rep(1,dd)
# Correlation coefficients between the risk factors (d*(d-1)/2)
par0_1 <- 0.9
par0_2 <- -0.9
# Copula family : Rotated Clayton (180 degrees) -----
fam2 <- 13
par0_3 <- 2
# Copula family : Rotated Clayton (90 degrees) -----
fam3 <- 23
par0_4 <- -2
```

```
## Simulation of the d risk factors
# number of simulations for each variable
nb <- 500
# Linear correlation = 1
s0_par1 <- simshocks(n = nb, horizon = 4,
family = fam1, par = par0_1)
# Linear correlation = -1
s0_par2 <- simshocks(n = nb, horizon = 4,
family = fam1, par = par0_2)
# Rotated Clayton Copula (180 degrees)
s0_par3 <- simshocks(n = nb, horizon = 4,
family = fam2, par = par0_3)
# Rotated Clayton Copula (90 degrees)
s0_par4 <- simshocks(n = nb, horizon = 4,
family = fam3, par = par0_4)
```

## Linear correlation +1 and -1

Same distribution on the marginals (Normal), different type of dependency:

- blue: correlation = +1
- red: correlation = -1

```
ESGtoolkit::esgplotshocks(s0_par1, s0_par2)
```

## Correlation +1 and Rotated Clayton Copula (180 degrees)

Same distribution on the marginals (Normal), different type of dependency:

- blue: correlation = +1
- red: Rotated Clayton Copula (180 degrees)

```
ESGtoolkit::esgplotshocks(s0_par1, s0_par3)
```

## Correlation -1 and Rotated Clayton Copula (90 degrees)

Same distribution on the marginals (Normal), different type of dependency:

- blue: correlation = +1
- red: Rotated Clayton Copula (90 degrees)

```
ESGtoolkit::esgplotshocks(s0_par2, s0_par4)
```

When we observe rotated Clayton copula’s simulated points in the second and third graphs, we see patterns which can’t be reproduced when using linear correlation, with **actual danger zones**: **wherever linear correlation can’t go for certain**. For example, the

**quadrant [-4, -2] x [-2, 0]**in the last graph.