Example #1
0
def notExistFicha(_fondo_id, _clase_id):
    # Consulto cuales fichas ya tengo en la DB para la fecha de hoy

    __id = f"{__now.strftime('%Y%m%d')}_{_fondo_id}_{_clase_id}"

    print(__id)
    rendimientos = MongoDB.getCollection(collection_name='rendimientos')

    return (rendimientos.count_documents({'_id': __id}, limit=1) == 0)
Example #2
0
# *-* coding: utf-8 *-*
''' 
    Calcula los fondos que mas rindieron y los publica en Twitter
'''
from common.postTwitter import PostTwitter
from datetime import date, datetime, timedelta
from common.general import general
from common.connection import MongoDB
from common.graph import graph

db_rendimientos = MongoDB.getCollection(collection_name='rendimientos')

# :::::::::::::::::::::::::
# Parametros de la consulta
__postea = False
__top = 50
__delta = 20
# :::::::::::::::::::::::::


def getFCIBilleteras():
    fecha_hasta = datetime.today() - timedelta(days=1)
    fecha_desde = datetime.today() - timedelta(days=__delta)

    # Clase 1982 Mercado Fondos Clase A
    # Clase 839 SBS Ahorro Clase A
    curs = db_rendimientos.find({
        "clase_id": {
            "$in": ["1982", "839"]
        },
        "fecha": {
Example #3
0
Sólo se ejecuta en el Setup del proyecto.
'''

import requests
from common.connection import MongoDB
from common.general import general

# Comienzo a recolectar la info
url = 'https://api.cafci.org.ar/fondo?estado=1&include=clase_fondo,entidad;gerente&limit=0'
response = requests.get(url)
data = response.json()

if response.status_code != 200:
    print('Failed to get data:', response.status_code)
else:
    mongo_db = MongoDB(collection_name = 'clases')
    data = data['data']

    for item in data:
        clases = item['clase_fondos']
        gerente_nom = item["gerente"]["nombre"]
        gerente = item["gerente"]["nombreCorto"]

        esEsco = general.IsEsco(gerente_nom)
        
        for clase in clases:
            _id = f"{clase['fondoId']}_{clase['id']}"
            posted_id = mongo_db.insert({"_id": _id, "fondo_id": clase["fondoId"], 
            "clase_id": clase["id"], "tickerBloomberg" : clase["tickerBloomberg"],
            "nombre": clase["nombre"], "gerente": gerente, "esESCO": esEsco} )
Example #4
0
Aproximadamente hay 460 fondos diarios

Esta información que recolecta la utiliza para calcular los fondos que más patrimonio poseen en postPatrimonio

'''

import requests
from bson import Decimal128 as Decimal
from datetime import datetime
from common.connection import MongoDB
from common.general import general

counter = 1270332 # 30-12-2020

# Obtengo el último ID hasta el momento en la DB y le sumo 1
collection = MongoDB.getCollection(collection_name = 'patrimonio')

curs = collection.find().limit(1).sort([("_id", -1)])
for item in curs:
  counter = item["_id"]

counter = counter + 1

# Comienzo a recolectar la info
mongo_db = MongoDB(collection_name = 'patrimonio')

while True:
    url = f'https://api.cafci.org.ar/interfaz/semanal/resumen/cartera/{str(counter)}'
    response = requests.get(url)
    data = response.json()
    
Example #5
0
'''
    Calcula los fondos con mas patrimonio y los postea en Twitter
'''
from common.general import general
from common.postTwitter import PostTwitter
from common.connection import MongoDB
from datetime import datetime, timedelta

# :::::::::::::::::::::::::
# Parametros de la consulta
__postea = True
__top = 5
__delta = 1
# :::::::::::::::::::::::::

mongo_db = MongoDB.getCollection(collection_name='patrimonio')

fecha_hasta = datetime.today() - timedelta(days=__delta)
fecha_desde = fecha_hasta.today() - timedelta(days=1 + __delta)
curs = mongo_db.find({
    "data.Moneda": "Peso Argentina",
    "fecha": {
        "$gte": fecha_desde,
        "$lt": fecha_hasta
    }
}).sort([("patrimonio", -1)]).limit(__top)

fecha_publish = datetime.today()

message_post = f'Fondos en pesos con Mayor Patrimonio al {str(fecha_publish.strftime("%d/%m/%Y"))}\n\n'
Example #6
0
import requests
from common.connection import MongoDB
from common.general import general

# Comienzo a recolectar la info
i = 1

url = 'https://api.cafci.org.ar/fondo?estado=1&include=entidad;depositaria,entidad;gerente,tipoRenta,moneda,horizonte,duration,tipo_fondo&limit=0&order=fondo.nombre'
response = requests.get(url)
data = response.json()

if response.status_code != 200:
    print('Failed to get data:', response.status_code)
else:
    mongo_db = MongoDB(collection_name='fondos')
    data = data['data']

    # print(data)

    for item in data:
        gerente_nom = item["gerente"]["nombre"]

        nombre = item["nombre"]
        gerente = item["gerente"]["nombreCorto"]
        plazo = item['diasLiquidacion']
        fechaInicio = item['inicio']
        depositaria = item["depositaria"]["nombre"]
        tipoRenta = item["tipoRenta"]["nombre"]
        horizonte = item["horizonte"]["nombre"]
        tipoFondo = item["tipoFondo"]["nombre"]
Example #7
0
def getFichas():
    print(f'start @ {str(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}')

    # Consulto los fondos para traer la ficha
    db_clases = MongoDB.getCollection(collection_name='clases')

    for item in db_clases.find():
        fondo_id = item["fondo_id"]
        clase_id = item["clase_id"]

        if notExistFicha(fondo_id, clase_id):
            url = f'https://api.cafci.org.ar/fondo/{str(fondo_id)}/clase/{str(clase_id)}/ficha'
            response = requests.get(url)
            data = response.json()

            if response.status_code != 200 or "error" in data:
                print('Failed to get data:', response.status_code)
            else:
                data_converted = data['data']

                vcp = 0
                patrimonio = 0

                # Recolecto info y la acomodo la información a guardar
                if "diaria" in data_converted["info"]:
                    diaria = data_converted["info"]["diaria"]

                    rendimientos = diaria["rendimientos"]
                    fecha_data = diaria["referenceDay"]

                    patrimonio = diaria["actual"]["patrimonio"]
                    if patrimonio != "":
                        patrimonio = Decimal(patrimonio)

                    vcp = diaria["actual"]["vcpUnitario"]
                    if vcp != "":
                        vcp = Decimal(vcp)

                    fecha = datetime.strptime(fecha_data, '%d/%m/%Y')

                    if fecha == __fecha:
                        _id = f"{fecha.strftime('%Y%m%d')}_{fondo_id}_{clase_id}"

                        print(f'{_id} Inserted')

                        moneda = data_converted["model"]["fondo"]["moneda"][
                            "codigoCafci"]

                        tpr = data_converted["model"]["fondo"]["tipoRenta"]
                        tipo_renta = {
                            "id": tpr["id"],
                            "nombre": tpr["nombre"],
                            "codigoCafci": tpr["codigoCafci"]
                        }
                        nombre = data_converted["model"]["fondo"]["nombre"]
                        tickerBloomberg = data_converted["model"][
                            "tickerBloomberg"]
                        gerente = data_converted["model"]["fondo"]["gerente"][
                            "nombreCorto"]
                        gerente_nom = data_converted["model"]["fondo"][
                            "gerente"]["nombre"]
                        horizonte = data_converted["model"]["fondo"][
                            "horizonte"]["nombre"]
                        duration = data_converted["model"]["fondo"][
                            "duration"]["nombre"]

                        esEsco = general.IsEsco(gerente_nom)

                        try:
                            mongo_db_insert = MongoDB(
                                collection_name='rendimientos')
                            posted_id = mongo_db_insert.insert({
                                "_id":
                                _id,
                                "fondo_id":
                                fondo_id,
                                "clase_id":
                                clase_id,
                                "tickerBloomberg":
                                tickerBloomberg,
                                "fecha":
                                fecha,
                                "nombre":
                                nombre,
                                "gerente":
                                gerente,
                                "moneda":
                                moneda,
                                "vcp":
                                vcp,
                                "patrimonio":
                                patrimonio,
                                "tipo_renta":
                                tipo_renta,
                                "horizonte":
                                horizonte,
                                "duration":
                                duration,
                                "rendimientos":
                                rendimientos,
                                "esESCO":
                                esEsco
                            })
                        except Exception as e:
                            print("Error " + _id)

                    response.close()

    print(f'end @ {str(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}')