What I'm researching and studing

[Fintech] 데이터3법, 그리고 핀테크 관련 정책 히스토리

15 December 2019

2019.12.15 개시글을 update하여 게시합니다.(수정일 20.01.13) 2019년 12월 10일 정기국회 종료시, 법사위 통과 실패로 많은 금융업 및 데이터 관련 기업 종사자들의 아쉬움을 샀던 데이터3법 데이터 3법이라 불리는 개인정보보호법/신용정보법/정보통신망법이란 무엇인지, 지금까지 해당법에...

[Quant] 주식리스크 프리미엄 구하기

03 November 2019

리스크 프리미엄(risk premium) 또는 위험 프리미엄은 개인이 무위험 채권이 아닌 위험 자산을 보유하도록 유도하기 위해 위험 자산의 기대수익이 무위험 채권의 수익을 초과해야 하는, 최소한의 금액이다. 위험 회피에 유용하다. 그러므로 이는...

[Python] 서울특별시 행정구역 시각화

18 August 2019

전국 행정구역을 시각화한 지난 포스팅에 이서 서울만 따로 작업해보았다. 서울의 경우 서울 열린 데이터 광장에서 제공하는 자료를 통해 시각화할 데이터들이 많아 활용도가 높다. 전국 시각화 : https://mkjjo.github.io/python/2019/08/18/korea_population.html 필요한 라이브러리 import...

[Python] 전국 인구 현황 지도 시각화

18 August 2019

folium를 활용해 지도에 지역구 영역을 표시하고 인구 현황을 시각화해보자. 해당 포스트에서 커버되는 내용 대한민국 행정구역 시각화 인구 버블맵 표현 인구 히트맵 표현 필요한 라이브러리 import requests import json import pandas...

[Python] 네이버API를 활용한 위치 정보 수집

11 August 2019

네이버 클라우드 플랫폼 서비스 가입을 통해 주소별 위치 정보(위도, 경도)를 수집해올 수 있다. 단, 유료화 정책에 유의하자! https://www.ncloud.com/product/applicationService/maps map 서비스에 대해, 2019년 한정적으로 무료 이벤트를 추진중이다. '무료 이용량 프로모션'은 2019년...

[Python] folium를 활용한 지도 활용

11 August 2019

위도 경도를 알면 folium를 활용해 지도에 쉽게 표시해볼 수 있다. 필요한 라이브러리 import requests import json import pandas as pd from pandas.io.json import json_normalize import os import folium from folium...

[Python] 필요할때 꺼내쓰기 좋은 유용한 로직 아이디어

04 August 2019

1. 반복될수록 가산값(노이즈)의 영향력을 점점 작게 만든다. for i in range(1000): a = argmax(Q(s,a)) + random_value / (i+1)) [Ref.] 강화학습에서의 Exploit VS Exploration: add random noise 2. 반복될수록 누적값을 점점...

[Python] 파이썬 모듈을 활용한 암호화/복호화

04 August 2019

업무를 하다보면 민감한 문서를 다뤄야할 때가 있다. 이럴때 암호화/복호화 기술을 활용하면 용이하다. 파이썬 모듈을 활용해 쉽게 적용할 수 있다. 우선 암호화 기술에 대해 알아보자. 암호블록체인(Cipher-block chainingm CBC) 방식은 1976년 IBM에...

[Python] Zipline을 이용한 주식 거래 백테스팅

21 July 2019

Quantopian과 함께 사용되는 Zipline! 단점은 한국 상장기업을 대상으로 하기엔 쉽지가 않다. 우선 해외시장을 타겟으로 샘플코드를 실행해보자. SPY 즉, S&P500 지수를 활용한 투자전략의 백테스팅이다. 해당 코드는 SPY에 대한 csv 형태의 데이터를...

[Python] 모멘텀 전략 주식 거래 Basic

21 July 2019

모멘텀 전략이란 자산 가격의 흐름이 최근 추세를 유지하려는 경향이 있다.는 가설을 기반으로 하는 전략이다. 최근 수익률이 좋았던 주식을 사고 그렇지 않은 주식을 피하거나, 팔거나, 공매도한다. 모멘텀을 측정하는 방법에는 여러가지가 있지만,...

[Python] 이동평균 전략 주식 거래 백테스팅

18 July 2019

국내 주식 시계열 데이터를 얻을 수 있는 FinanceDataReader, 설치 방법은 터미널에서 아래 명령을 실행한다. pip install -U finance-datareader import FinanceDataReader as fdr fdr.__version__ 자세한 내용은 가이드 페이지 참고 https://financedata.github.io/posts/finance-data-reader-users-guide.html Zipline,...

[Python] Korean preprocessing

09 July 2019

한국어에 대한 자연어 처리는 영문과 유사하지만 조금 더 특별한 전처리를 갖는다. 불필요한 심볼을 제거한 후 한국어 분석에 대표적인 라이브러리 konlpy를 사용하여 형태소를 분석한다. 이중에서 데이터 분석에 가장 큰 의미를 갖는...

[Python] English preprocessing

09 July 2019

영어에 대한 전처리는 대표적으로 nltk를 사용한다. 이중에서 데이터 분석에 가장 큰 의미를 갖는 형태소인 명사만을 추출해 실제로 데이터 분석에 활용한다. 사용 목적이나 데이터 처리 상태에 따라 다른 형태소를 포함해볼수도 있을...

[Fintech] 오픈뱅킹 API

05 July 2019

6/20 발표한 금융위원회 ‘오픈뱅킹 진행 현황 및 향후 일정’ 주요내용 오픈뱅킹 API 핀테크 뿐만아니라 제공자인 기존 은행도 사용할 수 있게 된다. 수수료도 1/10 수준까지 대폭 인하되어, 출금 500->50,30원, 입금 400->40,20원으로...

[Python] 파이썬 유용 코드 & Tips

03 May 2019

1. 타입변경 데이터프레임 문자타입변경 df.iloc[1][1].astype(str) 날짜 타입변경 start_date.strftime("%Y%m%d") 2. 통계값 확인 print(stockReturn.describe()) print('skeness: ', stockReturn.skew(axis=0)) print('kurtosis: ', stockReturn.kurtosis(axis=0)) print('autocorrelation: ', stockReturn.autocorr()) 3. 변경 str(1).zfiil(2) # 숫자앞에 영으로 채우기 '2011.01.01'.replace('.', '-')...

[Python] Pandas 활용 기본

03 May 2019

pandas는 데이터 분석에 용이한 파이썬 패키지이다. 테이블과 유사한 형태인 DataFrame 위주의 유용한 코드를 정리해본다. 1. DataFrame 생성 1) 리스트로 생성하기 import pandas as pd df = pd.DataFrame({"a" : list1,"b" :list2})...

[Biz] 임팩트 비즈니스

06 February 2019

최근 사회적기업 및 기업의 공헌에 대한 관심이 날로 뜨거워지고 있다. 기업의 목표는 ‘수익창출’이지만, 수단을 CSR(기업의 사회적 책임), CSV(공유가치창출) CSR과 CSV를 혼동하는데, 아예 다른 차원입니다. CSV는 ‘비즈니스 경쟁력 창출’을 위한 ‘전략’이고,...

[Python] 평균-분산 포트폴리오 전략

27 January 2019

포트폴리오 이론은 해리 마코위츠에 의해 체계화된 이론으로, 자산을 분산투자하여 포트폴리오를 만들게 되면 분산투자 전보다 위험을 감소시킬 수 있다는 이론이다. 자산의 가치는 미래의 기대수익률과 위험의 두 요소에 의해 결정 되며 미래의...

[Python] Inverse Covariance를 통한 수익률 유사도 측정

27 January 2019

공분산(covariance)은 정밀도(precision)와 역의 관계에 있다. 분산이 무한대 인 경우 정밀도는 0이 되며 반대로, 분산이 0 일 때, 무한 정밀도를 갖는다. 즉 역공분산은 (Inverse covariance)은 정밀도(precision)를 의미한다. 역공분산은 종속성의 그래프 네트워크를...

[Python] 평균회귀를 활용한 Long/Short 전략

26 January 2019

평균회귀전략은 자산의 가격이 추세상 안정권에 있고 경향에 따라 무작위로 변동한다는 가정에서 성립된다. 따라서 추세를 벗어나면 방향이 꺽이고 다시 추세로 되돌아가려는 경향 이 있다. 즉, 값이 비정상적으로 높으면 내려갈 것으로 예상하고...

[Python] Long/Short Pair Trading

26 January 2019

Long-Short 전략은 장기, 단기 보유 주식 개념과 유사하다. Pair Trading이 어떤 주식이 저평가되어 있고 고평가되어있는지를 식별하는 것처럼 Long-Short 전략도 어느 주식이 상대적으로 저렴하고 비싼지를 식별하기 위해 Basket내 주식에 순위를 매긴다....

[Python] 공적분을 활용한 Pair Trading

25 January 2019

공적분검정을 통해 개별주식간의 동조화 여부를 확인할 수 있다. 동조화는 추세가 공유되는 장기동조화와 순환이 이전되는 단기동조화로 분해된다. 비정상 시계열의 경우 추세의 공유 여부는 공적분 분석에 의해 수행된다. 순환의 이전은 오차수정 모형에서...

[Python] Kalman Filter를 활용한 Pair Trading

20 January 2019

터널을 통과하는 차의 GPS 신호가 사라졌다. 터널안의 차를 어떻게 탐색할 수 있을까? 발사된 미사일을 격추시키기 위해 미래 미사일의 위치를 어떻게 추정할 수 있을까? 칼만필터는 공간선형모델로 주로, 네비게이션에서 위치를 추적하는데 쓰이거나...

[Python] 어떤 스케일러를 쓸 것인가?

10 January 2019

데이터를 모델링하기 전에는 반드시 스케일링 과정을 거쳐야 한다. 스케일링을 통해 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우(overflow)나 언더플로우(underflow)를 방지 하고, 독립 변수의 공분산 행렬의 조건수(condition number)를 감소시켜 최적화 과정에서의...

[Python] 아웃라이어 제거하는 방법

10 January 2019

표준화 변환시에는 “이상치, 특이값 (outlier)이 없어야 한다” 는 가정사항이 있다. 표준정규분포로 변환하는 공식이 z = (x - 평균)/표준편차 이며, 평균(mean)은 이상치, 특이값에 엄청 민감 하기 때문이다. 스케일 전 아웃라이어를 제거해야하는...

[Python] 학습 데이터 가져오기

09 January 2019

모델링에 주로 사용되는 학습데이터가 있다. 1. mnist mnist는 0~9까지의 숫자 모음 으로 비교적 많은 이미지 학습 예제에서 다뤄지고 있다. MNIST 학습데이터는 28x28 사이즈에 총 784개의 픽셀로 이루어진 흑백이미지이다. 각 픽셀마다...

[Python] K-means를 통한 기업 패턴 분류

09 January 2019

4차산업혁명 시대에 이르면서 기업마다 다양한 디지털 산업을 영위하고, 디지털업계가 유통업, 금융업에 진출하면서 산업의 경계가 허물어져 가고 있다. 점점 기존의 산업분류체계에 대한 의구심을 갖고 새로운 기업 패턴 분류에 대한 니즈가 생겨나게...

[Python] 데이터 전처리 과정

08 January 2019

데이터는 Kaggle의 home credit default risk 를 사용했다. 1. 데이터 가져오기 Kaggle Data 보러가기 application_train.csv파일 다운로드 data = pd.read_csv('./datas/kaggle_homecredit/application_train.csv') 2. 변수 정보 확인 # 컬럼별 type 확인 및 결측치 확인...

[Django] Step1. 장고를 활용한 웹 구동방식의 이해

05 January 2019

Django는 파이썬 코드를 활용한 Web Framework이다. 무료 오픈소스인데다가 다양한 커뮤니티가 활성화되어 많이 활용되고 있다. Django는 문서관리시스템과 Wiki부터 SNS에 이르기까지 다양한 종류의 웹 사이트를 빌드하는데 사용할 수 있다. Django를 통해 개발된...

[Django] Step2. Models 클래스 만들기

05 January 2019

[이전포스팅] [Django] Step1. 장고를 활용한 웹 구동방식의 이해 보러가기 위 그림에서처럼 models.py를 통해 데이터를 접근, 관리할 수 있다. Django에서 기본 제공하는 db.sqlite3와 연동하여 models.py에서 정의한 models 클래스 데이터들을 DB형태로 관리...

[Python] SMOTE를 통한 데이터 불균형 처리

04 January 2019

데이터 분석시 쉽게 마주하게 되는 문제 중 하나가 데이터의 불균형이다. 우리가 찾고자하는 데이터의 타겟의 수가 매우 극소수인 케이스가 많다. 예를 들어 부도예측시 부도는 전체 기업의 3% 내외로 극소수이다. 이러한 비대칭...

[Python] 변수중요도(Feature Importances) 추출

04 January 2019

1. 모델 가져오기 먼저 나무유형 머신러닝 모델이 필요하다. 작업 후 pickle 변수 저장 후 사용하였다. [저장하기 코드 참고] import pickle pickle.dump(models, open('./models/models.pkl','wb')) [가져오기 코드 참고] with open('./models/models.pkl', 'rb') as file:...

[Python] 보루타 알고리즘을 통한 변수선택

04 January 2019

보루타알고리즘은 랜덤포레스트(RandomForest)를 기반으로하는 변수선택기법이다. 랜덤포레스트는 다수의 의사결정나무를 앙상블 배깅하는 모델로, 분류작업을 위한 모든 의사결정나무들은 정확도 손실 계산의 평균과 표준편차를 갖는다. 이를 활용한 Z-score값은 변수선택에 있어 직접적인 통계적유의성을 갖지는 않는다. 더구나...

[Python] Pearson 상관관계 파악

02 January 2019

데이터 모델링시, 변수선정시 결정적인 변수가 포함되어있지는 않은지 확인할 필요가 있다. 예를 들어 Label값과 거의 일치하는 변수가 포함되어 있을 경우, 성능은 당연히 높아질 수 밖에 없으나 모델로써의 가치는 떨어지게 된다. 사전에...

[Python] 산업 전이행렬 만들기

01 January 2019

글로벌 변동성이 커지고 각종 경기지표가 악화됨에 따라 신용리스크가 가중되고 있다. 산업 및 기업의 신용리스크 확인시 등급전이행렬을 확인하는 것은 매우 유용하다. 전이행렬을 통해 우상향할수록 위험이 악화되고, 좌하향할수록 위험이 개선되는 것을 확인할...

[Python] 버블차트로 모델 성능 표현하기

01 January 2019

모델의 성과를 비교하고 싶을 때 버블차트를 이용해보면 좋다. 최종 output 활용 이미지는 다음과 같다. 1. 데이터 가져오기 모델 성능을 미리 csv파일로 작성해두었다. models = pd.read_csv("./datas/model_result_pivot.csv") 아래와 같은 포맷이다. (샘플) dataset...

[MarkDown] 마크다운 활용 가이드

01 January 2019

1. 테이블 만들기 테이블 기본은 아래와 같이 만들 수 있지만, Generator를 사용하면 손쉽게 만들 수 있다. 표사이의 공간은 따로 신경쓰지 않아도 자동으로 처리된다. | Name | Character | | ---...

[Python] DNN 모델링시 학습곡선 체크하기

28 December 2018

같은 데이터에 같은 모델을 적용하더라도 설계를 얼마나 잘하느냐에 따라 결과가 매우 달라진다. 설계를 할때 아래와 같은 주요변수(요인)들이 있다. - Batchsize 한번에 학습할 데이터량을 결정한다. 클수록 한번 볼때 크게 보는 효과가...

[MarkDown] 기본 문법 설명

24 December 2018

마크다운 작성을 위한 주요 문법 1. ‘#’ 타이틀 만들기 # 문자수를 늘려갈수록 작은 글씨 표현 가능 1개~6개까지 사용 가능함 # The largest heading ## The second largest heading ###### The...