P2P lending Bondora – regression

P2p lending na Bondoře zažívá značný boom (během 1 měsíce se skrze primární trh podepíše větší objem úvěrů než téměř za celý minulý rok). Současně však investoři čelí změnám v uživatelském rozhraní, resp. možnostech Portfolio managera, který řídí automatické investice. Ten nově nabízí jen filtrování podle tzv. Bondora rating, tedy skupin od A, B, C, D, E, F a HR pro nejrizikovější úvěry. Dříve efektivní možnosti filtrování zmizely, především chybí možnost filtrovat dle zemí a ukazatelů solventnosti (vzdělání, vlastnictví nemovitosti, apod.). Investoři logicky cítí, že jejich možnosti dosáhnout co nejvyšších výnosů (20+%) jsou nyní ohroženy. Nemožnost rozlišit problémové úvěry nevyhnutelně povede k vyšším mírám bankrotů v jednotlivých portfoliích a tedy i nižším celkovým ziskům z úroků.

Někteří uživatelé dávají najevo svou nelibost tím, že přestávají investovat anebo bojkotují Portfolio manager a investují výhradně ručně. Z objemu schválených úvěrů, ale vyplývá, že Bondora nemá nejmenší důvod něco měnit.

auto-vs-manual-2013-2015

Zrychlilo se tempo růstu objemu upsaných úvěrů. Je to znát nárůstu křivky grafu za poslední měsíc (tj. od zrušení starých PM). Stouplo sice i tempo růstu manuálního biddování, ale nárůst tempa růstu automatických investic přes “hloupého” Portfolio manažera je řádově vyšší. Z toho je jasné, že majoritě uživatelů tento tupý PM bohužel stačí. To povede k rozdělení rizka na více uživatelů, ale i “zprůměrování” výnosů napříč celou platformou, resp. mezi jejími investory. Pro ty, co byli zvyklí nastavit chytře PM a profitovat tím ze svého knowhow to znamená snížení výnosů.

Bondora tedy nemá důvod nic měnit a tak se budeme muset naučit spolehnout se sami na sebe. Někdo má svou intuci, ale je dobré ji exaktně prověřit nejlépe skrze ML.

Inspirován jinými články na téma použití statistiky v p2p lendingu, zejména lucasem a kafkou399, jsem si chtěl zkusit přidat nějakou statistickou analýzu do toolboxu a otestovat efektivitu machine learningu na analýzu defaultu bondů na primárním trhu.

Kvůli jednoduchosti jsem zvolil základní lineární regresi a pokusil se namátkou zkusit pár parametrů z bondora data setu, který dává k dispozici každý den. Nejprve je nutné odebrat příliš čerstvé úvěry (60DayFromFirstPayment = 1), čímž zbude cca 13.000 řádek, tj. záznamů unikátních úvěrů. Následně je potřeba vybrat relevantní sloupce. Ty by měly být v ideálním případě na sobě navzájem nezávislé.

Age; Gender; credit_score; CreditGroup; IssuedInterest; LoanDuration; nr_of_dependants; income_from_principal_employer; income_total;

Jako špatný úvěr jsem si definoval ten s položkou AD (Actual Default), která nabývá hodnot 0 a 1. Tohle mi chybělo na kafkově práci, kde bral jako špatné úvěry jen fraudy (tj. úvěry kde neproběhla žádná splátka, žadatel prostě utekl s penězi).

Po rozdělení vzorku dat náhodně na dvě skupiny je jedna použita pro learning parametrů a druhá pro verifikaci. Lineární regrese a fitting parametrů pomocí Gradient descentu je při několika málo parametrech otázkou vteřin.

weight_0 = 0.41035;
weight_age               =  -0.00274;
weight_creditscore       =  -0.00027;
weight_IssuedInterest    =  0.00599;
weight_nr_of_dependants  = -0.01638;
weight_NoOfPreviousApplications = 0.00270;
weight_NoOfPreviousLoans     = -0.00116;

Z výše uvedeného vyplývá, že vyšší věk žadatele, vyšší počet dětí žadatele, snižuje možnost bankrotu. Naopak vyšší úroková míra riziko bankrotu zvyšuje. Počet předchozích žádostí o úvěr mírně zvyšuje riziko, naopak počet předchozích realizovaných úvěrů koreluje s nižším rizikem. Zatím celkem logické.

carlos@griffin:~/bondora/simple_regression_php$ php guess.php
Loading file ../bondora.data.random.part2.txt
Threshold: 0.17
Data read.
6940 loans (1511 bad = 21.77%)
False Positive error (Type I): 4096
False Negative error (Type II): 218
Err rate 7.665%
Best 500 loans interest: 28.800%
Best 500 Net interest: 21.135%

Při verifikaci/predikci je spektrum bondů zvolených k nákupu je posunuto pomocí thresholdu tak, aby se minimalizoval Error Type II. Je nutné se totiž vyhnout bondům, které u kterých byl predikován bezproblémový klient i když se jednalo o neplatiče. Error Type I neřešíte, dokud nemáte málo příležitostí k investicím a my chceme jen slíznout smetanu, tj. vrchních 5-15%.

Využití lineární regrese znamená na out-of-sample datech snížení míry bankrotu z 21,77% na 7,665%, tj. téměř trojnásobné snížení… Stále by bylo do čeho investovat, jelikož vybráno jako vhodná investice bylo 2844 bondů z toho 218 toxických (False Negative). Z těchto bondů by se dalo namixovat nejlepších 500 bondů (podle úrokové sazby) což by sice nevyhnutelně vedlo ke zvýšení míry bankrotů, ale dovolilo by to vytvořit portfolio pětiset úvěrů s průměrným úrokem 28,8% (brutto, bez odečtení odepsaných úvěrů).

Jsou to jen modely, které vychází z minulých dat, je tedy možné že nemusí nutně korelovat s aktuálními žádostmi o úvěry na tržišti. Především zda se něco zásadního nezměnilo v datech nebo ve struktuře žádostí o úvěr oproti minulosti. Zbývá tedy otázka jak to bude fungovat na reálném trhu.

Lineární regrese dává základní přehled, ale není ideální. Lepší by byla logistic regression, která dává predikce v intervalu <0,1>, tedy přímo pravděpodobnosti bankrotu konkrétního dluhopisu (to je užitečné pro další risk scoring modely, tak jak je využívají např. banky). Na netu najdete články o využití rozhodovacích stromů, např. pomocí algoritmu Random Forest. Dle mého ideální pro modelování investic do p2p bondů je komplexní Cox Hazard Model [2], používaný v medicíně, odhadující které parametry ovlivňují Survival rate. V našem případě tedy předpokládanou dobu, kdy bude bond splácet dle kalendáře. Současně by bylo vhodné rozšířit model o XIRR (extended internal rate of return) nebo NPV (net present value), tedy vzít v úvahu současnou hodnotu investice. To je ale na další zkoumání…

Pokus tedy na out-of-sample datech prokázal, že lze pomocí vhodně zvolených featur a lineární regrese snížit míru bankrotu u potenciálních investic v p2p půjčkách. U nákupu dluhopisů je ale důležité zvážit jak míru rizika tak i potenciální čistý výnos (marži po započtení všech nákladů na poplatky anebo markup na sekundárním trhu) diskontovaný k okamžiku nákupu.