# financial-functions
Implementación de funciones financieras. 

_________________

# **cronograma**
## **Summary**
Utility functions to calculate payment schedules

#### Types
- payment_item

#### Functions
- flexible(amount, nper, i_rate, commission\_rate)
- fija(amount, nper, i_rate, commission\_rate)
- puente(amount, nper, i_rate, commission\_rate)

## **Types**
```js
payment: { i: Number, amortization: Number, fee: Number }
```
Where:
- `i`: interes en soles
- `amortization`: amortizacion en soles
- `fee`: cuota total en soles, suma de interes y amortizacion. Por conveniencia para sacar el flujo directamente

## **Functions**
All cronograma functions are implementations of the same interface that calculates the payment schedule. `total_amount`: es `amount` + el total de la comision a pagar

* flexible(amount, nper, i\_rate, commission\_rate)
  ```js
  flexible(Number, Number, Number, Number) :: { payments: [payment], total_amount: Number }
  ```
* fija(amount, nper, i\_rate, commission\_rate)
  ```js
  fija(Number, Number, Number, Number) :: { payments: [payment], total_amount: Number }
  ```
* puente(amount, nper, i\_rate, commission\_rate)
  ```js
  puente(Number, Number, Number, Number) :: { payments: [payment], total_amount: Number }
  ```

_________________
# tasa

## **Summary**

#### Types

#### Functions
- tir(flow)
- tcea(tir)
- main(flow)

## **Types**

## **Functions**
* tir(flow)
  Obtener la Tasa Interna de Retorno (TIR) a partir de un flujo, usualmente el primer elemento es el monto desembolsado `total_amount` y los siguientes son `payment.fee`
  ```js
  async tir([Number]) :: Number | null
	```
* tcea(tir)
  ```js
  tcea(Number) :: Number
  ```
* main(flow)
  ```js
  async main([Number]) :: { tir: Number | null, tcea: Number | null, tcem: Number | null }
  ```
