催收成本在单体经济中的分析

在信贷业务中,一个产品是否盈利取决于收益和成本。收益来源于产品的利率以及罚金,成本则包括获客、坏账、催收、人力等。这篇文章主要是讲催收成本在单体经济中的占比分析,这也是领导经常关心的问题,毕竟做业务赚不赚钱才是最重要的。关于催收成本及单体经济的分析,这块网上几乎没有资料,因此本人结合工作中的一点思考及实践发表一点想法,方法并不一定正确,望大家多多指正。


目录

1.催收计价方式

2.催收成本在单体经济中占比

3.各资产包催收成本分析

4.催收成本的影响因素

5.总结


一、催收计价方式

催收计价方式有坐席制、费率制、计件制三种,各有其优缺点,但通过换算最后的成本应该是一样的。这点在之前的文章中【贷后运营管理】有提及过。因此本文接下来的催收成本计算方式都按计件制来预估,如果非此种方式结佣,可将催收成本换算成计件制单价后再进行预估。

假设本文产品为件均1000元12期的小额分期,催收按M1单价20元,M2单价50元,后端案件由于回收率较低常按费率制计算,占催收成本的比值较小,因此粗略估算的话可不考虑,预估完M1-M2的催收成本后再适当进行放大即可。


二、催收成本在单体经济中的占比

在业务开始初期,设计信贷产品时需要做盈利测算(P&L测算)。比如该产品毛收益在10%,其中去掉获客1%、坏账3%、催收1%,净收益在5%。这里催收的1%其实和坏账的3%是强相关的,坏账越高相应的催收成本也就越高,所以一般都是预估一下产品的坏账,然后直接估一下相应的催收成本。一款额度为1000元的产品,按上述测算,一个客户盈利100元,期望催收成本10元,可以等数据有表现之后根据逾期表现进行预估。下面介绍一下预估的方法:

1.列出当前所以客户的还款历史、当前期数,根据还款历史计算其发生M1逾期、M2逾期的次数。

2.计算出每一种还款历史的个数以及占比。

3.将还款历史的占比与还款历史对应的催收成本相乘并累加,即得到期望催收成本。

为了便于理解,列出下表会更为直观易懂:

催收成本在单体经济中的分析

实际情况中还款历史的类型会有很多种,上表中未全部列出,大致思路是如上。这样计算出来一个期望催收成本,可以理解为当前时点在每一个人身上花费的催收成本。除此之外,还需要计算一下当前的期望账龄,方法同上,比如一个12期的产品当前情况下的期望账龄是6.4,期望催收成本是3.2元,则其12期之后的期望成本是3.2/6.4*12=6元。再考虑到上面只计算的是M1-M2的催收成本,然后可根据每月催收成本中M3+以上的成本占比进行折算,比如M3+以上成本占20%,则期望催收成本应为6*(1+20%)=7.2元。

下面是上面实现过程的代码:

conn=pymysql.connect(host='',user='',password='',db='')

df=pd.read_sql('select app_id,

repayment_history,length(repayment_history)as mob,length(repayment_history)-length(replace(repayment_history,1,"")) as M1,

length(repayment_history)-length(replace(repayment_history,2,"")) as M2

from XX ',conn)


df['个数']=df.groupby(['repayment_history'])['app_id'].transform('count')

df['占比']=df['个数']/df.shape[0]

df['催收成本']=df['M1']*20+df['M2']*50

df['期望催收成本']=df['催收成本']*df['占比']


df_unique=df[['repayment_history','个数','占比','催收成本','期望催收成本']].drop_duplicates()

print(sum(df_unique['期望损失']))


三、各资产包催收成本分析

其实这和Vintage有点类似,只不过Vintage是反应每个资产包每一期的资产情况,而各资产包的催收成本则是将每个资产包的M1、M2个数进行累加,反映的是整个生命周期内该包资产的催收成本,可以借此预估资产包的损益情况。此外,还可以考虑收取的罚金,即每包资产对应的催收成本减去每包资产对应的罚金,步骤大致如下:

1.通过mob统计每包资产每一期的M1个数、M2个数。

2.通过还款计划表统计每包资产每一期的罚金收取情况。

3.将每个资产包的M1个数、M2个数、每期罚金进行累加计算,得到催收成本。

第一步的sql代码如下,将得到的文件输出为excel“催收成本”:

select a.*,b.cnt,b.principalsum from (

select date_format(open_date,'%Y-%m') as open_month,mob,

sum(case when 当期状态=1 then 1 else null end ) as 'm1',

sum(case when 当期状态=2 then 1 else null end ) as 'm2'

from mob表

group by date_format(open_date,'%Y-%m'),mob)a

inner join

(select date_format(open_date,'%Y-%m') as open_month,count(distinct app_id)as cnt,sum(principal) as principalsum

from 放款件表

group bydate_format(open_date,'%Y-%m'))b

on a.open_month=b.open_month

第二步的sql代码如下,将得到的文件输出为excel“罚金”:

select date_format(app_create_time,'%Y-%m') as open_month,period,sum(pay_punitive) from `还款计划表` a

group by date_format(app_create_time,'%Y-%m'),period

为了便于理解,选取某个月的资产包以及计算结果如下:

催收成本在单体经济中的分析

将催收成本占比绘制成图,就得到类似Vintage的一条曲线,但是这条曲线不会走平。如果M1的个数随着账期深入维持在相对稳定得水平,那么催收成本的vintage则会呈线性上升的趋势。

催收成本在单体经济中的分析


四、催收成本的影响因素

影响催收成本的因素有很多,大致列举如下:

1.客群风险。

前端风控坏账水平和催收成本指标是强相关的。风控做得好,进件质量好,逾期水平自然就低,相应的催收成本就低。这是影响催收成本最重要的因素。

2.贷后策略

由于一些件均较小的产品自然回收率较高且产品对催收成本较敏感,因此对部分客群进行延缓催收的策略,目的也是为了降低催收成本,这一块在之前的文章【贷后策略】中提到过。

3.催收管理

催收管理运营是一个比较复杂的过程,需要催收系统、语音系统、短信系统等联动起来,在良好的系统的支撑下最大化催收员的效率,达到降本增效的结果。

前端风控的好坏会直接影响到每月产生的逾期个数,因此不会影响上面催收成本的计算。

贷后缓催策略(主要是针对M1),意味着mob表中产生的逾期并不会全部入催,因此需要对逾期个数进行折算。这个问题最准确的处理办法是对mob表中每个订单每一期的状态打上标签—是否命中缓催策略且缓催期内是否回收。如果无法做到准确打标的话,则相对简单的方法是对单价打折,比如对20%的客户实施缓催策略,缓催期内回收率为50%,则催收成本变为原来的90%(1-20%*50%),即从20元变成18元。

催收管理的影响也可以变换到对单价的影响上,比如在没有语音系统的情况下,催收员一个月最多打300个M1案子,在有语音系统的情况下可以打600个M1的案子,因此折算成单价就会从20元变成10元。

下面以一个例子,考虑上述影响因素,简单介绍催收成本的计算方式:

催收成本在单体经济中的分析

上图中考虑了两种因素。一是4月份上线缓催策略,预估降低10%的催收成本;二是9月份调整单价,降为原来的一半。因此需要对各资产包在4月份以及9月份之后的资产表现采用新的单价进行计算,如上表中就会有3种单价。反映在催收成本的Vintage曲线上如下:

催收成本在单体经济中的分析

上述计算方式的实现过程代码如下,输入文件为第三部分中导出两个excel文件:

def pro_detail(df):

df.replace(np.nan,0,inplace=True)

#根据mob、放款月计算出表现月时间

df['表现月']=df.apply(lambda x:pd.to_datetime(x['放款月'])+relativedelta(months=x['mob']),axis=1)

df.sort_values(['产品线','放款月','mob'],inplace=True)

#累加求和

df['sum_m1']=df.groupby(['产品线','放款月'])['M1'].transform('cumsum')

df['sum_m2']=df.groupby(['产品线','放款月'])['M2'].transform('cumsum')

return df


def pro_punitive(df):

df.replace(np.nan,0,inplace=True)

df.sort_values(['产品线','放款月','mob'],inplace=True)

df['sum_punitive']=df.groupby(['产品线','放款月'])['罚金'].transform('cumsum')

return df


def merge(df1,df2):

df=pd.merge(df1,df2,on=['产品线','放款月','mob'])

df.loc[df['表现月']<'2020-03','催收成本']=(df['sum_m1']*20+df['sum_m2']*50)

for index,row in df.iterrows():

if row['表现月'].strftime('%Y-%m-%d')>='2020-03-01' and row['mob']>=2:#如果mob为1会直接使用上个月的资产包的结果再进行累加

df.ix[index,'催收成本']=df.ix[index-1,'催收成本']+row['M1']*18+row['M2']*45

if row['表现月'].strftime('%Y-%m-%d')>='2020-09-01':

df.ix[index,'催收成本']=(df.ix[index-1,'催收成本']+(row['M1']*9+row['M2']*22.5)


df['催收成本占比_剔除罚金']=(df['催收成本']-df['sum_punitive'])/df['放款本金']

df['催收成本占比_未剔除罚金']=(df['催收成本'])/df['放款本金']

return df


def main():

# 读取催收成本文件并进行累加计算

df_detail=pd.read_excel('催收成本.xlsx')

df1=pro_detail(df_detail)

#读取罚金文件并进行累加计算

df_punitive=pd.read_excel('罚金.xlsx')

df2=pro_punitive(df_punitive)

#将累加之后的催收成本和罚金进行合并并计算催收成本

df_last=merge(df1,df2)

#将结果输出成excel

df_last.to_excel('催收成本占比分析.xlsx')


if __name__=='__main__':

main()


五、总结

催收成本的分析更多地是财务方面计算的事情,上述计算方式从资产包的角度对催收成本进行分析,这是比较客观且正确的方式。但是上述计算方式中仍存在诸多不足,比如只考虑了M1和M2的成本、需要换算成计件制等,因此只是一个大致的预估,可以以此对业务有更准确的把控,实现对资产的精细化运营。

>【作者】:Labryant

>【原创公众号】:风控猎人

>【简介】:某创业公司策略分析师,积极上进,努力提升。乾坤未定,你我都是黑马。

>【转载说明】:转载请说明出处,谢谢合作!~

展开阅读全文

页面更新:2024-04-30

标签:成本   罚金   单价   产品线   个数   收益   因素   策略   资产   代码   方式   文件   经济   历史   系统   产品   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top