def hlf_amc(dic_data, input_dic, period='half_no'): aua = combined.total_aua(dic_data, input_dic) aua_margins = general.fillna_monthly( input_dic['aua margin']).reindex(index=general.month_end_series) return (aua['discretionary_aua'] * (aua_margins['hlf_amc'] / 12)).groupby( ['financial_year', period]).sum(min_count=1) #.map(general.compound_growth_rate))
def summary_avg_aua_dist(data_dic, input_dic, period='financial_year'): if (period == 'financial_year') or (period == 'calendar_year'): df = combined.total_aua(data_dic, input_dic).groupby(period).mean() elif period=='month_no': df = combined.total_aua(data_dic, input_dic).groupby(['calendar_year',period]).mean() else: df = combined.total_aua(data_dic, input_dic).groupby(['financial_year',period]).mean() avg_aua_funds = df['Funds'] avg_aua_shares = df['Shares'] avg_aua_hlf_amc = df['HLF'] avg_aua_cash = df['Cash'] avg_aua_cash_service = df['cash_service_aua'] avg_aua_cash_service.name = 'Cash Service' if general.last_result_month == 6: temp = general.recent_end_year + 1 else: temp = general.recent_end_year result = pandas.concat([avg_aua_funds,avg_aua_shares,avg_aua_hlf_amc,avg_aua_cash,avg_aua_cash_service],axis='columns') return result.loc[temp:,:]
def pms_advice_fee(dic_data, input_dic, period='half_no'): aua = combined.total_aua(dic_data, input_dic) aua_margins = general.fillna_monthly(input_dic['aua margin']).reindex(index=general.month_end_series) net_revenue = (aua['pms_aua'] * (aua_margins['pms_advice']/12)) if period=='month_no': result = net_revenue elif (period=='financial_year' or period=='calendar_year'): result = net_revenue.groupby(period).sum() else: result = net_revenue.groupby(['financial_year',period]).sum() return result#.map(general.compound_growth_rate))
def cash_interest(dic_data, input_dic, period='half_no'): aua = combined.total_aua(dic_data, input_dic) annual_libor_revenue = aua['vantage_cash_aua']*general.account_cash_dist['sipp']*0.8*(general.annual_libor_mean(dic_data)/12)#.map(general.compound_growth_rate) overnight_libor = dic_data['Index price'].loc[:, 'Overnight LIBOR'].fillna(method='ffill').reindex(index=general.month_end_series).fillna(method='ffill') overnight_libor_revenue = aua['vantage_cash_aua']*(general.account_cash_dist['sipp'] * 0.2 + (1 - general.account_cash_dist['sipp']))*(overnight_libor/12)#.map(general.compound_growth_rate) gross_revenue = (annual_libor_revenue + overnight_libor_revenue) net_revenue = gross_revenue - aua['vantage_cash_aua'] * general.account_cash_dist['sipp'] * (0.0005/12) # effective from Nov-2017 if period=='month_no': result = net_revenue elif (period=='financial_year' or period=='calendar_year'): result = net_revenue.groupby(period).sum() else: result = net_revenue.groupby(['financial_year',period]).sum() return result
def aua_analysis(dic_data, input_dic): df = combined.total_aua( dic_data, input_dic).reset_index().set_index('month_end').reindex( index=general.semi_annual_series) df.index.name = 'month_end' df = df.reset_index().set_index( ['month_end', 'financial_year', 'quarter_no', 'half_no']) result = pandas.DataFrame(index=df.index, columns=aua_cols) result.loc[:, 'Cash Service AUA'] = df['cash_service_aua'] result.loc[:, 'Vantage AUA'] = df['vantage_aua'] result.loc[:, 'PMS AUA'] = df['pms_aua'] result.loc[:, 'HLMM Funds AUA'] = df['discretionary_aua'] result.loc[:, 'Total AUA'] = result.loc[:, 'Vantage AUA'] + result.loc[:, 'PMS AUA'] + result.loc[:, 'Cash Service AUA'] return result.groupby(['financial_year', 'quarter_no', 'half_no']).sum(min_count=1)
def cash_interest(dic_data, input_dic, period='half_no'): aua = combined.total_aua(dic_data, input_dic) sipp_rebate = (input_dic['cash interest rebate'].fillna( method='ffill').reindex( index=general.month_end_series))['sipp_cash_interest_rebt'] others_rebate = (input_dic['cash interest rebate'].fillna( method='ffill').reindex( index=general.month_end_series))['others_cash_interest_rebt'] one_month_libor = general.annual_libor_mean(dic_data, '1_month LIBOR') three_month_libor = general.annual_libor_mean(dic_data, '3_month LIBOR') annual_libor_revenue = aua['vantage_cash_aua'] * general.account_cash_dist[ 'sipp'] * 0.8 * (general.annual_libor_mean(dic_data, 'Annual LIBOR') / 12) #.map(general.compound_growth_rate) three_month_libor_revenue = aua['vantage_cash_aua'] * ( 1 - general.account_cash_dist['sipp']) * 0.6 * (three_month_libor / 12) one_month_libor_revenue = aua['vantage_cash_aua'] * ( 1 - general.account_cash_dist['sipp']) * 0.2 * (one_month_libor / 12) overnight_libor = dic_data['Index price'].loc[:, 'Overnight LIBOR'].fillna( method='ffill').reindex(index=general.month_end_series).fillna( method='ffill') overnight_libor_revenue = aua['vantage_cash_aua'] * ( general.account_cash_dist['sipp'] * 0.2 + ((1 - general.account_cash_dist['sipp'])) * 0.2) * ( overnight_libor / 12) #.map(general.compound_growth_rate) gross_revenue = (annual_libor_revenue + overnight_libor_revenue + three_month_libor_revenue + one_month_libor_revenue) net_revenue = gross_revenue - aua[ 'vantage_cash_aua'] * general.account_cash_dist['sipp'] * ( sipp_rebate / 12) - aua['vantage_cash_aua'] * ( 1 - general.account_cash_dist['sipp']) * (others_rebate / 12) if period == 'month_no': result = net_revenue elif (period == 'financial_year' or period == 'calendar_year'): result = net_revenue.groupby(period).sum(min_count=1) else: result = net_revenue.groupby(['financial_year', period]).sum(min_count=1) return result
def hlf_revenue_margin(data_dic, input_dic): df1 = revenue.hlf_amc_daily(data_dic, input_dic, period='month_no') df2 = combined.total_aua(data_dic, input_dic)['discretionary_aua'].groupby( ['calendar_year', 'month_no']).sum() return df1 / df2.reindex(df1.index)