A continuación se desarrolla el mismo caso anterior pero considerando que el precio y la producción son variables aleatorias.
In [1]:
    
import numpy as np
import numpy.random as rdn
import cashflows as cf
    
In [2]:
    
## se construye una función que recibe la información relevante y retorn el npv
def project(marr,
            costo,
            inversion):
    
    
    precio      = rdn.triangular(  8,  10,  12, 10)
    produccion  = rdn.triangular( 80, 100, 120, 10)
    
    ingre = cf.cashflow(const_value = [0] + (precio*produccion).tolist(), start=2018)  
    opera = cf.cashflow(const_value = [0] + [costo] * 10, start=2018)
    inver = cf.cashflow(const_value = [inversion] + [0] * 10, start=2018)
    
    asset = cf.cashflow(const_value=[inversion] + [0] * 10, start=2018)
    life  = cf.cashflow(const_value=[5] + [0]*10, start=2018)
    
    dep   = cf.depreciation_sl(costs = asset, life=life)['Depr']
    
    antes = ingre - opera - inver - dep
    desp  = cf.after_tax_cashflow(antes, cf.interest_rate([30] * 11, start=2018))
    neto  = antes + dep
    
    npv   = cf.timevalue(cflo=neto, prate=marr)
    
    return npv
    
In [3]:
    
marr = cf.interest_rate([10] * 11, start=2018)
project(marr, 220, 2000)
    
    Out[3]:
In [4]:
    
import matplotlib.pyplot as plt
    
In [5]:
    
result = []
for sim in range(1000):
    result.append(project(marr, 220, 2000))
result[1:10]
    
    Out[5]:
In [6]:
    
plt.hist(result)
plt.show()
    
    
Ejercicio.-- Incluya en la simulación a las variables costo e inversión.