Lending Club - 利用邏輯回歸預測在網貸平臺上的投資收益

背景:

Lending Club是美國最大的P2P網貸交易平臺,利用網絡技術直接連接了個人投資者和個人借貸者,縮短資金流通的細節,繞過傳統的大銀行等金融機構,使得投資者和借貸者都能得到更多實惠。對于投資者來說,可以獲得更好的回報;對于借貸者來說,則可以獲得相對較低的貸款利率。于此,我們就用一個簡單的例子去理解如何利用邏輯回歸預測在P2P網貸的投資回報。

預測目的:

在借貸行業中,投資者向借貸者提供貸款以獲取利息。如果借貸者順利償還貸款,投資者則獲得利息收益。如果借貸者無法償還貸款,投資者則損失貸款本金。因此,對于投資者來說,需要預測借貸者無法償還貸款的風險,最大程度地避免投資損失,最大程度地實現投資回報。

數據來源:

我們將使用Lending Club網站的公開數據,數據集為自2007年5月起至2010年2月LendingClub平臺發放的9578條3年期貸款。

因變量"not.fully.paid"表示不完全支付,要預測這個因變量,如下自變量可供投資者選擇是否投資此項貸款:
Credit Policy:客戶是否滿足Lending Club的授信標準,1為是,0為否;
Purpose:貸款的目的;(例:信用卡還款,債務處理,教育,購買大件,中小企業經營等等);
int.rate:貸款利率;較高的貸款利率意味著較高的風險;
installement:每月分期的金額;
log.annual.inc:借貸者的年收入的自然對數;
dti:借貸者的債務收入比;
fico:借貸者的FICO信用評分;
days.with.cr.line:借貸者有信用額度的天數;
revol.bal:借貸者的賬戶余額(尚未結清的金額);
revol.util:借貸者的信用賬戶利用率(使用的金額/授信的金額);
inq.last.6mths:借貸者在過去6個月被借款者咨詢的次數;
delinq.2yrs:借貸者在過去2年逾期還款超過30天的次數;
pub.rec:借貸者公共事業記錄差評的次數;

第一步: PREPARING THE DATASET

重要處理數據的語法-填充缺少的觀察值 imputation

源數據共有13個自變量,每1個變量都有出現缺少觀察值的情況,所以我們要對源數據進行處理,填充缺少的觀察值;通過如下代碼可以有所觀察:

missing = subset(loans, is.na(log.annual.inc) | is.na(days.with.cr.line) | is.na(revol.util) | is.na(inq.last.6mths) | is.na(delinq.2yrs) | is.na(pub.rec))

填充缺少的觀察值:

library(mice)
set.seed(144)
vars.for.imputation = setdiff(names(loans), "not.fully.paid")
imputed = complete(mice(loans[vars.for.imputation]))
loans[vars.for.imputation] = imputed

第二步: PREDICTION MODEL

采用邏輯回歸算法建立模型:

set.seed(144)
library(caTools)
split = sample.split(loans$not.fully.paid, SplitRatio = 0.7)
train = subset(loans, split == TRUE)
test = subset(loans, split == FALSE)
LoansLog = glm(not.fully.paid ~.,data=train,family=binomial)
summary(LoansLog)
predicted.risk=predict(LoansLog,type="response",newdata=test)
test$predicted.risk=predicted.risk
table(test$not.fully.paid, predicted.risk > 0.5)
library(ROCR)
ROCRpred = prediction(predicted.risk, test$not.fully.paid)
as.numeric(performance(ROCRpred, "auc")@y.values)

觀測在邏輯回歸模型下:
邏輯回歸模型正確率:0.8364
Baseline模型正確率:0.8399
模型AUC:0.672
綜上所述,可以觀測在對所有變量進行邏輯回歸的過程中,模型本身對預測的表現并不理想;

第三步: A SMART BASELINE

Lending Club會根據對貸款風險的預測來分配貸款利率,接下來我們進一步研究int.rate變量對模型預測的影響; 建立bivariate模型,

bivariate = glm(not.fully.paid~int.rate, data=train, family="binomial")
summary(bivariate)

與全變量的邏輯回歸模型相比,int.rate變量的重要性發生了顯著的變化;
接下來,進行變量相關性觀察:

cor(train$int.rate, train$fico)

觀測結果顯示變量int.rate和變量fico存在相關性,全變量模型存在multicollinearity多重共線性;貸款利率和借貸者的信用積分存在相關性;

針對測試集運用bivariate模型:

pred.bivariate = predict(bivariate, newdata=test, type="response")
summary(pred.bivariate)
table(test$not.fully.paid, pred.bivariate > 0.5)

測試結果顯示,測試集中最大可能的貸款違約率約為0.4266。

ROCRpred = prediction(pred.bivariate, test$not.fully.paid)
as.numeric(performance(ROCRpred, "auc")@y.values)

模型AUC:0.624

第四步: COMPUTING THE PROFITABILITY OF AN INVESTMENT

test$profit = exp(test$int.rate*3) - 1
test$profit[test$not.fully.paid == 1] = -1
test[which.max(test$profit),]

第五步:A SIMPLE INVESTMENT STRATEGY

在此處介紹一個簡單的投資思想:投資者選擇投資網貸P2P的時候,會在風險和收益之前尋求平衡; 所以我們的目標即是投資收益較高但風險較低的貸款;

highInterest=subset(test, "int.rate" >= 0.15 )

分出int.rate在15%以上的貸款,

mean(highInterest$profit)
table(highInterest$int.rate>=0.15,highInterest$not.fully.paid)

這部分int.rate較高的貸款平均收益大概在0.23,這部分int.rate較高的貸款違約率大概在0.25;
現在我們在這些highInterest的貸款中選擇風險最低的100只貸款;

cutoff = sort(highInterest$predicted.risk, decreasing=FALSE)[100]
selectedLoans = subset(highInterest, predicted.risk <= cutoff)
sum(selectedLoans$profit)
table(selectedLoans$not.fully.paid)
0.23 0.31
0.25 0.19

通過建立投資模型,發現在違約率僅僅提高了一點(0.19)的情況下,網貸的投資收益回報有了顯著地提高;

需要提醒的是:模型預測的時間相對較短;在實際的投資中,投資者還需要考慮econcomic shock等外部環境因素。

源數據:
https://courses.edx.org/asset-v1:MITx+15.071x_2a+2T2015+type@asset+block/loans.csv
擴展閱讀:
《來認識一下即將上市的全球最大P2P網貸公司Lending Club》,虎嗅網
http://www.huxiu.com/article/41472/1.html
《解析網貸龍頭Lending Club的盈利模式》
http://news.loan.cngold.org/c/2014-12-18/c2944728.html
書籍推薦:
《超越金融》,作者:喬治索羅斯
http://book.douban.com/subject/4244859/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,825評論 18 139
  • Swift 開發中的一些小的技巧 剛開始的時候, 特別好奇大廠是怎么搞的, 他們的項目長什么樣子, 他們用哪些庫....
    CepheusSun閱讀 535評論 4 7
  • The bird-song is the echo of the morning light back from ...
    我是嗚嗚閱讀 709評論 0 1
  • 晚飯后,跑步打籃球,兒子有一周左右的時間沒去堅持。感賞兒子今天有出去了,盡管出來很晚,但出去總比沒出好。 因開學以...
    玫瑰鏗鏘閱讀 179評論 0 0
  • 早就知道墨西哥是仙人掌的故鄉,后來查了資料發現仙人掌總共有2000多個品種,而墨西哥就有一半以上,因此墨西哥也享有...
    AMIGO616閱讀 1,171評論 3 6