예제 #1
0
def test6():
    """
    Verifica correcta renovación por operación overnight
    """
    capital = 10
    caja = sb.Caja()

    credito = sb.Operacion(.0, 0, 12, 100, {'id': '1', 'ap': 'activo'})
    print 'cred flujo venc: ', credito.flujo()

    deposito = sb.Operacion(.00, 0, 1, 100, {'id': '1', 'ap': 'pasivo'})
    print 'dep flujo venc: ', deposito.flujo()

    banco = sb.Banco(caja, [credito, deposito], capital)
    print 'saldo inicial: ', banco.saldo()
    print 'caja inicial: ', banco._caja._movimientos
    pp = pprint.PrettyPrinter(indent=4, depth=6)
    gap = met.construye_gap_liquidez(banco)
    pp.pprint(gap())
    print 'c46: ', met.c46(banco)
    print 'caja: ', banco.saldo()
    for i in range(0, 1):
        banco.avanza()
        gap = met.construye_gap_liquidez(banco)
        pp.pprint(gap())
        print 'c46: ', met.c46(banco)
        print 'caja: ', banco.saldo()
        rn.overnight(banco)
        gap = met.construye_gap_liquidez(banco)
        pp.pprint(gap())
        print 'c46: ', met.c46(banco)
        print 'caja: ', banco.saldo()
    return
def cumple_c46(banco, plazos):
    c46 = met.c46(banco)
    t0 = banco.tiempo_actual()
    if c46 > 0:
        plazo_inversion = 1
        op = sb.Operacion(mercado['inversion'], banco.tiempo_actual(),
                          plazo_inversion, c46, {
                              'id': str(t0) + '-inv',
                              'ap': 'activo',
                              'producto': 'inversion'
                          })
        banco.cursa_operacion(op)
        for plazo in plazos:
            porcentaje = plazos[plazo] / 100.0
            atrib = {
                'id': str(t0) + '-fin_inv',
                'ap': 'pasivo',
                'producto': 'depo'
            }
            if plazo == 2:
                new_depo = sb.Operacion(mercado['depo2'], t0, plazo,
                                        porcentaje * op.monto(), atrib)
            elif plazo == 3:
                new_depo = sb.Operacion(mercado['depo3'], t0, plazo,
                                        porcentaje * op.flujo(), atrib)
            else:
                new_depo = sb.Operacion(mercado['depo4'], t0, plazo,
                                        porcentaje * op.monto(), atrib)
            banco.cursa_operacion(new_depo)
    return
 def renovar_producto():
     ops = banco.operaciones()
     t0 = banco.tiempo_actual()
     productos = [
         op for op in ops if op.vencimiento() == banco.tiempo_actual()
         and op.atributos()['producto'] == producto
     ]
     for prod in productos:
         for plazo in plazos:
             porcentaje = plazos[plazo] / 100.0
             atrib = {
                 'id': 'r' + prod.atributos()['id'],
                 'ap': prod.atributos()['ap'],
                 'producto': producto
             }
             if plazo == 2:
                 new_prod = sb.Operacion(mercado[t0]['depo2'], t0, plazo,
                                         porcentaje * prod.flujo(), atrib)
             elif plazo == 3:
                 new_prod = sb.Operacion(mercado[t0]['depo3'], t0, plazo,
                                         porcentaje * prod.flujo(), atrib)
             else:
                 new_prod = sb.Operacion(mercado[t0]['depo4'], t0, plazo,
                                         porcentaje * prod.flujo(), atrib)
             banco.cursa_operacion(new_prod)
예제 #4
0
def overnight(banco):
    caja = banco.saldo()
    t0 = banco.tiempo_actual()
    glosa = 'ov-' + str(t0) + '-1'
    if caja == 0:
        return
    elif caja > 0:
        op = sb.Operacion(mercado['on_col'], t0, 1, caja, {'id':glosa, 'ap':'activo', 'producto':'on-a'})
        banco.cursa_operacion(op)
    else:
        op = sb.Operacion(mercado['on_cap'], t0, 1, -caja, {'id':glosa, 'ap':'pasivo', 'producto':'on-p'})
        banco.cursa_operacion(op)
    return
예제 #5
0
def renueva_depos(banco, plazos):
    ops = banco.operaciones()
    t0 = banco.tiempo_actual()
    depos = [op for op in ops if op.vencimiento() == banco.tiempo_actual() and
                                 op.atributos()['ap'] == 'pasivo']
    for depo in depos:
        for plazo in plazos:
            porcentaje = plazos[plazo] / 100.0
            atrib = {'id':'r' + depo.atributos()['id'], 'ap':'pasivo', 'producto':'depo'}
            if plazo == 2:
                new_depo = sb.Operacion(mercado['depo2'], t0, plazo, porcentaje * depo.flujo(), atrib)
            elif plazo == 3:
                new_depo = sb.Operacion(mercado['depo3'], t0, plazo, porcentaje * depo.flujo(), atrib)
            else:
                new_depo = sb.Operacion(mercado['depo4'], t0, plazo, porcentaje * depo.flujo(), atrib)                
            banco.cursa_operacion(new_depo)
    return
예제 #6
0
def test3():
    operacion = sb.Operacion(.12, 0, 24, 100, {'id': '1', 'ap': 'activo'})
    print "flujo credito normal: ", operacion.flujo()
    print "flujo credito con signo: ", operacion.flujo(True)

    operacion.atributos()['ap'] = 'pasivo'
    print "flujo pasivo normal: ", operacion.flujo()
    print "flujo paivo  con signo: ", operacion.flujo(True)
예제 #7
0
def inversion(banco):
    caja = banco.saldo()
    t0 = banco.tiempo_actual()
    glosa = 'inv-' + str(t0) + '-1'
    if caja <= 0:
        raise ValueError("No hay caja para tomar inversiones.")
    else:
        op = sb.Operacion(mercado['inversion'], t0, 1, caja, {'id':glosa, 'ap':'activo', 'producto':'inversion'})
        banco.cursa_operacion(op)
    return
예제 #8
0
def test2():
    caja = sb.Caja()

    credito = sb.Operacion(.12, 0, 24, 100, {'id': '1', 'ap': 'activo'})
    print 'cred flujo venc: ', credito.flujo()

    deposito = sb.Operacion(.06, 0, 6, 100, {'id': '1', 'ap': 'pasivo'})
    print 'dep flujo venc: ', deposito.flujo()

    banco = sb.Banco(caja, [credito, deposito])
    print 'saldo inicial: ', banco.saldo()
    print 'caja inicial: ', banco._caja._movimientos

    for i in range(0, 6):
        banco.avanza()
    print 'saldo final: ', banco.saldo()
    print 'caja final: ', banco._caja._movimientos

    return
예제 #9
0
def test8():
    """
    Verifica renovación con depo plazo y arreglo C46.
    """
    plazos = {6: 1.0}
    capital = 10
    caja = sb.Caja()

    credito = sb.Operacion(.0, 0, 12, 100, {'id': '1', 'ap': 'activo'})
    print 'cred flujo venc: ', credito.flujo()

    deposito = sb.Operacion(.00, 0, 1, 100, {'id': '1', 'ap': 'pasivo'})
    print 'dep flujo venc: ', deposito.flujo()

    banco = sb.Banco(caja, [credito, deposito], capital)
    print 'saldo inicial: ', banco.saldo()
    print 'caja inicial: ', banco._caja._movimientos
    pp = pprint.PrettyPrinter(indent=4, depth=6)
    gap = met.construye_gap_liquidez(banco)
    pp.pprint(gap())
    print 'c46: ', met.c46(banco)
    print 'caja: ', banco.saldo()
    for i in range(0, 12):
        banco.avanza()

        gap = met.construye_gap_liquidez(banco)
        print 'gap1'
        pp.pprint(gap())
        print 'c46: ', met.c46(banco)
        print 'caja: ', banco.saldo()

        rn.renueva_depos(banco, plazos)
        rn.overnight(banco)
        rn.cumple_c46(banco, plazos)

        gap = met.construye_gap_liquidez(banco)
        print 'gap2'
        pp.pprint(gap())
        print 'c46: ', met.c46(banco)
        print 'caja: ', banco.saldo()

    return
예제 #10
0
 def caja_a_producto():
     caja = banco.saldo()
     t0 = banco.tiempo_actual()
     glosa = str(t0) + '-act_caja_con_' + producto
     if caja <= 0:
         raise ValueError("No hay caja para activar en " + producto + ".")
     else:
         op = sb.Operacion(mercado[t0][producto], t0, plazo, caja, {
             'id': glosa,
             'ap': 'activo',
             'producto': producto
         })
         banco.cursa_operacion(op)
     return
예제 #11
0
 def caja_con_producto():
     caja = banco.saldo()
     t0 = banco.tiempo_actual()
     glosa = str(t0) + '-fin_caja_con_' + producto
     if caja >= 0:
         raise ValueError("La caja es positiva")
     else:
         op = sb.Operacion(mercado[t0][producto], t0, plazo, -caja, {
             'id': glosa,
             'ap': 'pasivo',
             'producto': producto
         })
         banco.cursa_operacion(op)
     return
예제 #12
0
def test5():
    caja = sb.Caja()

    credito_1 = sb.Operacion(.12, 0, 6, 100, {'id': '1', 'ap': 'activo'})
    credito_2 = sb.Operacion(.12, 0, 6, 100, {'id': '2', 'ap': 'activo'})
    credito_3 = sb.Operacion(.12, 0, 6, 100, {'id': '3', 'ap': 'activo'})

    deposito_1 = sb.Operacion(.0, 0, 1, 100, {'id': '4', 'ap': 'pasivo'})
    deposito_2 = sb.Operacion(.0, 0, 2, 100, {'id': '5', 'ap': 'pasivo'})
    deposito_3 = sb.Operacion(.0, 0, 3, 100, {'id': '6', 'ap': 'pasivo'})

    ops = [credito_1, credito_2, credito_3, deposito_1, deposito_2, deposito_3]
    banco = sb.Banco(caja, ops, 150)

    print met.c46(banco)
예제 #13
0
def test4():
    caja = sb.Caja()

    credito_1 = sb.Operacion(.12, 0, 1, 100, {'id': '1', 'ap': 'activo'})
    credito_2 = sb.Operacion(.12, 0, 2, 100, {'id': '2', 'ap': 'activo'})
    credito_3 = sb.Operacion(.12, 0, 3, 100, {'id': '3', 'ap': 'activo'})

    deposito_1 = sb.Operacion(.06, 0, 1, 100, {'id': '4', 'ap': 'pasivo'})
    deposito_2 = sb.Operacion(.06, 0, 2, 100, {'id': '5', 'ap': 'pasivo'})
    deposito_3 = sb.Operacion(.06, 0, 3, 100, {'id': '6', 'ap': 'pasivo'})

    ops = [credito_1, credito_2, credito_3, deposito_1, deposito_2, deposito_3]
    banco = sb.Banco(caja, ops)

    gap = met.construye_gap_liquidez(banco)
    print gap(0)
    print gap(1, False), gap(1)
    print gap(2, False), gap(2)
    print gap(3, False), gap(3)
    print gap(4, False), gap(4)