iepn hjm report 130916
TRANSCRIPT
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Interest Rate Derivatives pricing using Heath Jarrow Morton
with spectral analysis and low discrepancy sequences
for high-performance Monte Carlo simulations
Correlation matrix surface representation
Tenors of Libor difference rates over a 25 year horizon
(1000 point time series, 60 monthly followed by 40 semester tenors)
Frederic Siboulet
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Summary
We implement herein the pricing of cash and derivative interest rates instruments using the Heath
Jarrow Morton (HJM) model with Musiela parameterization, spectral decomposition and low discrepancy
Sobol Monte Carlo simulations.
In the first part, we construct the curve simulation framework, which is based on the observations of
long-term historical time series of forward rates, from where we build the variance-covariance estimation
of the rates differences (from one observation step to the next), perform a spectral decomposition for
dimensionality reduction (driven by the selected R-square level), simulate the principal vectors’ diffusion
with independent random variables using Sobol quasi random numbers (low discrepancy sequences) for
fast Monte Carlo convergence, estimate the principal vectors’ drift with least square polynomial
regression and integration. This multifactor framework is delivered in a tri-dimensional HJM forward rate
cube (Tenors x Steps x States), which is readily available for instrument valuation.
In the second part, we price instruments off the HJM cube. There, pricing then becomes a trivial
application of the Feynman-Kac type risk neutral expectation of the present value of future cash flows
discounted over the set of simulated curves provided within the HJM cube.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
ContentsSummary ................................................................................................................................................ 2
The HJM Model ..................................................................................................................................... 5
Understanding forward rates .............................................................................................................. 5
The HJM forward rate stochastic differential equation ...................................................................... 6
Market Price of Risk ........................................................................................................................... 7
Musiela parameterization ................................................................................................................... 8
From single to multivariate ................................................................................................................ 8
Drift calculations .............................................................................................................................. 10
Final formulation of the forward rates .............................................................................................. 10
Assumptions ......................................................................................................................................... 12
Part ONE: Constructing the HJM forward rate cube ............................................................................ 13
House keeping .................................................................................................................................. 13
Parameters settings ........................................................................................................................... 13
Excel information exchange ............................................................................................................. 14
Variance-Covariance and correlation ............................................................................................... 14
Eigenvectors and Eigenvalues .......................................................................................................... 15
Select PCA dimension ...................................................................................................................... 15
Diffusion projections on Eigenvectors ............................................................................................. 16
Diffusion function ............................................................................................................................ 16
Validating diffusion function ........................................................................................................... 16
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
HJM Random Term calculation ....................................................................................................... 16
Data Structure ............................................................................................................................... 16
Diffusion cube .............................................................................................................................. 17
HJM Drift Term Calculation ............................................................................................................ 18
HJM Forward Rate Cube .................................................................................................................. 18
Part TWO: Instrument pricing. ............................................................................................................. 21
Zero Coupon Bonds .......................................................................................................................... 21
Caps and Floors ................................................................................................................................ 27
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
The HJM Model
The Heath Jarrow Morton model was a major break though in fixed income modeling: contrary to the
limited short term interest rate that had been driving previous and simpler interest rates models (e.g
Vasicek, Cox-Ingersoll-Ross, Ho-Lee, Hull-White), HJM was instead founded on the simulation of the
whole forward rate curve. One of the key benefits of the HJM approach is the canonical curve fitting of
the entire set of curves to the market prices.
Understanding forward rates
Let’s assume a perfect world with ZCB at any time t and for any maturity T. Let’s write:
2( , ) , : ,
T
tr s ds
t T T t Z t T e
where r(s) is defined as the “forward rate”. Specifically with HJM we use the “forward spot rate” (aka
instantaneous forward rate) applicable at future time s between t and T. Since that rate may change with
our inception point t, we need to write r(s) = F(t,s). These forward rates are consistent with market prices
and we can show that (assuming differentiability):
ln ,T( ,T)
Z tF t
T
It is important to understand that both t and T vary: t is our inception point, i.e. the future time at
which we infer from now the forward spot rate that will be applicable at each time step between t and T.
T is the maturity date of the ZCB, so for a given bond it does not change from today to tomorrow.
That is why we also use the Musiela parameterization, whereby the maturity is expressed in the form of a
“tenor”, which is defined as a time interval from our inception point to the maturity point.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Therefore, in the Musiela parameterization, a one year tenor today is also a one year tenor tomorrow,
and so on, with the end point date sliding ahead by one day from one observation day to the next.
The HJM forward rate stochastic differential equation
In the HJM model, we model the whole forward spot curve, not just the short end as with myopic
models. The price of a ZCB of maturity T at time t is:
,s,
T
tF t ds
Z t T e
Let’s assume a log-normal random walk with a stochastic differential equation for zero coupon bonds
as follows (t time variable):
( , ) , ( , )dt , ( , )dWdZ t T t T Z t T t T Z t T
Note that at maturity t=T we have:
( , ) 1 ( , ) 0Z t t t t
and
;s ln ,T, ,T
T
tF t ds Z t
Z t T e F tT
Now we have:
2
( , ) , ,ln ,T
,T,T, ,T
2( , ) , ( , )dt , ( , )dW
, ,T
dF t T m t T dt t T dWZ t
tF tm t T tT
TdZ t T t T Z t T t T Z t T
t T tT
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Where we notice that the drift term depends on the diffusion term. We can now write:
( , ) , ,s ,T ,T
tdF t T t T t ds t dt t T dW
T (0)
Market Price of Risk
We construct a risk free portfolio where we hedge one ZCB with another:
1 2, ,Z t T Z t T
Then from t to t+dt we have (assuming Δ constant over the infinitesimal period and ZCBs with a Log-
Normal SDE):
1 2
1 1 1 2 2 2
, ,
, , , , , ,
d dZ t T dZ t T
Z t T t T dt t T dW Z t T t T dt t T dW
(1)
With the risk free hypothesis between t and t+dt we have:
1 2, ,d r dt r Z t T Z t T dt (2)
Since (1)=(2) we have:
1 1 1 2
2 2 1 2
, , , ( ) , ( )
, , , ,
t T Z t T t T r t t T r t
t T Z t T t T t T
The RHS equation of this implication imposes the independence on maturities T, which we express as
the usual market price of risk λ:
, ( ) ,t T r t t t T
In risk neutral we have independence from T:
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
, ( )t T r t
And then we can rewrite (0) in risk neutral terms as:
( , ) , ,s ,T
tdF t T t T t ds dt t T dW (4)
This expression in risk neutral could be used to price derivatives. However, this is a single factor
model which is generally insufficient in practice.
Musiela parameterization
In practice we prefer tenor to maturities; let’s write:
, ,T t t T t
Where τ is a tenor (e.g. 1y, 2y), not a maturity (e.g. 13/07/15). We then have:
, ,F t F t t
Then, risk free (4) becomes:
0
( , ) , ,s , ,d F t t t ds F t dt t dW
(5)
Note: going forward, we will simplify the notation and remove the bar above the functions, assuming
that the modis operandi is sliding tenors, not fixed maturities.
From single to multivariate
In the multivariate case with Musiela parameterization, we show that:
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
0
1 1
( ; ) , , s , ,n n
j j j jj j
dF t t t ds F t dt t dW
(6), or
**
'
0( , ) , ,s , ,
nn
j j jj jjvector transpose scalarvector
scalar
drift scalar term
dF t t t ds F t dt t
*
'
nvector
vector transpose
diffusion scalar term
dW
(6’)
At this stage, every tenor depends on every other tenor and this is a bit inextricable an equation to
manipulate.
But we know that W is a n dimensional Brownian motion with a VCV, say Σ. That VCV (matrix semi
positive definite) can be administered a spectral decomposition such that :
*
*2
1 1
2 2
,
'
'n
n
j
j
ij j i jj j
j
V VV e
V V
e e
Where is the Eigenvector j, its corresponding Eigenvalue and =1 when i=j, zero otherwise.
For the sake of standard notation, we write the matrix V with the Eigenvector in columns. We also
assume, without prejudice, that the orthogonal spectral frame is such that the Eigenvectors are normalized
and that the Eigenvalues are positive and ranked from largest to smallest (naturally, the Eigenvectors must
be sorted accordingly for the integrity of the spectral decomposition):
1 2
2
2*1
1 2
( ) 1
0
nj j
iin
j j
L e ej
j j
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
In theory, there is no difference between theory and practice. In practice there is: a few vectors are
enough to explain the system’s behavior with a high level of accuracy. Once we define our expectation on
R^2, we can infer the reduced dimensionality k:
2
1 1 1
arg min /k n k
j j jk j j j
k R
Drift calculations
I order to calculate the drift scalar bit in (6’), we need to compute the following term for any given j:
0
, ,sj jt t ds
which requires straddling between discrete and continuous time. In order to do that, we will perform a
least square polynomial fitting of the discrete points (typically cubic). Please note the distinction between
the discrete and the continuous formulations:
*the discrete Eigenvector j
the value of the continous interpolated diffusion j coefficient at tenor
n
j ji i
jj i i
e e
e
Final formulation of the forward rates
With these assumptions and tools available, we come up with the following forward curves at time t
for tenor τ:
* **
' '
0( , ) ,
k kk
j j jj j j
j jj
dF t e e s ds F t dt e dX
Which we can also write in vector tenors as:
* **
' '
0( )
i
k kk
j j ji j i j i j i
j jj
dF t e e s ds F t dt e dX
(7)
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
To the naked eye, (7) may not look much better than (6’). But let not one be side-blinded! We have a
couple of very good improvements:
1. We reduced the dimensions from n to k (in practice say 100 to around 5 for a typical R^2 of 95%)
2. X is a small vector of independent Brownians (no more worries about VCV at the numerical level)
Further, it is reasonable to approximate the singular term in the drift calculation by the differential
from the previous time step, which simplifies the numerical process quite a bit. Hence, we get the
following vector equation that we implement in our application:
* *
**
'
0
'( )
i
k k
kn
j jj i j i
j j
jj i
j i
e e s ds F t t tF t
e X
In the format proposed above and by deference to conventional matrix notations, we represent tenors
in rows i and time steps in columns j.
Also, the first time step is the last (most recent) market curve observation; hence the first step does
not contain any random term or any calculations. The subsequent time steps all require their previous time
steps for the calculation of the singular drift term. This may create some algorithmic complications, as the
calculations of drift and forward rates will be intertwined.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Assumptions
For our illustration, we used Libor data from the BOE. However, the application was designed,
developed and tested on a proven data set for numerical and quantitative validation. The data substitution
is limited to a simple file direction contained into a single line of code, and therefore it is applicable to
virtually any data set with minimal Excel format adaptation for compliance.
In the following part ONE and TWO of this document, we consistently use the following
assumptions:
Time series:
o Looking back 1000 days (about 4 years, in particular staying out of the abnormal
4Q2008 period) for the VCV estimation, hence the Eigen structure
o Monthly tenors over five years, ie 60 monthly tenors, followed by 40 semester tenors
for a total of 25 years
Variance explanation R^2 set at 95%, driving the dimension order of the spectral
decomposition
Cubic polynomial least square volatility regression (polynomial degree 3)
Scenario states of 1000 simulations, each state having a number of factors equal to the Eigen-
dimension (hence PCA x States number of independent variables simulated)
Low discrepancy sequences with Sobol quasi-random numbers to expedite the convergence.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Part ONE: Constructing the HJM forward rate cube
House keeping
We perform basic tasks, such as default settings, directory direction, variable cleaning, etc.
Parameters settings
We regroup here most of the entries to key simulation parameters. We tried to balance flexibility and
speed of utilization for the users: some parameters are entered by the user interactively; others are hard
coded into the program. With some trivial Matlab code changes, users may to change these operational
settings one way or another.
These parameters include for example:
1. R^2 level; this will impact the PCA dimension: the higher R^2, the more dimensions are retained
– beware of over fitting.
2. Degree of polynomial regression for the drift calculation; three is generally a wise choice.
3. Time step sample size; typically, 1/100 of a year. We could sample for each business day, but this
would introduce 2.5 more data points and require leap years and other minutia management
beyond our current scope.
4. End simulation time; typically 10 to 25 years. The longer the horizon, the more data points
5. Number of scenarii: this is a very important parameter as each additional scenario is an additional
state or page in the HJM cube. We expect Sobol to converge under 1000 scenario states, i.e. 1000
curve cube pages.
Other parameters are or could be introduced here to tailor the algorithm.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Excel information exchange
We read the forward rate information in Excel. The application design allows to switch around and
use different data sets with the little or no Matlab code change. Once this code is run, all the time series
should be loaded for Matlab to run its course all the way to the HJM forward rate cube.
Variance-Covariance and correlation
We compute the Variance-Covariance: we should stress here that the entire structure of the HJM
simulation framework hinges on the VCV (EV-EV calculation and so on). We do not use the correlation
matrix in the rest of the program, but since the cube is not easy to display visually, a 3D surface plot of
the correlation matrix will give a rough sense of the dependence structure.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Eigenvectors and Eigenvalues
We compute EigenVectors and EigenValues, normalize EigenVectors (if necessary) and sort
EigenValues and associated EVectors by decreasing positive order.
Select PCA dimension
We select PCA dimension by user defined R^2. Typically user should seek dim around 3 to 5 and
may adjust R^2 accordingly. Too small an R^2 will generate zero dimension, a custom error message and
stop running the application.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Diffusion projections on Eigenvectors
We express volatilities on the Eigenvectors. This is the sqrt(lemda-j) x normalized positive1
Eigenvector. Then it calculates the coefficient of the least square polynomial regression on these values.
This polynomial will later be necessary to calculate the drift by function and function integration for
arbitrary tenors.
Diffusion function
We calculate volatility based on: polynomial coefficients for the selected PCA’s EigenVectors, time
step as a fraction of year (typically 1/100). This is a separate function.
Validating diffusion function
Validates (visually) the fitting of the volatility function on the selected Eigenvectors and Eigenvalues.
HJM Random Term calculation
Data Structure
For the random term, we use a cubic data structure: Tenors (Row) x TimeSteps (Columns) x
ScenarioStates (Pages). The HJM cube will end up dimension: (number of Tenors) x (number of Time
Steps +1) x (number of Scenario States).
It is important to notice the addition of one scenario, the first “base” scenario, which is picked from
the latest observable market data, hence does not have a random component. The fact that Matlab does
not operate naturally in base zero makes the development process a little touchy. Separately, we
approximate the first tenor (closest to spot) to the spot rate.
1 Each Eigenvector has two possible orientations. We retain the one that gives a positive Eigenvalue. In
practice, some residual Eigenvalues that become extremely small and can jump around zero in the numerical process; we will close‐to‐zero‐plus out these very small values, although they do not significantly interfere with the spectral analysis or thereafter.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Diffusion cube
The diffusion cube is the vector product of a PCA number of {sqrt(lembda-j)*e-ij} by a PCA number
of {standard random normal variables}. The diffusion terms are given by the polynomial regression (not
by the discrete Eigen values and vectors) at the Tenors.
The user may choose the random component either as a standard normal random number (Matlab
normrnd) or a Sobol quasi random number (Matlab sobolset). Although these graph may look boring,
they are the most complex part of the valuation.
In the Sobol case, because of the limitations of multivariate Sobol QRN, we decided to generate only
a PCA number of variable over a horizon of (number of time steps) x (number of scenarios). We then
slice the data in sequence by length on (number of time steps) and assign them to the states in sequences.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
The alternative could have been to generate PCA x (number of scenarios) independent Sobol QRN for the
number of time steps, but given the high dimension requirement, we were not sure that this approach
would be randomly-appropriate. Clearly, that choice is open to further investigation.
HJM Drift Term Calculation
The drift term require the calculation of three terms.
1. First we compute the vol term at the tenor, using the polynomial function.
2. Second, we integrate the vol term to the tenor, also using the polynomial function, combined with
a numerical integration method. We used the trapezoid method, but one may prefer Matlab
standard function: spare a UDF, go faster (possibly), avoid bug risk.
With the first and second step, we perform the sum of the pairwise product, SumProduct, to get the
main term of the drift.
3. Third, we calculate the singular term, approximating it from the previous time step between the
matching tenors.
We then add the main drift term to the singular term. That is the total drift term, for each time step
and tenor. It is worth noting that, since dF(t,Tau) depends on dF(t-dt,Tau) and dF(t-dt,Tau+1), we cannot
compute the drift in one go and later recombine drift and diffusion term to generate the forward rates all
at once. That path dependence between forward rates and diffusion make the design of that particular
software component un-straightforward2. The silver lining is that the deterministic drift term calculation
is a 2D problem (vs 3D for the random term).
HJM Forward Rate Cube
We need to combine together the random term cube with the drift term matrix. Since the previous
time step’s forward rates are required for the computation of the current step’s drift term, we must
2 However, in all fairness, one should admit that at this stage we have given up any hope of a simple project.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
complete the entire forward rate calculations of the previous time step before moving on the calculation of
the drift and the forward rates of the current step. In Matlab, it is quite convenient to replicate the matrix
in a cube like structure where the third dimension pages the number of random states, then just add the
two cube together. The result is then our cube of forward rates, constructed one time step at a time. A 25
year Forward Spot Rate surface across scenarii is shown below:
In the HJM forward rate cube, Columns are forward rates curves, i.e. forward term structure of
interest rates across tenors, then projected in the future time step by time step. Each first column is the
current base scenario, i.e. current TSIR and therefore is identical across every scenario states for all pages.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Rows are random walks of interest rates across time steps, at given tenors. Each first row is the
nearest Tenor, i.e. our forward spot rates3 projected in the future time step by time steps, across every
scenario states for all pages.
Each page is one possible state. From there on, the pricing of a ZCB or a cap is a trivial exercise. (see
Part Two). We store the HJM curve cube for on demand pricing.
3 The topic of dual pricing OIS/Libor is beyond the scope of this project
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Part TWO: Instrument pricing.
ZeroCouponBonds
There are two ways to price ZCB(t,t+τ) off HJM, by taking the expectation across MCS scenarii:
1. Integrate over the forward term structure of interest rates (FTSIR) at t, between 0 and τ:
0( , )
,F t s ds
Z t t e
2. Integrate over the forward random walk (FRW) of spot rates between t and t+τ:
(s,0)ds,
t
tF
Z t t e
We chose to price ZCBs off the Spot Slice of the HJM curve Cube. We use the following numerical
approximation and average present values across MCS:
[ /d ] 1
0
, exp * , *i
Z t t F t t i
We give some examples below of pricing and convergence for a current spot price of ZCBs of six
months, one, five, 10 and 25 years. It is trivial to extend to a future starting point with just another HJM,
and the application asks for “Inception” (the cash required to buy the bond at time t in the future) and
“Maturity” (the $1 cash flow received at time T of the bond maturity). When Inception is zero, we have
the ZCB’s value today.
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
CapsandFloors
To value a Cap (resp. a Floor), assuming a Notional of one, fixing ex-ante and payment ex-post, we
need to:
For each Scenario State k (note: i for Libor Tenor, j for Time Step):
1. Estimate ex ante period the Payoff for each Time Step j, conditional on j’s reference Libor rate L
of the contract Tenor i, and the strike K:
c
+1for a Cap* with ε =
-1for a Floorjk jk
i c iP L K t
2. Present Value that Payoff from the payment, ex-post:
j( ) *jk k jki t ipv P ZCB P
Then we average, across Scenario States, the Present Values of the cumulated Payoffs by Scenarii:
( ) 1
j
( )
; ,L , * *j T
k jki t c ik
j j t
V t T K ZCB L K t
QED
We assume that the reference period for the caplet calculation is a Time Step (δt=0.01), and that we
have available Tenors for Libor (e.g. 1 month, 6 months, 1 years). The rate is fixed ex-ante the period,
any positive Payoff is paid and therefore should be discounted ex-post. The Floor’s payoff is the
opposite-plus of the Cap’s Payoff. The contract gives the reference Libor Tenor and the Cap (resp.
Floor) Strike. As studied previously for the ZCB, we illustrate with pricing today, so we place
ourselves to time zero, the present time with t=04.
4 For t>0, we get the expected cash flows at t, i.e. today’s value would be those cash flows present
valued to today (trivial).
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only
Frederic Siboulet 130916
iEpsilon PROPRIETARY and CONDIFENTIAL ‐ For Utilization by permission only