ferminrp / compara-tasas

Pagina con información financiera de Argentina

Home Page:https://comparatasas.ar

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Migrar fuente de información de fondos y cuentas remuneradas a ArgentinaDatos

ferminrp opened this issue · comments

Ya tenemos el el api de Argentina datos la información necesaria para pintar los fondos y cuentas remuneradas con eso.

El api devuelve el valor de la cuotaparte de todos los fondos money market fecha por fecha. Deberiamos tomar los últimos dos dias hábiles, mirar la variacion, dividirla por la cantidad de dias entre los dos dias hábiles y con eso calcular TNA y TEA (con capitalizacion diaria).

Tener en cuenta que los fondos tienen hasta 24hs para actualizar la información, asi que quizas convenga no el ultimo dia habil sino el anterior.

Si hay feriados el valor de la cuotaparte no se va a actualizar.

Vamos a tener que mapear el nombre del fondo a un nombre mas claro / de fantasía y a su imagen. Incluso en el detalle de cada card el nombre del fondo esta resumido.

Por ejemplo:
Nombre del Fondo: Santander Super Ahorro Pesos - Clase A

En la UI lo mostrariamos como
Santander
Super Ahorro Pesos (A)

Pasos

  1. Obtener la cotizacion de los fondos para el ultimo dia que reportaron.
  2. Obtener la cotizacion de los fondos para el penultimo dia que reportaron.
  3. Mergear la informacion y calcular la cantidad de dias de diferencia entre el ultimo y penultimo dia.
  4. Limpiar la lista de fondos por solo aquellos que queremos mostrar (whitelist)
  5. Calcular la tasa efectiva diaria en base a la variacion del Valor Cuota Parte (VCP)
  6. Traducir la tasa efectiva diaria en TNA y TEA

1. Obtener la cotizacion de los fondos para el ultimo dia que reportaron

Para esto vamos a usar el siguiente endpoint de Argentina Datos

curl -X GET \
 https://api.argentinadatos.com/v1/finanzas/fci/mercadoDinero/ultimo

La documentacion completa del endpoint esta acá

La respuesta es un array en donde cada fondo viene así

  {
    "fondo": "Mercado Fondo - Clase A",
    "horizonte": "corto",
    "fecha": "2024-02-22",
    "vcp": 11565.086,
    "ccp": 85013942033.24,
    "patrimonio": 983193564089.17
  },

2. Obtener la cotizacion de los fondos para el ultimo dia que reportaron

Para esto vamos a usar el siguiente endpoint de Argentina Datos

curl -X GET \
 https://api.argentinadatos.com/v1/finanzas/fci/mercadoDinero/penultimo

La documentacion completa del endpoint esta acá

La respuesta es un array en donde cada fondo viene así

  {
    "fondo": "Mercado Fondo - Clase A",
    "horizonte": "corto",
    "fecha": "2024-02-22",
    "vcp": 11565.086,
    "ccp": 85013942033.24,
    "patrimonio": 983193564089.17
  },

3. Mergear la informacion y calcular la cantidad de dias de diferencia entre el ultimo y penultimo dia

Esto significa que de ambos responses deberiamos consolidar en uno solo en donde tenemos el ultimoValorVcp y el penultimoValorVcp asi como la cantidadDias que es el delta entre ambas fechas. Algo así como:

  {
    "fondo": "Mercado Fondo - Clase A",
    "horizonte": "corto",
    "ultimaFecha": "2024-02-22",
    "ultimoValorvcp": 11565.086,
    "penultimoValorvcp": 11560.086,
    "dias":3,
  },

4. Limpiar la lista de fondos por solo aquellos que queremos mostrar (whitelist)

Ejemplo de whitelist actual

{
  "Personal Pay": {
    "nombreOficial": "Delta Pesos - Clase X",
    "nombreSimplificado": "Delta Pesos (X)",
    "logo": "https://ik.imagekit.io/ferminrp/PersonalPay.jpg?updatedAt=1705751679088",
    "url": "https://www.personalpay.com.ar/"
  },
  "Prex": {
    "nombreOficial": "Allaria Ahorro - Clase A",
    "nombreSimplificado": "Allaria Ahorro (A)",
    "logo": "https://ik.imagekit.io/ferminrp/prex.jpeg?updatedAt=1705751733760",
    "url": "https://www.prexcard.com.ar/"
  },
  "Uala": {
    "nombreOficial": "Ualintec Ahorro Pesos - Clase A",
    "nombreSimplificado": "Ualintec Ahorro Pesos (A)",
    "logo": "https://ik.imagekit.io/ferminrp/uala.jpeg?updatedAt=1705751593746",
    "url": "https://uala.com.ar"
  },
  "Mercado Pago": {
    "nombreOficial": "Mercado Fondo - Clase A",
    "nombreSimplificado": "Mercado Fondo A",
    "logo": "https://ik.imagekit.io/ferminrp/mp.jpeg?updatedAt=1705750753226",
    "url": "https://mercadopago.com.ar/"
  },
  "Cocos": {
    "nombreOficial": "Cocos Ahorro - Clase A",
    "nombreSimplificado": "Cocos Ahorro A",
    "logo": "https://ik.imagekit.io/ferminrp/cocos.jpeg?updatedAt=1705788191899",
    "url": "https://cocos.capital/"
  },
  "IEB": {
    "nombreOficial": "IEB Ahorro - Clase A",
    "nombreSimplificado": "IEB Ahorro (A)",
    "logo": "https://ik.imagekit.io/ferminrp/ieb.jpeg?updatedAt=1705789266724",
    "url": "https://www.grupoieb.com.ar/iebmas/"
  },
  "Santander": {
    "nombreOficial": "Super Ahorro $ - Clase A",
    "nombreSimplificado": "Super Ahorro (A)",
    "logo": "https://ik.imagekit.io/ferminrp/santander.png?updatedAt=1705840513218",
    "url": "https://www.santander.com.ar/"
  },
  "Galicia": {
    "nombreOficial": "Fima Premium - Clase A",
    "nombreSimplificado": "Fima Premium (A)",
    "logo": "https://ik.imagekit.io/ferminrp/galicia.jpeg?updatedAt=1705840853900",
    "url": "https://www.galicia.ar/personas"
  },
  "Balanz": {
    "nombreOficial": "Balanz Capital Money Market - Clase A",
    "nombreSimplificado": "Balanz Capital MM (A)",
    "logo": "https://ik.imagekit.io/ferminrp/balanz.jpeg?updatedAt=1705789663773",
    "url": "https://balanz.com"
  },
  "Claro Pay": {
    "nombreOficial": "SBS Ahorro Pesos - Clase A",
    "nombreSimplificado": "SBS Ahorro (A)",
    "logo": "https://ik.imagekit.io/ferminrp/Clarop.png?updatedAt=1706271125722",
    "url": "https://claropay.com.ar/landing"
  },
  "n1u": {
    "nombreOficial": "Delta Pesos - Clase A",
    "nombreSimplificado": "Delta Pesos (A)",
    "logo": "https://ik.imagekit.io/ferminrp/n1u.jpeg?updatedAt=1706028849006",
    "url": "https://linktr.ee/n1u.app"
  },
  "ICBC": {
    "nombreOficial": "Alpha Pesos - Clase A",
    "nombreSimplificado": "Alpha Pesos (A)",
    "logo": "https://ik.imagekit.io/ferminrp/icbc.jpeg?updatedAt=1706451184543",
    "url": "https://www.icbc.com.ar/personas"
  },
  "BBVA": {
    "nombreOficial": "FBA Renta Pesos - Clase A",
    "nombreSimplificado": "FBA Renta Pesos (A)",
    "logo": "https://ik.imagekit.io/ferminrp/BBVA%20logo.png?updatedAt=1706709935806",
    "url": "https://www.bbva.com.ar/"
  },
  "Supervielle": {
    "nombreOficial": "Premier Renta CP en Pesos - Clase A",
    "nombreSimplificado": "Premier Renta CP (A)",
    "logo": "https://ik.imagekit.io/ferminrp/Superv.jpg?updatedAt=1706968842493",
    "url": "https://www.supervielle.com.ar/personas"
  },
  "Banza": {
    "nombreOficial": "Adcap Ahorro Pesos Fondo de Dinero - Clase A",
    "nombreSimplificado": "Adcap Ahorro Pesos (A)",
    "logo": "https://ik.imagekit.io/ferminrp/banza.jpeg?updatedAt=1707312127346",
    "url": "https://www.banza.com.ar/"
  }
}

5. Calcular la tasa efectiva diaria en base a la variacion del Valor Cuota Parte (VCP)

Para calcular la tasa efectiva diaria (TED) de un fondo de capitalización diaria, se tiene que utilizar esta fórmula:

ted = [(VCPfinal / VCPinicial) ^ (1 / dias)] - 1

image
image

6. Traducir la tasa efectiva diaria en TNA y TEA

TNA = TED x 365
TEA = [(1 + TED)^365] - 1