This article was first published on T. Moudiki's Webpage - Python , and kindly contributed to python-bloggers. (You can report issue about the content on this page here)

# esgtoolkit version v1.1.0

Disclaimer: I’ve used Quarto to generate this post, on a (Ubuntu Linux) machine that already had R installed.

## Install package

```pip install esgtoolkit
```
```pip install jupyter
```
```import numpy as np
import pandas as pd
import seaborn as sns
from esgtoolkit import simdiff, simshocks, esgplotbands
from time import time
```
```# GBM
print(" - Geometric Brownian Motion with input shock: ----------------- \n")
start = time()
eps0 = simshocks(n = 10, horizon = 5, frequency = "quarterly", seed=13)
sim_GBM = simdiff(n = 10, horizon = 5, frequency = "quarterly",
model = "GBM",
x0 = 100, theta1 = 0.03, theta2 = 0.1,
eps = eps0)
print(f"Time taken: {time() - start}")
print(sim_GBM)
```
``` - Geometric Brownian Motion with input shock: -----------------

Time taken: 0.004328727722167969
Series 1    Series 2    Series 3    Series 4    Series 5    Series 6  \
0.00  100.000000  100.000000  100.000000  100.000000  100.000000  100.000000
0.25  103.454979  101.956609  101.133073   94.475589  100.244989   98.786559
0.50  102.654906  112.460886  110.188097   96.496339  102.385258  102.492172
0.75  112.886299  115.206435  114.064448   96.386361   97.054726   95.068583
1.00  114.662968  110.024723  124.429289   92.774201   88.383140   96.347981
1.25  122.165101  114.201486  122.309546   98.206449   95.331175   95.677369
1.50  125.511793  115.778865  118.688216   94.376833   95.534048   93.892757
1.75  134.306574  108.306610  113.475059   92.282166   98.038320  100.441304
2.00  136.757466   98.481036  103.641963   98.358521   93.454057  103.278180
2.25  135.123598   93.997305  105.747022  104.800696  101.883088  103.890307
2.50  143.695591   91.204928  114.173285  104.202724  107.800189  113.662872
2.75  136.902284   91.739074  116.468844   99.310188  110.556223  109.525891
3.00  140.979002   96.311551  121.711082   99.626263  108.147813  119.607825
3.25  132.530357   95.074775  120.355412   97.694078  102.417748  114.367064
3.50  121.542060   93.185125  117.847286   89.363048   96.264051  110.506563
3.75  119.643633   92.497056  119.983915   90.406402   90.245912  110.917510
4.00  119.231891   90.300205  118.951552   85.772319   89.658624  110.986348
4.25  128.655956   89.366542  114.771418   94.180926   84.858749  116.546428
4.50  130.115822   88.847329  120.363700   92.900846   86.308649  121.742365
4.75  130.184550   85.629574  130.445114   95.574373   87.142176  124.914620
5.00  135.682055   82.593599  135.936293   98.363391   91.525969  124.534089

Series 7    Series 8    Series 9   Series 10
0.00  100.000000  100.000000  100.000000  100.000000
0.25  107.521866  102.348972  100.949160   97.990714
0.50  110.681157   97.246611  107.375117  101.785448
0.75  110.911899   92.661609  105.781405   92.336489
1.00  111.209495   84.396236  109.985201   92.018360
1.25  104.625881   86.772149  114.009257   93.490594
1.50  104.229700   95.096738  109.210712   88.220991
1.75  103.651073   88.414156  111.465709   89.709708
2.00  103.999695   87.394462  112.329965   88.929610
2.25   99.388953   80.781602  117.645437   84.936292
2.50   95.771344   76.738284  110.914729   89.041692
2.75  100.543861   66.981236  128.192181   94.201157
3.00  101.800514   73.434320  126.785558   96.875158
3.25  104.516113   69.491231  134.165204   99.775879
3.50  110.135072   68.837380  155.407720   95.034869
3.75  121.181232   69.027246  162.989689   98.596933
4.00  120.852696   66.611100  189.426959   99.295934
4.25  119.247152   67.861187  193.981618  103.665617
4.50  124.406121   60.036808  186.553021  111.022297
4.75  131.331886   60.426209  195.536293  107.700006
5.00  123.866484   68.372526  191.971234  107.989511
```
```isinstance(sim_GBM, pd.DataFrame)
```
```True
```
```sim_GBM.plot(kind = 'line', legend = False)
```