loan optimization

Loan Portfolio Optimization

머신러닝 기법을 사용하여 대출 자산 포트폴리오에 대한 최적화 방법에 대해 생각해 본다.

Part1: 개요(문제정의)

  1. 각 대출섹터별 수익성과 위험을 기준으로 전체 포트폴리오의 수익을 최적화하는 것이 목적임
  2. 제약조건의 변경(금리 수준, 투자 비중의 제약)에 따라 포트폴리오의 리밸런싱이 가능해야 함
  3. 대출섹터별로(신차 대출, 중고차 대출, 신용대출(direct, indirect)) 투자비중을 계산하는 것이 목표임

Part2: 접근방식(포트폴리오 최적화)

  1. Loan Portfolio Optimization를 하기 위해서 전체 포트폴리오의 Sharp Ratio를 극대화하는 투자비중(w)를 계산함
    1. 개별 대출의 묶음을 하나의 투자자산으로 가정함(단위 포트폴리오로 정의함)
    2. 단위 포트폴리오에 투자하는 비중(w)을 계산하기 위해서 예상 수익률과 공분산 매트릭스가 필요함
    3. 계산에 필요한 예상 수익률은 발생가능한 현금 흐름을 사용함
  2. 예상 수익률을 계산하는 방법은 다음과 두가지 방법을 생각해 볼 수 있음
    1. 각각 포트폴리오의 과거 월별 현금흐름을 사용하여 계산함
    2. 각각 포트폴리오의 미래 부도율을 예측하여 계산함
    3. 현금흐름을 할인하는 이자율은 중요 요인이나 분석에서는 고려하지 않았음
  3. 포트폴리오의 과거 월별 수익률은 다음과 같이 계산함

    1. 섹터별, 대출규모별 단위 포트폴리오를 구성함
    2. 월별 수익률을 계산하는 방법은 부도 미발생 일 경우에는 이자율 * 원금의 현금흐름이 발생함
    3. 해당월에 부도가 발생하면 원금을 차감함
    4. 월별발생 현금흐름에 원금을 나누어서 월별 수익률을 계산
    5. 월별 수익률이 계산 되었으므로 분산 공분산 매트릭스를 계산 할 수 있음
  4. 포트폴리오의 미래 수익률은 다음과 같이 계산함

    1. t시점의 3년전 데이터로 train set과 t시점부터 1년 후 데이터로 test set을 구성함
    2. train set의 데이터를 이용하여 부도율을 학습시킴
    3. test set를 이용해서 부도 대상을 예측할 수 있음
    4. 부도 시기를 예측 할 수 없으므로 36개월 만기 중에서 평균(13.5)의 부도 시점을 사용함
    5. 부도율과 미래현금흐름을 이용하여 단위 포트폴리오의 1년 예상 수익률을 시뮬레이션 함
  5. 미래수익률과 과거수익률로 분산공분산을 추정하였으므로 Mean Variance 최적화를 시도할 수 있음

Part3: 분석 데이터 예제와 분석 툴

  1. 입수데이터는 Lending Club의 2008 년부터 2015년 년간의 80만여건의 자료
  2. 입수항목은 grade, zip, 소득, 대출기간, 대출금액, 대출상태(부도, 완료, 진행), 집소유 등 78개의 컬럼
  3. 분석툴은 Python, Numpy, Pandas, SKlearn, xgboost(Gradient Boost), Jupyter Notebook 를 사용
  4. 파이썬 노트북 환경의 장점
    • SQL, 코딩, 통계분석, 머신러닝, 시각화를 한 화면에서 지원이 가능
    • 웹에서 어디서나 접근이 가능함
    • 금융 프로그래밍에 있어서 타 언어(JAVA, C++)보다 더 높은 생산성

Continue reading loan optimization

06 Song_For_The_Visualization

Song for the Visualization

  • kaggle에 음악 추천관련 data가 있어서 이를 사용하여 음악에 대해서 시각화를 해 보았음
  • df_train, df_test 에는 각 유저가 어떤 음악을 들었는지에 대한 정보
  • df_songs는 각 노래에 대한 정보(아티스트, 장르, 앨범정보, 연주시각, 작곡자 등)
  • df_songs_extra는 노래제목, 연도 등의 정보
  • df_members는 유저의 성별, 나이, 도시 등의 정보가 있음
  • data는 대만의 업체가 제공하는 것이이여서 중화권 음악이 많이 존재해서 영어권 음악만 따로 빼서 분석함

Continue reading 06 Song_For_The_Visualization

05 ten_years_stock

10 Years Korea Stock Price

  • KOSPI 200 종목을 대상으로 10년 동안 수익률에 대해 시각화 하였음
  • 200종목을 11개의 산업으로 분류 하였음(gics 기준)
  • 주가는 Yahoo Finance에서 다운을 받아 수정 종가가 아닌 일반 종가를 사용하여 수익률을 계산하였음

Continue reading 05 ten_years_stock

03 starbucks in seoul

Starbucks in Seoul

  • kaggle에 전세계의 스타벅스의 위치가 데이터가클릭 있어서 이 데이터를 가지고 서울의 스타벅스의 위치를 시각해 보았음
  • 데이터를 보면 스토어의 고유번호, 스토어 이름, 주소, 우편번호, 국가, 도시, 전화번호, GPS경도, GPS 위도가 있음을 확인할 수 있음
  • 서울 데이터의 경우에 데이터에 약간 문제 있고 GPS도 틀린 것이 있지만 그래도 시각화를 시도 해 보았음
  • 지도 시각화는 folium을 사용하였음

Continue reading 03 starbucks in seoul

10 List_comprehension

List Comprehension

  • Python의 Comprehension은 한 Sequence가 다른 Sequence (Iterable Object)로부터 (변형되어) 구축될 수 있게한 기능이다
  • List Comprehension는 입력 Sequence로부터 지정된 표현식에 따라 새로운 리스트 컬렉션을 생성한다.
  • List Comprehension는 다음과 같이 표현된다.
    • [output_expression() for(set of values to iterate) if(conditional filtering)]
  • Dictionary Comprehension는 다음과 같이 표현된다.
    • {Key:Value for 요소 in 입력 Sequence [if 조건식]}

Continue reading 10 List_comprehension

Pagination


© 2017. All rights reserved.

Powered by ZooFighter v0.12