Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The 1st Mirae Asset Daewoo Bigdata Festival (2017)

The 1st Mirae Asset Daewoo Bigdata Festival (2017)

제1회 미래에셋대우 빅데이터페스티벌
- 주제: 글로벌 주가지수 예측 알고리즘 개발

Hanbin Seo

May 29, 2017
Tweet

More Decks by Hanbin Seo

Other Decks in Education

Transcript

  1. XGboost Classification 알고리즘 기반 글로벌 주가지수 증감 예측 제1회 미래에셋대우

    빅데이터 페스티벌: 지수예측리그 2017. 5. 29. 서한빈, 정재윤, 여현규(bR.py)
  2. 2 ❖ 요약 및 프레임워크: Overview 내생변수 데이터 대회제공 데이터

    외생변수 데이터 통합변수 데이터 KNN LR RF XGboost SVM argmax 𝐴𝐶𝐶 𝒄𝒍𝒂𝒔𝒔𝒊𝒇𝒊𝒆𝒓(𝑝𝑎𝑟𝑎𝑚𝑠) SPX SSEC KOSPI GDAXI N225 0.9583 0.9375 0.8333 0.8750 0.8125 주가지수 증감 예측 최적 알고리즘 * 예측기간 데이터에 대한 정확도
  3. 목차 4 0. 요약 및 분석프레임워크 1. 분석 개요 2.

    대회제공 데이터 정제 2-1. 대회제공 데이터 구조화 2-2. 대회제공 데이터 전처리 2-3. 대회제공 데이터 변수선택 3. 추가 데이터 매쉬업 – 내생변수 3-1. 내생변수 개요 3-2. 내생변수 수집 및 전처리 3-3. 내생변수 변수선택 4. 추가 데이터 매쉬업 – 외생변수 4-1. 외생변수 개요 4-2. 외생변수 수집 및 전처리 5. 모델링 적용 및 평가 5-1. 모델링 개요 5-2. 최적 매개변수 탐색 5-3. 분류모델 비교 6. 결론 7. 별첨
  4. 1. 분석 개요 [1/2] ➢ 글로벌 주가지수의 매 월 종가변동을

    예측하는 모델링 ▪ 예측대상 글로벌 주가지수 (즉 5개의 목적변수에 대한 예측문제) ✓한국 KOSPI 200(KOSPI) ✓미국 S&P 500(SPX) ✓중국 상해종합지수(SSEC) ✓일본 Nikkei 225(N225) ✓독일 DAX 30(GDAXI) ➢ 지수 방향성은 전월 대비 상승/하락으로 구분, 즉 이진분류(binary classification) 문제 ➢ 분석범위 ▪ 2013년 1월 ~ 2016년 12월 기간에 대한 예측 ▪ 그 이전 기간에 대한 정보를 바탕으로 분류모델 학습 ➢ 분석대상 데이터 5 데이터 그룹 설명 대회제공 데이터 주요 경제관련 지표 – 글로벌지수, 국가별 경제지표, 기타 세계 경제지표 내생변수 데이터 외부 데이터, 각 주식시장 내 주요 기업의 주가정보 외생변수 데이터 외부 데이터, CNN 뉴스 텍스트 데이터
  5. 1. 분석 개요 [2/2] ➢ 알고리즘 학습데이터 구조 ▪ 매달

    종료시점을 기준으로 데이터 제공 및 정제 ▪ T 시점의 Y 지수 증감여부를 분류하기 위한 모델입력 데이터 생성 ✓즉 T-1부터 T-t 시점까지의 설명변수를 이용해 T 시점 예측 6 TimeLog 대회제공 데이터 그룹 내생변수 데이터 그룹 외생변수 데이터 그룹 Y 지수 증감여부 … T-3 T-2 T-1 T 0 or 1 … TimeLog T-1 시점 M개 변수 T-2 시점 M개 변수 T-3 시점 M개 변수 Y 지수 증감여부 … T-1 T 0 or 1 T+1 T+2 … 총 변수 개수(M) X 시간간격(t) 총 변수 개수(M) X 시간간격(t)
  6. 2-1. 대회제공 데이터 구조화 [1/2] ➢ 메타데이터 생성 및 DB

    구축 7 2. 대회제공 데이터 정제 [1/4] 제공데이터 시트 테이블 명 테이블 설명 칼럼 수 분류 설명 및 비고 0_글로벌지수 G_IDX_CLOSE 글로벌지수 종가 10 G 미국 S&P 500지수 종가 등 주요 글로벌지수 종가 G_IDX_HIGH 글로벌지수 고가 10 G 미국 S&P 500지수 고가 등 주요 글로벌지수 고가 G_IDX_LOW 글로벌지수 저가 10 G 미국 S&P 500지수 저가 등 주요 글로벌지수 저가 G_IDX_VOLUME 글로벌지수 거래량 10 G 미국 S&P 500지수 거래량 등 주요 글로벌지수 거래량 G_IDX_SIZE 글로벌지수 시가총액 5 G 미국 S&P 500 시가총액 등 주요 글로벌지수 시가총액 G_IDX_EPS 글로벌지수 EPS 5 G 미국 S&P 500 EPS 등 주요 글로벌지수 EPS G_IDX_PER 글로벌지수 PER 5 G 미국 S&P 500 PER 등 주요 글로벌지수 PER 1_지수 NORMAL_IDX 일반 지수 30 O 신흥아시아, 홍콩 항셍지수 등 MSCI 지역별 지수, 국가대표 지수 2_한국 KR_INDEX 한국 지수 58 N 증시, 금리, 통화, 부동산 등 국가별 경제 주요 경제 지수 3_미국 US_INDEX 미국 지수 78 N 4_중국 CN_INDEX 중국 지수 59 N 5_독일 DE_INDEX 독일 지수 34 N 6_일본 JP_INDEX 일본 지수 33 N 7_원자재 MATERIALS 원자재 지수 80 O 서부 텍사스 중질유 가격 등 세계 원자재 가격지수 8_환율 EXCHANGE 환율 지수 30 O 원/미국달러 등 환율 가격지수 9_기타 OTHER_IDX 기타 지수 10 O OECD 전체 등 기타 (OECD 관련)경제지수 * 이때 중복변수 및 기준 이상의 null 값 존재하는 열(column) 제거 * 또한 2016년12월 기준 데이터 lag이후 null 발생하는 행(record) 제거
  7. 2-1. 대회제공 데이터 구조화 [2/2] ➢ 데이터그룹과 목적변수의 대응(mapping) ▪

    각 목적변수를 예측하는데 필요한 테이블을 대응해 입력데이터 생성 8 2. 대회제공 데이터 정제 [2/4] KOSPI SPX SSEC GDAXI N225 [G] Global Index • G_IDX_CLOSE • G_IDX_VOLUME • G_IDX_SIZE • G_IDX_EPS • G_IDX_PER [N] National Index • KR_INDEX • US_INDEX • CN_INDEX • DE_INDEX • JP_INDEX [O] Other Index • NORMAL_IDX • MATERIALS • EXCHANGE • OTHER_IDX 제공데이터 시트 0_글로벌지수 1_지수 2_한국 3_미국 4_중국 5_독일 6_일본 7_원자재 8_환율 9_기타 테이블 명 G_IDX_CLOSE G_IDX_HIGH G_IDX_LOW G_IDX_VOLUME G_IDX_SIZE G_IDX_EPS G_IDX_PER NORMAL_IDX KR_INDEX US_INDEX CN_INDEX DE_INDEX JP_INDEX MATERIALS EXCHANGE OTHER_IDX Mapping * 이때 N그룹은 각 국가별 지수에만 1:1 대응 분류 분리
  8. 2-2. 대회제공 데이터 전처리 ➢ 데이터 시점 조정(lag), <그림1> 참고

    ▪ 데이터 발표시점을 고려해 모든 변수를 2016년 12월 시점으로 맞춤 ➢ 결측 데이터 제거 ▪ 행(row) 기준: lag 과정, 데이터 병합 과정에서 누락되는 시점 제거 ▪ 열(column) 기준: 예측범위(2013년 1월) 기준까지 공백인 변수 제거 ➢ 모델입력 데이터 생성(T lag), <그림2> 참고 ▪ 목적변수 ~ 입력데이터 사이 시점 조정 ▪ 목적변수를 기준으로 입력변수를 T(t=1,2,3)만큼 lag해 테이블 병합 ➢ 입력데이터 증감률 기준으로 변환(diff X) ▪ 변수선택, 모델링 과정에서 입력데이터는 지난달 대비 증감률로 변환 ▪ 지난달 대비 증감률: 𝑋𝑇 = 𝑥𝑇−𝑥𝑇−1 𝑥𝑇−1 × 100 (𝑋𝑇 = 100, 𝑤ℎ𝑒𝑛 𝑥𝑇 = 0 or null) ➢ 목적변수 이진 변환(bin Y) ▪ 지난달 대비 증가여부를 기준으로 이진(binary) 변수로 변환 ▪ 지난달 대비 증가여부: 𝑌𝑇 = ቊ 1, 𝑤ℎ𝑒𝑛 𝑦𝑇 > 𝑦𝑇−1 0, 𝑤ℎ𝑒𝑛 𝑦𝑇 ≤ 𝑦𝑇−1 9 2. 대회제공 데이터 정제 [3/4] <그림1> 데이터 시점 조정(lag) <그림2> 모델입력 데이터 생성(T lag) <그림1> 출처: 빅데이터페스티벌설명회자료_v0.4_001.pdf
  9. 2-3. 대회제공 데이터 변수선택 ➢ (Step 1) 상관계수기반 1차 변수제거

    ▪ 모델데이터 생성(T lag) 이후, 변수 간 피어슨 상관계수(Pearson correlation coefficient) 계산 ▪ 목적변수와 상관계수 0.3 미만인 입력데이터 변수는 제거 ➢ (Step 2) 모델링기반 2차 변수선택 ▪ 1차 변수제거 이후, 입력데이터를 증감률 기준으로 변환(diff X) 및 목적변수 이진 변환(bin Y) ▪ (Step 2-1) L1 penalty @ Logistic Regression ✓모델 학습 이후 계수(coefficient) != 0 인 변수 선택, 𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑙1) ▪ (Step 2-2) feature important @ Ramdom Forest ✓모델 학습 이후 변수중요도 != 0 인 변수 선택, 𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑅𝐹) ▪ (Step 2-3) 합집합 변수선택, 𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑙1) ∪ 𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑟𝑓) ✓최종적으로 대회제공 데이터는 합집합에 속하는 변수를 모델링에 사용 10 2. 대회제공 데이터 정제 [4/4] 목적변수|변수 집합 cols_total cols_corr cols_l1 cols_RF cols_union KOSPI 724 401 56 67 113 SPX 775 543 64 73 126 SSEC 715 272 42 69 95 N225 652 437 56 77 124 GDAXI 655 431 58 67 116
  10. 3-1. 내생변수 개요 ➢ 주가지수 정의 및 내생변수 가정 ▪

    주가지수(Stock market index)는 주식시장에서 형성되는 주가변동상황을 종합적으로 나타내는 지표 ▪ 각 주식시장에 소속된 주요 N대 개별 기업에 대한 시가총액을 기준으로 계산 ▪ 즉 주식시장 내 기업들의 주가변동은 주가지수 변동에 직접적으로 영향을 미치는 요소라고 가정 ➢ 내생변수 정의 ▪ 개별기업의 월말 종가(close price) ▪ 개별기업의 월말 거래량(volume) ▪ 개별기업의 최근 종가 추세(beta), 시간단위: 1, 3, 6, 12개월 ✓일별 종가를 순차적으로 선형회귀 모델을 생성할 때, 기울기에 해당하는 계수 ✓한편 ‘모델의 적합성‘ 또는 ‘계수의 유의성’ 검증에서 무의미 할 때, beta = 0 11 3. 추가 데이터 매쉬업 – 내생변수 [1/4] Day Close Volume … … … t-3M P_t-3M V_t-3M … … … t-M P_t-M V_t-M … … … t-1 P_t-1 V_t-1 t(=T) P_t V_t … … … Month Close Volume Beta_1 Beta_3 Beta_6 Beta_12 … T P_t V_t 𝛽1,𝑇=1 𝛽1,𝑇=3 𝛽1,𝑇=6 𝛽1,𝑇=12 … 𝑌𝑇=1 = 𝛽1,𝑇=1 ∗ 𝑖 + 𝛽0,𝑇=1 , 0 ≤ 𝑖 ≤ M 𝑌𝑇=3 = 𝛽1,𝑇=3 ∗ 𝑖 + 𝛽0,𝑇=3 , 0 ≤ 𝑖 ≤ 3𝑀 ⋮ 특정 기업(Z)의 일일 데이터 특정 기업(Z)의 월말 데이터
  11. 3-2. 내생변수 수집 및 전처리 [1/2] ➢ (Step 1) 수집

    대상 기업목록 추출 ▪ Wikipedia, 일본거래소: 현재시점(2017.4) 주식시장 내 기업 목록 추출 ▪ 한국거래소: 2013년1월부터 현재까지 1회 이상 출현 기업 목록화 ➢ (Step 2) 기업별 주가정보 수집 ▪ Google Finance: 목록 내 기업 별 코드를 검색해 일일 종가, 저가, 고가, 거래량 수집 ▪ 95년1월부터 현재시점까지 기업 별 최대한 확보할 수 있는 기간을 대상으로 함 ➢ (Step 3) 월말 기준 데이터 변환, <그림1> 참고 ▪ 기업별 월말 종가, 거래량 및 최근 추세(beta) 추출 ✓beta는 1, 3, 6, 12개월 4개 기간을 대상으로 계산 ✓이때 계산범위 미만 데이터 존재할 때, beta = 0 ▪ 결과적으로 기업별 6개 변수 생성 12 3. 추가 데이터 매쉬업 – 내생변수 [2/4] 미국 기업 목록: https://en.wikipedia.org/wiki/List_of_S%26P_500_companiesb 중국 기업 목록: https://en.wikipedia.org/wiki/SSE_50_and_SSE_180_Indexes 독일 기업 목록: https://en.wikipedia.org/wiki/DAX#Components 일본 기업 목록: https://indexes.nikkei.co.jp/en/nkave/index/component 한국 기업 목록: http://marketdata.krx.co.kr/mdi#document=030402 Google Finance: https://www.google.com/finance <그림1> 월말 기준 데이터 변환
  12. 3-2. 내생변수 수집 및 전처리 [2/2] ➢ 결측 데이터 1차

    제거 ▪ 행(row) 기준: 데이터 수집 이후, 90% 이상 공백 존재하는 시점 제거 ▪ 열(column) 기준: 예측범위(2013년 1월~2016년 12월)에서 공백 존재하는 변수(기업) 제거 ➢ 결측 데이터 2차 대체 ▪ 1차 시점 제거 이후, 각 기업의 최초시점보다 앞 시점에 공백 존재할 때, 기업별 평균값 대체 ▪ 예측범위가 아닌 중간시점에서 공백 존재할 때, 인접 시점의 평균값 대체 13 3. 추가 데이터 매쉬업 – 내생변수 [3/4] Month Z1 Z2 Z3 Z4 Z5 … T_9501 … … … T_0803 … ... … … … T_1301 … .. … T_1612 … 학습범위 예측범위 T_9501~T_0802 시점 제거(90%이상 공백) Z3 관련 변수 제거(예측범위 내 공백 발생) Z4 속성별 평균 대체(앞 시점 공백 발생) Z5 인접 시점간 평균 대체(중간 시점 공백 발생)
  13. 3-3. 내생변수 변수선택 ➢ 대회제공 데이터 변수선택법(2-3절)과 프로세스 동일 ▪

    모델데이터 생성(T lag) ▪ (Step 1) 상관계수기반 1차 변수제거 ✓목적변수와 상관계수 0.3 미만인 입력데이터 변수는 제거 ▪ 증감률 기준으로 입력데이터 변환(diff X) ▪ (Step 2) 모델링기반 2차 변수선택 ✓(Step 2-1) L1 penalty @ Logistic Regression ✓(Step 2-2) feature important @ Ramdom Forest ✓(Step 2-3) 합집합 변수선택, 𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑙1)∪𝑠𝑒𝑡(𝑐𝑜𝑙𝑠_𝑟𝑓) 14 3. 추가 데이터 매쉬업 – 내생변수 [4/4] 목적변수|변수 집합 cols_total cols_corr cols_l1 cols_RF cols_union KOSPI 3117 707 86 129 179 SPX 7605 2543 1043 149 1095 SSEC 213 135 88 95 118 N225 3654 1121 468 180 518 GDAXI 396 126 57 90 98
  14. 4-1. 외생변수 개요 ➢ 경제심리지표 정의 및 외생변수 가정 ▪

    경제심리지수는 기업과 소비자 모두를 포함한 민간의 경제상황에 대한 심리를 종합적으로 수치화한 지표 ▪ 때문에 대중의 심리 변화는 주가지수 변동에 간접적으로 영향을 미치는 요소라고 할 수 있음 ▪ 언론에 의한 피동적인 심리 상태와 검색량을 통한 주동적인 관심도를 심리 변화에 대한 지표라고 가정 ➢ 외생변수 정의 ▪ 감정 점수(Sensitive score) ✓뉴스 텍스트데이터에서 주가 상승/하강 요인이 되는 변수(단어)를 학습해 감성 사전 구축 ✓특정 기간(1개월)동안의 감정 점수를 수치화하여 변수로 사용 ▪ 트랜드 변수 ✓Google Trend: 아래 국가에서 다음과 같은 키워드로 검색  한국 : Stocks, 증시; 경제; 코스피, KOSPI  미국 : Stocks; Economy; S&P  중국 : 个股, Stocks; 经济 , Economy; SSE Composite Index  일본 : 株式 ; 経済 ; 日経, Nikkei  독일 : Bestände, Stocks ; Wirtschaft, Economy ; DAX 15 4. 추가 데이터 매쉬업 – 외생변수 [1/3] Google News: https://www.google.co.kr/search?q=source:CNN&tbm=nws Google Trend: https://trends.google.com
  15. 4-2. 외생변수 수집 및 전처리 [1/2] ➢ CNN 주요 뉴스기사

    본문 수집 ▪ 2008년 1월부터 2016년 12월까지, 매달(월 단위) 주요 500개 뉴스기사 URL 수집 ▪ 이후, 매달(월 단위) 주요 500개 뉴스에 대한 본문텍스트 추출 ➢ 뉴스 텍스트데이터 전처리 ▪ 구두점 제거, 소문자화 >> 토큰화(tokenization) >> 어간추출(stemming) >> 불용어(stopwords) 제거 ▪ 이후, 같은 시점의 문서 통합 후 TF(term-frequency) Matrix 생성 ➢ 감정 사전 구축 ▪ 지난 달 대비 지수 변동 값(𝑌𝑇 = 𝑦𝑇 − 𝑦𝑇−1 )을 목적변수로 하는 모델링 적용 ✓이때 모델링은 Lasso Regression(𝛼 = 0.005) ▪ 모델링 결과, 각 변수(단어)의 계수(coefficient)를 단어의 감정 점수 값으로 갖는 감정 사전 구축 16 4. 추가 데이터 매쉬업 – 외생변수 [2/3] Term 1 Term 2 … Term N Y diff Doc(T_0801) … Doc(T_1212) Doc(T_1301) … Doc(T_1612) Input Out put 𝑌 = 𝛽0 + 𝛽1 ∙ 𝑇𝑒𝑟𝑚1 + 𝛽2 ∙ 𝑇𝑒𝑟𝑚2 + ⋯ + 𝛽𝑁 ∙ 𝑇𝑒𝑟𝑚𝑁 + ⋯ 𝑑𝑖𝑐𝑡_𝑠𝑒𝑛𝑡𝑖 = 𝑇𝑒𝑟𝑚1 = 𝛽1 𝑇𝑒𝑟𝑚2 = 𝛽2 ⋮ 𝑇𝑒𝑟𝑚𝑁 = 𝛽𝑁
  16. 4-2. 외생변수 수집 및 전처리 [2/2] ➢ 특정 시점의 감정

    점수 변수 생성, <그림1> 참고 ▪ 각 시점에서 Term Frequency와 단어 별 감정 점수의 선형결합을 통해 감점 점수를 계산 ➢ 감정 사전 업데이트, <그림2> 참고 ▪ 특정 단어에 대한 감정은 변하기 때문에, 감정 사전은 구축 시점을 기준으로 1년만 유효하다고 가정 ▪ 사전 구축 과정에서 학습기간을 누적시켜, 단어 별 감정 점수 업데이트 필요 ➢ 트랜드 변수 전처리 ▪ 월 단위 0~100 사이 관심도에 대한 점수를 제공 ▪ 감정 점수 변수 외 다른 변수와 동일하게, 모델 입력 데이터 생성(T lag) 및 증감률 기준 변환(diff X) 17 4. 추가 데이터 매쉬업 – 외생변수 [3/3] TF Matrix 𝑀 𝑏𝑦 𝑁 Dictionary 𝑁 𝑏𝑦 1 Senti Score 𝑀 𝑏𝑦 1 X = <그림1> 각 시점 별 감정 점수 계산 08’ 09’ 10’ 11’ 12’ 13’ 14’ 15’ 16’ <그림2> 감정 사전 업데이트
  17. 5-1. 모델링 개요 ➢ 모델링 프로세스 ▪ Part 1. 테이블

    병합(Merging Data) ✓대회제공 데이터, 내생변수 데이터, 외생변수 데이터 3가지 데이터 그룹 열(column) 단위 병합  이때 날짜(월 말일) 기준 병합 ✓이후 학습기간(2008년1월~2012년12월)과 예측기간(2013년1월~2016년12월) 구분해 행(row) 단위 분할 ▪ Part 2. 분류기 모델링(Classifier Modeling) ✓이진 분류 모형을 학습, 각 모형에서 최적 매개변수 탐색  이때 분류모형은 {KNN, Logistic Regression, Random Forest, XG boost, SVM} Classifier 사용 ✓각 최적 모형 중 예측 정확성(accuracy)가 가장 높은 모형을 적용해 최종 알고리즘 제안  이때 평가는 예측기간 통합데이터가 아닌 (학습기간에서 랜덤 분할한) Validation Dataset을 사용  Method: stratified k fold cross validation 18 5. 모델링 적용 및 평가 [1/4] 내생변수 데이터 외생변수 데이터 대회제공 데이터 통합변수 데이터 KNN LR RF XGboost SVM argmax 𝐴𝐶𝐶 𝒄𝒍𝒂𝒔𝒔𝒊𝒇𝒊𝒆𝒓(𝑝𝑎𝑟𝑎𝑚𝑠) Part 1. Merging Data Part 2. Classifier Modeling 학습기간 통합데이터 예측기간 통합데이터
  18. 5-2. 최적 매개변수 탐색 [1/2] ➢ KNN Classifier ▪ 𝑘

    = 5, 10, 15 , 𝑎𝑙𝑔𝑜𝑟𝑖𝑡ℎ𝑚 = {′𝑎𝑢𝑡𝑜′, ′𝑏𝑎𝑙𝑙_𝑡𝑟𝑒𝑒′, ′𝑘𝑑_𝑡𝑟𝑒𝑒′, ′𝑏𝑟𝑢𝑡𝑒′} ➢ Logistic Regression Classifier ▪ 𝐶 = 1.0, 0.1, 0.01, 0.001 , 𝑝𝑒𝑛𝑎𝑙𝑡𝑦 = {′𝑙1′, ′𝑙2′} ➢ Random Forest Classifier ▪ # 𝑜𝑓 𝑒𝑠𝑖𝑚𝑎𝑡𝑜𝑟 = 50, 100, 150, ⋯ , 1000 , max depths = {3, 4} 19 5. 모델링 적용 및 평가 [2/4] {KNN} SPX SSEC KOSPI GDAXI N225 Score 0.6458 0.4792 0.5000 0.3750 0.4167 Params {'algorithm': 'auto', 'n_neighbors': 5} {'algorithm': 'auto', 'n_neighbors': 10} {'algorithm': 'auto', 'n_neighbors': 15} {'algorithm': 'auto', 'n_neighbors': 5} {'algorithm': 'auto', 'n_neighbors': 10} {LR} SPX SSEC KOSPI GDAXI N225 Score 0.5000 0.5625 0.4375 0.3958 0.5208 Params {'C': 1.0, 'penalty': 'l2'} {'C': 0.1, 'penalty': 'l2'} {'C': 1.0, 'penalty': 'l2'} {'C': 0.001, 'penalty': 'l1'} {'C': 1.0, 'penalty': 'l1'} {RF} SPX SSEC KOSPI GDAXI N225 Score 0.7708 0.6666 0.6458 0.8125 0.6458 Params {'max_depth': 4, 'n_estimators': 800} {'max_depth': 3, 'n_estimators': 50} {'max_depth': 3, 'n_estimators': 50} {'max_depth': 4, 'n_estimators': 800} {'max_depth': 3, 'n_estimators': 450}
  19. 5-2. 최적 매개변수 탐색 [2/2] ➢ XG boost Classifier ➢

    SVM Classifier ▪ 𝐶 = 10−2, 10−1, 1, 10, 102 , 𝛾 = {10−2, 10−1, 1, 10, 102} 20 5. 모델링 적용 및 평가 [3/4] * 매개변수 조합 생략, 최종 매개변수 튜닝 결과 {SVM} SPX SSEC KOSPI GDAXI N225 Score 0.6458 0.4166 0.5208 0.5833 0.5833 Params {'C': 0.01, 'gamma': 0.01} {'C': 0.01, 'gamma': 0.01} {'C': 0.01, 'gamma': 0.01} {'C': 0.01, 'gamma': 0.01} {'C': 0.01, 'gamma': 0.01} {XG boost} SPX SSEC KOSPI GDAXI N225 Score 0.9833 0.9833 0.9500 0.9500 0.9166 Params {'n_estimators':160, 'learning_rate': 0.1, 'reg_alpha':0, 'subsample': 0.76, 'max_depth': 3, 'colsample_bytree': 0.8, 'min_child_weight': 4, 'objective' :'binary:lo gistic', 'scale_pos_weight':1, 'max_delta_step':0, 'gamma' : 0.1} {'n_estimators':160, 'learning_rate': 0.005, 'reg_alpha':0, 'subsample': 0.59, 'max_depth': 3, 'colsample_bytree': 0.4 'min_child_weight': 4, 'objective' : 'binary:logistic', 'scale_pos_weight':1, 'max_delta_step':0, 'gamma' :0.1} {'n_estimators':160, 'learning_rate': 0.1, 'reg_alpha':0, 'subsample': 0.78, 'max_depth': 3, 'colsample_bytree': 0.59, 'min_child_weight': 5, 'objective' :'binary:lo gistic', 'scale_pos_weight':1, 'max_delta_step':0, 'gamma' : 0.1} {'n_estimators':160, 'learning_rate':0.1, 'reg_alpha':0, 'subsample': 0.68, 'max_depth': 3, 'colsample_bytree': 0.51, 'min_child_weight': 2, 'objective' :'binary:lo gistic', 'scale_pos_weight':1, 'max_delta_step':0, 'gamma' :0.1} {'n_estimators':160, 'learning_rate': 0.1, 'reg_alpha':0, 'subsample': 0.44, 'max_depth':4, 'colsample_bytree': 0.64, 'min_child_weight': 0, 'objective' :'binary:lo gistic', 'scale_pos_weight':1, 'max_delta_step':0, 'gamma' : 0.1}
  20. 5-3. 분류모델 비교 ➢ 분류모델 평가점수 비교 ▪ XG boost,

    Random Forest, SVM 순서로 전반적인 평가점수가 좋음 21 5. 모델링 적용 및 평가 [4/4] 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 KNN LR RF XG boost SVM Score Classification Model SPX SSEC KOSPI GDAXI N225 KNN LR RF XG boost SVM 𝜇 0.4833 0.4833 0.7083 0.9566 0.5500 𝜎 0.1035 0.0665 0.0780 0.0279 0.0867
  21. 6. 결론 ➢ 결과적으로 XG boost classifier를 최종 알고리즘으로 선정

    ▪ 탐색한 최적 매개변수를 기준으로 전체 학습기간 통합데이터를 학습 ✓매개변수 탐색 과정에서 학습기간 통합데이터의 일부를 모형 평가에 사용하였기 때문 ▪ 그 결과 예측기간(test set)에 대한 평가점수는 다음과 같이 예상됨 ➢ 아쉬운 점 ▪ 텍스트데이터의 수집 범위가 짧아 학습 데이터가 충분하지 않았음 ▪ 각 국가별 경제지표 및 주식시장 별 개별기업들의 네트워크 분석 실패, [7. 별첨] 참고 ✓영향력이 높은 지표/기업을 해석하고자 했으나, 경제관련 도메인 지식이 부족해 해석 불가 ✓피어슨 상관계수 외 경제지표에 특화된 유사도 척도에 대한 이해 부족 ✓다만 종목추천리그에서 활용될 수 있을 것으로 기대됨 22 합 점수 미국 46 0.9583 중국 45 0.9375 독일 42 0.8750 일본 39 0.8125 한국 40 0.8333 합계 212 0.8833 연도별 합 2013 57 2014 50 2015 56 2016 49 표준편차 3.5356
  22. 별첨 목차 23 1. 국가별 경제지표 네트워크 1-1. [한국경제] KOSPI,

    KR_INDEX 경제지표 네트워크 1-2. [미국경제] SPX, US_INDEX 경제지표 네트워크 1-3. [중국경제] SSEC, CN_INDEX 경제지표 네트워크 1-4. [일본경제] N225, JP_INDEX 경제지표 네트워크 1-5. [독일경제] GDAXI, DE_INDEX 경제지표 네트워크 2. KOSPI 주식시장 내 기업 네트워크 2-1. A 집단(component) 2-2. B 집단(component) 2-3. A,B 집단(component) 비교
  23. 24 ❖ [한국경제] KOSPI, KR_INDEX 경제지표 네트워크 한국경제와 관련된 경제지표

    간 상관관계를 바탕으로 유사도를 측정하여 KOSPI와 유사한 지표들이 서로 유사한 관계를 갖는 것을 알 수 있다. 한편 지표 간 유사한 관계를 갖는 관계의 모습에서 지표 군집을 정의 할 수 있음
  24. 26 ❖ [중국경제] SSEC, CN_INDEX 경제지표 네트워크 중국 경제지표 네트워크는

    2개의 그룹을 형성 경제지표에 대한 도메인 지식이 있다면, 각각의 그룹이 어떤 지표들인지 탐색해 볼 가치가 있다고 생각됨 그리고 특징이 있다면 목적변수인 종합주가지수에 대한 노드가 삭제됨 이는 경제지표가 주가지수와 상관관계가 크지 않다고 해석할 수 있음
  25. A B 29 ❖ KOSPI 주식시장 내 기업 네트워크 상관관계

    cut off 0.5 상관관계 Cut off :0 B A KOSPI 구성 기업 전체에 대한 주가 변동 다중 상관관계 네트워크에 대해 상관계수 cut off 를 높은 곳에서 점차 줄이면 2개의 큰 집단(component)이 발생하는 것을 확인 할 수 있다.
  26. 30 ❖ A 집단(component) 상관관계 cut off 0.7 구성하고 있는

    기업 목록을 보면 STX, 한진, 현대미포조선 등의 조선업과 중공업 관련 기업이 묶이는 것을 확인 할 수 있다. 이들 기업은 최근 5년 이상 꾸준히 주가가 하락하는 패턴을 보인 기업들이다. 상관관계 cut off 0.55 상관관계 cut off를 낮췄을 때 조선, 중공업 관련 기업(주황색) 외에 석유 화학관련 기업(초록색)이 추가 되었다. 석유 화학 관련 기업은 2008년과 2011년에 봉우리 모양의 급격한 상승 후 하락 이라는 패턴을 보인다.
  27. 31 ❖ A 집단(component) Cut off를 0.52 수준으로 낮추면 금융

    관련 회사들의 연결이 발생한다. 이 들 기업들도 2008년과 2011년 사이 주가 하락이 보인다.
  28. 32 ❖ B 집단(component) 상관관계 cut off 0.56 B 집단은

    A 집단에 비해 더 낮은 cut off 에서 집단이 발생한다. Cut off 0.56에서 B 집단을 구성하는 기업은 주로 약품 관련 기업으로, 비교적 최근에 상장된 기업이 많다. 주가는 2015년에 급격히 증가 했고, 최근에 감소하는 패 턴을 보인다. 2015년에 급증한 이유는 메르스와 관련 있어 보인다. 상관관계 cut off 0.53 Cut off를 조금 낮추었을 때 추가 되는 기업들은 주로 식품회사이다. 이들 기업 역시 약품 회사와 마찬가지로 2015년을 기점으로 급증하고, 최근에 감소 추세를 보이는 기업들이다.
  29. 33 ❖ B 집단(component) Cut off를 0.5까지 낮추면 건설, 부품

    등의 회사와 연결 된다. 연결 된 기업 중 가장 특이한 기업 은 호텔신라이다. B 집단의 주요 구성 기업이 약품 및 식품 기업이고, 이들의 주가 변동이 2015 년 메르스 파동 때문이라면 관광 관련 기업의 주가는 그 시기에 떨어져야 하지만, 오히려 약품 기업의 주가 패턴과 상당히 유사한 패턴을 보인다.
  30. 34 상관관계 cut off 0.47 한국 기업의 주가 변동 네트워크에서

    두 집단은 비교적 뚜렷한 차이를 보인다. A 집단은 조선, 석유, 금융 관련 기업들로 주가 데이터가 10년 이상 있는 기업들이 대부분인 반면 B기업들은 약품 및 식품 관련 기업들로 조회되는 주가 데이터가 5년이 안되는 기업들이 많다. B 집단 기업 중 10년 이상의 주가 조회가 되는 기업들은 한미약품, 유한양행, 한샘 등으로 이 기업들은 2008년과 2011년에 급격한 변화가 관측 되지 않은 기업들이다. 네트워크를 이번 주가 예측에는 활용하지 못했지만, 주가 변동의 유사성을 활용한다면 실질적 인 위험 분산을 위한 투자에 유용한 정보가 될 것으로 보인다. 예를 들어 L 이라는 사람이 2007년 많은 기업의 주식이 상승 하는 시점에서 조선, 금융, 석유 분산 투자 했다면 2008년에 엄청난 손해를 봤을 것이다. L 입장에서 분산 투자를 했다고 생각 하겠지만, 주가 변동측면에서 보면 유사한 기업들로, 위험 분산이 되지 않는 투자이다. 만약 L이 주가 변동의 유사성을 미리 알았더라면 식품이나 약품 관련 기업에 투자 하여 실질적인 위험 분산을 할 수 있었을 것이다. ❖ A, B 집단(component) 비교