The Discrete Stochastic Gain-Loss in Production Facilities as a Result of an Exogenous Financial Shock¶

Gianmarco Corradini, MS¶

Modules¶


import pandas as pd
import numpy as np
import math as m
import matplotlib as mp
import scipy as sp

2 Assumption¶

Defining $f_{1}$¶

def f_1(r):
    f_1=(m.exp(-10*r)+10*r-1)/r**2
    return f_1

Defining $\frac{f_{2}}{\gamma}$¶

def f_2_frac_gamma(r):
    f_2_frac_gamma=(1-m.exp(-10*r)*(10*r+1))/r**2
    return f_2_frac_gamma

Defining $\frac{f_{3}}{\delta}$¶

def f_3_frac_delta(r):
    f_3_frac_delta=(1-m.exp(-10*r))/r
    return f_3_frac_delta

3 Exogenous Shock in a Discrete Stochastic Enviroment¶

Suppose $r_{t=0}=0.025$¶

r0=0.025
gamma = f_1(r0)/f_2_frac_gamma(r0)
delta = f_1(r0)/f_3_frac_delta(r0)

Check¶

print(gamma, delta)

Than $f_{2}$ and $f_{3}$¶

def f_2(r):
    f_2= gamma * (1-m.exp(-10*r)*(10*r+1))/r**2
    return f_2
def f_3(r):
    f_3=delta*(1-m.exp(-10*r))/r
    return f_3

Check¶

print(f_1(r0), f_2(r0), f_3(r0))

All possible value of $r_{t+\epsilon}$¶

rd=0.9
ru=1.25
r= [r0*ru*ru, r0*ru, r0*ru*rd, r0*ru, r0, r0*rd, r0*rd*ru, r0*rd, r0*rd*rd]
print(r)

Value of $f_{i}(r_{t+\epsilon})$¶

for i in r:
    print(f_1(i))
for i in r:
    print(f_2(i))
for i in r:
    print(f_3(i))

Define probability mass function of $r_{t+\epsilon}$¶

p=0.5
q=0.5
pr = [p*p, p*(1-p-q), p*q, (1-p-q)*p, (1-p-q)**2, (1-p-q)*q, q*p, q*(1-p-q), q**2]

Expected value of $f_{1}$ in function on probabilities $\{p, q\}$¶

def Exp_f1(x,y):
    z = x**2*f_1(r[0])+(1-x-y)*x*f_1(r[1])+x*y*f_1(r[2])+(1-x-y)*x*f_1(r[3])+(1-x-y)**2*f_1(r[4])*(1-x-y)*y*f_1(r[5])+y*x*f_1(r[6])+y*(1-x-y)*f_1(r[7])+y**2*f_1(r[8])
    return z
Y1=$f_{1}$ and $\{j, k\}$ = $\{p, q\}$¶
Y1 = []
j=0.01
while j < 0.66:
    k=0.66-j
    Y1.append(Exp_f1(j,k))
    j+=0.01
print(Y1)

Expected value of $f_{2}$ in function on probabilities $\{p, q\}$¶

def Exp_f2(x,y):
    zz = x**2*f_2(r[0])+(1-x-y)*x*f_2(r[1])+x*y*f_2(r[2])+(1-x-y)*x*f_2(r[3])+(1-x-y)**2*f_2(r[4])*(1-x-y)*y*f_2(r[5])+y*x*f_2(r[6])+y*(1-x-y)*f_2(r[7])+y**2*f_2(r[8])
    return zz
Y2=$f_{1}$ and $\{j, k\}$ = $\{p, q\}$¶
Y2 = []
j=0.01
while j < 0.66:
    k=0.66-j
    Y2.append(Exp_f2(j,k))
    j+=0.01
print(Y2)

Expected value of $f_{3}$ in function on probabilities $\{p, q\}$¶

def Exp_f3(x, y):
    zzz = x**2*f_3(r[0])+(1-x-y)*x*f_3(r[1])+x*y*f_3(r[2])+(1-x-y)*x*f_3(r[3])+(1-x-y)**2*f_3(r[4])*(1-x-y)*y*f_3(r[5])+y*x*f_3(r[6])+y*(1-x-y)*f_3(r[7])+y**2*f_3(r[8])
    return zzz
Y3=$f_{1}$ and $\{j, k\}$ = $\{p, q\}$¶
Y3 = []
j=0.01
while j < 0.66:
    k=0.66-j
    Y3.append(Exp_f3(j,k))
    j+=0.01
print(Y3)
Extra: semplification of $f_{1}$ as in the equation (24)¶
def Exp_f1_2(u,v):
    z=u**2*(f_1(r[0])-2*f_1(r[1])+f_1(r[4]))+u*(2*f_1(r[1])-2*f_1(r[4]))+u*v*(2*f_1(r[2])-2*f_1(r[1])+2*f_1(r[4])-2*f_1(r[5]))+v*(2*f_1(r[5])-2*(f_1(r[4])))+v**2*(f_1(r[4])-2*f_1(r[5])+f_1(r[8]))+f_1(r[4])
    return z