Petra Fassnerová & Marie Müllerová, PROGRAM NA VYTVOŘENÍ KREDITNÍHO SCORE




Autoři: Petra Fassnerová, Marie Müllerová
Mentoři: Jaroslav Činčera, Petr Barták

NĚCO MÁLO O NÁS

Do šestého běhu Digitální akademie jsme nastoupily s vizí seznámit se s Pythonem a programováním. Vytvořily jsme dvojici a začaly vymýšlet téma našeho projektu. Protože máme obě ekonomické vzdělání, mířily jsme spíše tímto směrem. S mentory jsme se domluvily na výsledném zadání projektu. Rozhodly jsme se vytvořit program, který po zadání osobních a finančních údajů vypočítá orientační úvěryschopnost (bonitu) klienta a zároveň poskytne doporučení, zda je vzhledem ke klientově míře zadluženosti vhodné žádat o první/další úvěr. A jak jsme na toto téma přišly?
Češi se ke spotřebitelským úvěrům staví spíše skepticky a prohlašují, že se nechtějí zbytečně zadlužovat. Data ale tvrdí něco jiného. Se spotřebitelským úvěrem má zkušenost cca dvě třetiny českých domácností, přičemž jedna třetina čerpá úvěry opakovaně [1].




Na konci roku 2017 bylo v České republice evidováno cca 863 tis. osob s exekucí. Ke dni 2.6.2018 je v insolvenčním rejstříku zapsáno 255 345 fyzických a právnických osob, u kterých probíhá insolvenční řízení [2] [3].


Výhoda čerpání úvěru spočívá v tom, že odpadá zdlouhavé šetření na financovaný předmět, protože platba se rozdělí do více nižších splátek. Nevýhodou je splacení vyšší částky o úrok, případně poplatky. Někdy věřitel také požaduje ručitele, nebo ručení majetkem.
Pokud dlužník čerpá úvěr s rozmyslem, tedy úvěrově financuje nezbytnosti nebo investuje do vlastního bydlení, má pak žádost o úvěr své opodstatnění. Pokud ale zadluženost dojde tak daleko, že dlužník svoji neschopnost splácet řeší dalším úvěrem, nebo si půjčuje od nebankovních společností, které ne vždy reportují do nebankovního registru klientských informací, může se ocitnout v začarovaném kruhu.
Tyto skutečnosti nás dovedly k rozhodnutí vytvořit v Pythonu program, který může být pomocníkem při rozhodování před podáním žádosti o úvěr. Hlavní přidaná hodnota mezi běžnou žádostí o úvěr, kdy se klient hned dozví rozhodnutí banky, a naším předběžným výpočtem bankovního score a zadluženosti, spočívá v tom, že na rozdíl od bank nereportujeme tato data do bankovního a nebankovního registru klientských informací. Každá žádost o úvěr, která je schválená, zamítnutá, ale i stornovaná, je pravidelnou dávkou reportována bankami do registrů. V případě opakovaně zamítnutých žádostí může tato skutečnost klientovi při další žádosti uškodit. Během schvalovacího procesu se banky doptávají do registrů a kontrolují např. úvěrovou historii, zpoždění se splátkami, úvěrovou angažovanost a aktuální rozpracované žádosti o úvěr. Sledují také předešlé zamítnuté žádosti. Pokud v jednom měsíci jiná banka už jednou nebo vícekrát odmítla dát klientovi úvěr, je předvídatelné, jak se rozhodne banka další.
Nedostatkem našeho programu, který bohužel nedokážeme ošetřit, jsou právě informace z bankovního a nebankovního registru. Při vyplňování osobních a finančních údajů do formuláře kalkulujeme s tím, že klient zadává pravdivé informace a počítáme jen s aktuálním stavem. Na rozdíl od bank nedokážeme do score zahrnout historicky zesplatněné úvěry, historické i aktuální pozdní splátky a nepočítáme ani s úvěrovými rámci kreditních karet, kontokorentů a revolvingových úvěrů.
Dále nemáme k dispozici transakční a behaviorální data klienta, která má k dispozici banka, u níž má klient účet s pravidelným příjmem. Jsme tedy na stejné lodi s nebankovními společnostmi a bankami, u níž žádající klient nemá svůj hlavní účet.

WEBOVÝ FORMULÁŘ V HTML

Pro získání dat jsme vytvořily jednoduchý HTML formulář, kam klient vyplňuje své údaje. Při vytváření celé logiky jsme si stanovily, jaké informace od klienta chceme získat. Ty jsme si roztřídily do dvou kategorií, podle nichž je formulář rozdělený na „Osobní informace“ a „Finanční údaje“.

Pro vyplnění osobních údajů jsme využili textových a číselných polí, kam klient vyplní své jméno, příjmení, rodné číslo, datum narození a datum nástupu do zaměstnání/zahájení podnikání .
Pro zadání informací o rodinném stavu, bydlení, vzdělání a druhu hlavního příjmu jsme využili rozevírací seznam, ze kterého klient vybírá nadefinované hodnoty. Tím jsme zamezili získání chybových hodnot.


V sekci “Finanční údaje” klient do číselných polí vyplňuje svůj příjem, měsíční náklady a pokud má, měsíční splátky svých úvěrů. Podnikatelé vyplňují roční základ daně, který pak pomocí funkce přepočítáme na měsíční příjem a zdaníme, abychom získaly čistý měsíční příjem (s touto částkou pak dále počítáme v další funkci). Klienti s ostatními příjmy vyplňují čistý měsíční příjem.
Abychom opět předešly získání chybových dat (např. abychom měsíční příjem ze zaměstnání nepřepočítávaly a nedanily jako roční základ daně kvůli chybně vyplněnému formuláři), nastavily jsme formulář tak, aby klientovi neumožnil vyplnit obě pole, nebo jiné pole, než má. Jinými slovy, pokud je klient podnikatel, nemůže vyplnit čistý měsíční příjem. A naopak, pokud je klientův zdroj příjmu jiný než podnikatel nebo svobodná povolání, nemůže vyplnit pole roční základ daně (s vedlejšími příjmy nekalkulujeme). Tuto funkci jsme nastavili na začátku HTML formuláře pomocí JavaScriptu.


Po stisknutí tlačítka „Odeslat“ se data odešlou na server, který v našem případě běží lokálně.

FORMA A VZHLED HTML FORMULÁŘE V PROHLÍŽEČI



NAČTENÍ A PŘEVEDENÍ DAT

Data z webového formuláře jsou načtena na server a převedena do proměnných hodnot definovaných v programu. Tyto proměnné pak vstupují do algoritmu výpočtu scoringu.
Pomocí příkazu „from http.server import BaseHTTPRequestHandler, HTTPServer“ jsme importovaly knihovnu HTTP server a knihovnu Socket a Loggig. Funkce BeseHTTPREquestHandler spouští server. Funkce do_GET zajišťuje odeslání formuláře do prohlížeče a funkce do_POST následně zpracovává data z formuláře. Celý algoritmus je pak rozdělen do několika částí v rámci jedné třídy.


Data z formuláře se načítala v následujícím formátu:
‘jmeno=hodnota&prijmeni=hodnota&rc=hodnota…’
Proto bylo třeba si je rozdělit nejprve podle znaku „&“ a následně podle znaménka „=“. Proměnné jsme si uložily do slovníku rozdělené podle „&“. For cyklus pak prochází všechny hodnoty z formuláře a dělí je mezi znaménkem “=” . Pomocí get voláme hodnoty zadané uživatelem a ukládáme do proměnných začínajících “f_”.


SCORING

Do algoritmu výpočtu score vstupují hodnoty z formuláře ze sekce  “Osobní údaje”. Těmto hodnotám jsme přiřadily váhy dle metodiky bankovního scoringu. Dále jsme hodnoty s váhami definovaly ve slovnících. Po odeslání dat z formuláře program váhy sečte a převede do ratingového hodnocení A až C, přičemž A je nejlepší rating a C nejhorší rating.
Do výpočtu score zahrnujeme také věk klienta a informaci, jestli je nebo není ve zkušební době (případně zahájil podnikání před méně než 3 měsíci). Klient do webového formuláře nezadává věk, ale datum narození, a dále pak datum nástupu do zaměstnání. Pomocí funkce vypocet_vek z data narození počítáme věk klienta a pomocí funkce vypocet_prace počítáme, jak dlouho klient pracuje/podniká.


Váhy jednotlivých hodnot, které vstupují do výpočtu score, jsou z bezpečnostních důvodů v tomto blogu zneviditelněné.


MÍRA ZADLUŽENÍ

Pro výpočet míry zadlužení potřebujeme znát čistý měsíční příjem klienta a sumu měsíčních splátek. Míra zadlužení se pak vypočítá jako podíl sumy splátek a měsíčního příjmu (x 100 pro vyjádření v %). Nadefinování této funkce je tedy zdánlivě velmi jednoduché, nicméně jsme musely vzít v úvahu klienty, kteří mají příjem z podnikání a do webového formuláře uvádí roční základ daně.
Tento příjem je tedy potřeba vydělit 12 a vynásobit koeficientem 0,85, abychom získaly čistý měsíční příjem (daň z příjmu 15%). Funkce vypocet_mira_zadluzeni, která vypočítává míru zadlužení, rozlišuje, zda má počítat s údajem čistý měsíční příjem z webového formuláře, nebo s čistým měsíčním příjmem, který jsme přepočítali z ročního základu daně.


Výsledkem této funkce je procentuální míra zadlužení. Po vyplnění dat do formuláře a odeslání dat se klientovi zobrazí nejen toto procentuální vyjádření, ale i slovní doporučení, zda je vhodné brát si další úvěr vzhledem k jeho aktuální míře zadluženosti.

HODNOCENÍ PO VYPLNĚNÍ FORMULÁŘE

Příkaz „self.wfile.write(bytearray(………))“ odešle vypočtená data zpět do prohlížeče, kde se zobrazí uživateli okno s hodnotou score a míry zadlužení včetně slovního popisu.


Slovní popis obsahuje dvě informace s doporučením. První informace říká, jaké má klient ratingové hodnocení. Jinými slovy, jaké podmínky poskytnutí úvěru může klient očekávat.
Druhá informace říká, jaká je aktuální míra zadluženosti a doporučení, zda je vhodné brát si první/další úvěr. Toto doporučení vychází z doporučení České národní banky pro poskytování retailových úvěrů, dle kterého se řídí banky na českém trhu [4].
Na následujícím příkladě demostrujeme případ fiktivního klienta, který získal ratingové hodnocení A, ale zároveň je předlužený. Po vyplnění webového formuláře se klientovi zobrazí toto okno.


 UKLÁDÁNÍ DAT DO CSV

Funkce zapis_csv ukládá získané údaje z formuláře do csv souboru. Díky takto získaným datům od klientů můžeme vyhodnocovat portfolio klientů, kteří našich služeb využijí.

PROPOJENÍ S API INSOLVENČNÍHO REJSTŘÍKU

Při žádosti o úvěr hraje velkou roli probíhající exekuce klienta, soudně nařízené srážky ze mdy, záznam v insolvenčním rejstříku apod. Pokud má klient záznam v insolvenčním rejstříku, je téměř nulová pravděpodobnost, že mu banka poskytne úvěr. Proto jsme se rozhodly pracovat s insolvenčním rejstříkem i v našem programu.
Po zadání rodného čísla do formuláře by se program pomocí funkce ISIR_dotaz doptal na záznam a v případě kladné odpovědi bychom tuto informaci zohlednili ve výpočtu score (tedy nejhorší ratingové hodnocení). Funkce a propojení s API fungovalo až do 25.5.2018. Bohužel po tomto datu jsme zjistily, že požadované informace nezískáme, a to kvůli zrušení funkcionality v souladu s novými právními předpisy GDPR. Tato informace je uvedena na webových stránkách Insolvenčního rejstříku [5].
Propojení s API vypadalo v našem programu následovně.


NÁVOD NA SPUŠTĚNÍ PROGRAMU

Program funguje pouze lokálně, proto je třeba mít v počítači uložený jak soubor s příponou .py, tak soubor s příponou .html. Je potřeba provést následující kroky:

  • spuštění python souboru,
  • otevření webového prohlížče na adrese “localhost:8080”,
  • po načtení html formuláře vyplnění a kliknutí na tlačítko “Odeslat”,
  • proběhne odeslání dat na server a jejich zpracování,
  • uživateli se zobrazí okno s ratingovým hodnocením a mírou zadluženosti včetně doporučení.

OŠETŘENÍ ZPRACOVÁNÍ OSOBNÍCH ÚDAJŮ

V tuto chvíli není náš projekt v souladu s nařízením o ochraně osobních údajů. Při testování programu jsme používaly generátor rodných čísel, rodná čísla dostupná v Insolvenčním rejstříku, nebo naše rodná čísla. Projekt plánujeme rozšířit o toto ošetření a souhlas se zpracováním osobních údajů ve webovém formuláři, který bude podmínkou pro vyhodnocení bonity a zadluženosti.

ZÁVĚR

Hlavním cílem našeho projektu bylo naučit se základní principy programování v Pythonu. Za pomoci a podpory našich mentorů jsme vytvořily jednoduchý program, který nám v našem cíli pomohl a který může sloužit jako užitečný nástroj pro fyzické osoby při finančním plánování.
V průběhu zpracovávání projektu jsme se občas ocitly na mrtvém bodě a nevěděly jak dál. Považovaly jsme to ale za součást učení se. V této situaci nám vždy pomohli naši mentoři. Tímto bychom jim rádi poděkovaly za jejich čas, trpělivost, pomoc a vedení našeho projektu.
Zároveň bychom rádi poděkovaly celému týmu Czechitas, lektorům a dobrovolníkům z Digitální akademie, kteří nám věnovali svůj čas s dobrou vůlí naučit nás něco nového a přínosného. Velmi si toho ceníme a věříme, že projekt Digitální akademie bude získávat další úspěchy v podobě dívek a žen, které získaly novou práci, změnily způsob myšlení, získaly nové přátele, nebo jen smysluplně využily svůj volný čas.

ZDROJE

[1] NMS Market Research. [cit. 2018–06–11].
[2] HÁBL, Radek. Mapa exekucí. [cit. 2018–06–11]. Dostupné z: http://mapaexekuci.cz/
[3] Prowia system. © 2009–2018 Prowia system s.r.o. [cit. 2018–06–11]. Dostupné z: https://www.isir.info/
[4] Česká národní banka, © Česká národní banka, 2003–2018, [cit. 2018–06–11], Dostupné z: https://www.cnb.cz/miranda2/m2/cs/legislativa/vestnik/2017/download/vestnik_2017_07_20717180.pdf
[5] Prowia system. © 2009–2018 Prowia system s.r.o. [cit. 2018–06–11]. Dostupné z: https://www.isir.info/insolvencni-rejstrik

Komentáře

Populární příspěvky z tohoto blogu

Barbora Junová: Podpora začínajícího podnikání zaměřeného na prodej výrobků a poskytování služeb

Petra Havlínová: Automatické zpracování podkladů pro vyhodnocení vybraných KPI

Kateřina Kolouchová & Lenka Tomešová: Vliv počasí na kriminalitu v New Yorku a Brně