催收成本在单体经济中的分析
? ? ? ?在信貸業務中,一個產品是否盈利取決于收益和成本。收益來源于產品的利率以及罰金,成本則包括獲客、壞賬、催收、人力等。這篇文章主要是講催收成本在單體經濟中的占比分析,這也是領導經常關心的問題,畢竟做業務賺不賺錢才是最重要的。關于催收成本及單體經濟的分析,這塊網上幾乎沒有資料,因此本人結合工作中的一點思考及實踐發表一點想法,方法并不一定正確,望大家多多指正。
?
目錄
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元,可以等數據有表現之后根據逾期表現進行預估。下面介紹一下預估的方法:
列出當前所以客戶的還款歷史、當前期數,根據還款歷史計算其發生M1逾期、M2逾期的次數。
計算出每一種還款歷史的個數以及占比。
將還款歷史的占比與還款歷史對應的催收成本相乘并累加,即得到期望催收成本。
為了便于理解,列出下表會更為直觀易懂:
? ? ? ?實際情況中還款歷史的類型會有很多種,上表中未全部列出,大致思路是如上。這樣計算出來一個期望催收成本,可以理解為當前時點在每一個人身上花費的催收成本。除此之外,還需要計算一下當前的期望賬齡,方法同上,比如一個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個數進行累加,反映的是整個生命周期內該包資產的催收成本,可以借此預估資產包的損益情況。此外,還可以考慮收取的罰金,即每包資產對應的催收成本減去每包資產對應的罰金,步驟大致如下:
通過mob統計每包資產每一期的M1個數、M2個數。
通過還款計劃表統計每包資產每一期的罰金收取情況。
將每個資產包的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 ?
>【原創公眾號】:風控獵人 ?
>【簡介】:某創業公司策略分析師,積極上進,努力提升。乾坤未定,你我都是黑馬。 ?
>【轉載說明】:轉載請說明出處,謝謝合作!~
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的催收成本在单体经济中的分析的全部內容,希望文章能夠幫你解決所遇到的問題。