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)
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
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
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)
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
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
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
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
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
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)
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)