Migrar fuente de información de fondos y cuentas remuneradas a ArgentinaDatos
ferminrp opened this issue · 1 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
- Obtener la cotizacion de los fondos para el ultimo dia que reportaron.
- Obtener la cotizacion de los fondos para el penultimo dia que reportaron.
- Mergear la informacion y calcular la cantidad de dias de diferencia entre el ultimo y penultimo dia.
- Limpiar la lista de fondos por solo aquellos que queremos mostrar (whitelist)
- Calcular la tasa efectiva diaria en base a la variacion del Valor Cuota Parte (VCP)
- 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
6. Traducir la tasa efectiva diaria en TNA y TEA
TNA = TED x 365
TEA = [(1 + TED)^365] - 1