Beispiel #1
0
def run_one_valuation_intrinsic(Te, fwd_array, cons):
    """
    Calculate intrinsic storage with simple constraints

    Parameters
    ----------
    Te  :       maturities

    fwd_array:

    cons :  Constraints
        (max_inv, min_inv, start_inv, end_inv, inj_cost, rel_cost, rmin, rmax)

    Returns
    -------

    """

    max_inv = cons.max_inv
    min_inv = cons.min_inv
    start_inv = cons.start_inv
    end_inv = cons.end_inv
    inj_cost = cons.inj_cost
    rel_cost = cons.rel_cost
    rmin = cons.rmin
    rmax = cons.rmax

    fc = FlowConstraint(rmin, rmax)
    flow_constraints = FlowConstraints(Te[0], fc)

    inv_constraints = InventoryConstraints(Te, start_inv, end_inv, max_inv,
                                           min_inv, [flow_constraints])
    state_object = StateObject(inv_constraints)

    product = LeastSquaresMonteCarloEngine(
        state_object,
        StorageCashflows(Te, injection_cost=inj_cost,
                         withdrawal_cost=rel_cost))

    res = product.calc_intrinsic(fwd_array)
    TP = product.calc_trigger_price(res)
    return res, TP
def run_one_valuation_intrinsic(Te, fwd_array, cons):
    """
    Calculate intrinsic storage with simple constraints

    Parameters
    ----------
    Te  :       maturities

    fwd_array:

    cons :  Constraints
        (max_inv, min_inv, start_inv, end_inv, inj_cost, rel_cost, rmin, rmax)

    Returns
    -------

    """

    max_inv = cons.max_inv
    min_inv = cons.min_inv
    start_inv = cons.start_inv
    end_inv = cons.end_inv
    inj_cost = cons.inj_cost
    rel_cost = cons.rel_cost
    rmin = cons.rmin
    rmax = cons.rmax

    fc = FlowConstraint(rmin, rmax)
    flow_constraints = FlowConstraints(Te[0], fc)

    inv_constraints = InventoryConstraints(Te, start_inv, end_inv, max_inv, min_inv, [flow_constraints])
    state_object = StateObject(inv_constraints)

    product = LeastSquaresMonteCarloEngine(
        state_object, StorageCashflows(Te, injection_cost=inj_cost, withdrawal_cost=rel_cost)
    )

    res = product.calc_intrinsic(fwd_array)
    TP = product.calc_trigger_price(res)
    return res, TP