Esempio n. 1
0
def calcula_rentabilidad_diaria(date):

    date_anterior = utiles.get_fecha_habil_anterior(date)

    #Saco la info del día de ayer de AUM, Pactos y carteras ya que a la hora que corre este scrip no se tienen los datos spot
    df_funds_currency = utiles.get_funds_currency()
    df_aum = utiles.get_funds_aum(date_anterior)
    df_leverage = utiles.get_leverage(date_anterior)
    df_carteras_fondos = utiles.get_carteras_fondos(date_anterior)

    df_info_fondos = df_funds_currency.join(df_aum, how='inner').join(
        df_leverage, how='left').fillna(0)
    df_info_fondos[
        'Patrimonio'] = df_info_fondos['AUM'] - df_info_fondos['monto_pactado']
    df_info_fondos['Ratio_Leverage'] = df_info_fondos['AUM'] / df_info_fondos[
        'Patrimonio']
    # Saco la info de risk
    df_risk_spot, int_data_available_spot = compute_df_risk(date)
    df_risk_anterior, int_data_availabe_anterior = compute_df_risk(
        date_anterior)
    df_risk_anterior = df_risk_anterior[['precio', 'tasa', 'duration']]

    df_risk = df_risk_spot.join(df_risk_anterior,
                                how='inner',
                                lsuffix='_spot',
                                rsuffix='_anterior')

    #Guardo todos los instrumentos que no entran en el cálculo
    df_rezagados = get_instrumentos_no_considerados(df_carteras_fondos,
                                                    df_risk)

    df_rentorno_ins = df_carteras_fondos.join(df_risk, how='inner')
    df_rentorno_ins.index.name = 'codigo_ins'
    df_rentorno_ins.reset_index(inplace=True)
    df_rentorno_ins.set_index('codigo_fdo', inplace=True)

    df_rentorno_ins = df_rentorno_ins.join(df_info_fondos, how='left')
    df_rentorno_ins.reset_index(inplace=True)
    df_rentorno_ins.set_index('codigo_ins', inplace=True)

    df_monedas = utiles.get_currencys(date)

    df_rentorno_ins = calcula_rentabilidad_instrumentos(
        date, df_rentorno_ins, df_monedas)
    df_forwards = calcula_rentabilidad_forwards(date, df_monedas,
                                                df_info_fondos)

    df_retorno_fondos = calcula_retorno_total_fondo(df_info_fondos,
                                                    df_rentorno_ins,
                                                    df_forwards)

    return df_retorno_fondos, df_rentorno_ins, df_forwards, df_rezagados, df_info_fondos, df_monedas, int_data_available_spot
Esempio n. 2
0
def get_tpm_and_icp(date):

	date_ayer = utiles.get_fecha_habil_anterior(date)
	date_ante_ayer = utiles.get_fecha_habil_anterior(date_ayer)

	query_tpm = "Select Fecha, valor from Indices_Dinamica where Index_Id=459 and Fecha>='DATE_1' and Fecha<='DATE_2'"
	query_tpm = query_tpm.replace('DATE_1',str(date_ante_ayer)).replace('DATE_2', str(date_ayer))
	
	df_tpm = fs.get_frame_sql_user(server="puyehue",
                               database="MesaInversiones",
                               username="******",
                               password="******",
                               query=query_tpm)

	query_icp = "Select valor from Indices_Dinamica where Index_Id=4 and Fecha='DATE'"
	query_icp = query_icp.replace('DATE', str(date))
	print(query_icp)
	icp = fs.get_val_sql_user(server="puyehue",
                               database="MesaInversiones",
                               username="******",
                               password="******",
                               query=query_icp)

	return df_tpm, icp
Esempio n. 3
0
def calcula_rentabilidad_instrumentos(date, df_rentorno_ins, df_monedas):

    date_anterior = utiles.get_fecha_habil_anterior(date)
    delta_dias_valorizacion = (date - date_anterior).days

    df_rentorno_ins = join_cartera_monedas(df_rentorno_ins, df_monedas)
    df_rentorno_ins = utiles.get_devengo_tasa(df_rentorno_ins)

    #El weight verdadero de la cartera es corregido por leverage
    df_rentorno_ins['weight_adj'] = df_rentorno_ins[
        'weight'] * df_rentorno_ins['Ratio_Leverage']
    df_rentorno_ins['dur_mod'] = df_rentorno_ins['duration_anterior'] / (
        1 + df_rentorno_ins['tasa_anterior'] / 100)
    df_rentorno_ins['r_aprox'] = -df_rentorno_ins['dur_mod'] * (
        df_rentorno_ins['tasa_spot'] - df_rentorno_ins['tasa_anterior']) / 100
    df_rentorno_ins['r_1D'] = df_rentorno_ins['precio_spot'] / df_rentorno_ins[
        'precio_anterior'] - 1

    #condiciones para que la rentabilidad no cague cuando haya pago de cupones.
    conditions = [(df_rentorno_ins["tipo_SVC"] == 'Nacional') &
                  (df_rentorno_ins['r_1D'] < -0.01),
                  (df_rentorno_ins["tipo_SVC"] == 'Nacional') &
                  (df_rentorno_ins['r_1D'] >= -0.01) &
                  (df_rentorno_ins["Moneda"].isin(['$', 'UF'])),
                  (df_rentorno_ins["tipo_SVC"] == 'Nacional') &
                  (df_rentorno_ins['r_1D'] >= -0.01) &
                  (df_rentorno_ins["Moneda"].isin(['$', 'UF']) == False),
                  (df_rentorno_ins["tipo_SVC"] == 'Internacional')]

    retorno = [
        df_rentorno_ins["r_aprox"] + df_rentorno_ins["devengo"] +
        df_rentorno_ins['r_moneda'],
        df_rentorno_ins["r_1D"] - (delta_dias_valorizacion - 1) *
        (df_rentorno_ins["devengo"] + df_rentorno_ins['r_moneda']),
        df_rentorno_ins["r_1D"] - (delta_dias_valorizacion - 1) *
        (df_rentorno_ins["devengo"]),
        df_rentorno_ins["r_1D"] + df_rentorno_ins['r_moneda']
    ]

    df_rentorno_ins['r_ins'] = np.select(conditions,
                                         retorno,
                                         default=df_rentorno_ins['r_1D'])
    df_rentorno_ins[
        'CTR_Ins'] = df_rentorno_ins['weight_adj'] * df_rentorno_ins['r_ins']

    return df_rentorno_ins
Esempio n. 4
0
def get_currency_type(date, df_risk):

    date_anterior = utiles.get_fecha_habil_anterior(date)
    path = ".\\querys\\mapping_cinta.sql"
    query = fs.read_file(path=path).replace("AUTODATE", str(date_anterior))
    cinta_ra = fs.get_frame_sql_user(server="Puyehue",
                                    database="MesaInversiones",
                                    username="******",
                                    password="******",
                                    query=query)

    cinta_ra.set_index(["Codigo_Ins"], inplace=True)

    df_mapped = df_risk.merge(cinta_ra, how='left', left_index=True, right_index=True)

    
    return df_mapped
Esempio n. 5
0
def write_excel(df_risk_internacional):

    wb = fs.open_workbook("data_riskamerica_internacional.xlsx", True, True)
    fs.clear_sheet_xl(wb, "data")
    fs.paste_val_xl(wb, "data", 1, 1, df_risk_internacional)






fechas_hab=utiles.get_fechas_habiles()
fechas_hab['Fecha'] = fechas_hab['Fecha'].apply(lambda x: datetime.datetime.strftime(x, '%Y-%m-%d'))

date_spot = datetime.date.today()

print(str(date_spot))
date_anterior = utiles.get_fecha_habil_anterior(date_spot)
df_risk_internacional_spot= download_international_data(date_spot)
df_risk_internacional_anterior= download_international_data(date_anterior)
df_risk_internacional = get_full_international_df(date_spot, df_risk_internacional_spot, df_risk_internacional_anterior)
upload_DB(df_risk_internacional)