분석6기 4조

39
빅데이터 분석전문가 6기 4조 (주가변동 분석을 통한 주가예측) 조원: 권오성 곽재원 박상현 박용 신은비 멘토: 안정국

Transcript of 분석6기 4조

Page 1: 분석6기 4조

빅데이터 분석전문가 6기 4조 (주가변동 분석을 통한 주가예측)

조원: 권오성 곽재원 박상현 박용 신은비

멘토: 안정국

Page 2: 분석6기 4조

결론 Target: KT training data set: 2013.1.1~2013.12.31

test data set: 2014.1.1~2014.6.30

분석모델 종속변수(NEXTDAY)

• 3일 선형가중편균(WMA)에 대해 수급량을 고려한 5일 지수 가중평균(DEMA)의 Delta값의 3일 후의 값 예측

설명변수 • Close, High, ROC2, RSI2, RSI4, 2~4일 SMA 등

시뮬레이션 방법 종속변수의 부호에 따라 일괄 매수/매도 포지셔닝

성과

2

true

pred s b

s 46 9

b 15 67

$diag

[1] 0.8248175

$kappa

[1] 0.6419081

$rand

[1] 0.7088879

$crand

[1] 0.4176885

‘14.1.2 ‘14.6.30 ROC

주가 30,900 30,550 -1.1%

투자액 100만 107.6만 +7.6%

Page 3: 분석6기 4조

목차

3

1. 개요

2. 데이터 마트의 구성

3. 분석 방법

4. 분석결과

5. 향후 추가연구 방향

Page 4: 분석6기 4조

추진배경

빅데이터 아카데미 분석전문가 참여 동기

데이터의 수집

기존 사례

4

개요

Page 5: 분석6기 4조

프로젝트의 목적

첫째

둘째

셋째

5

개요

Page 6: 분석6기 4조

주식투자의 방법

6

개요

Page 7: 분석6기 4조

분석 개념도(1)

프로젝트 시작 단계 – 모멘텀 장기투자 모형

7

개요

EGARCH

주요 경기 선행지수

(원자재, 환률 등)

KOSPI200 선행지수

SVM

KOSPI200 선행지수 식별

선행지수의 시계열 예측 / KOSPI200 회귀식

KOSPI200(t) =a+b1X1+…

REGRESSION

KOSPI200 편입종목

미래 상승 국면 포착

투자 타겟 종목 선정

투자 타겟종목

KOSPI와

상관관계가 크고

AND

변동계수가 높음

AND

시계열 상승예상

AND

거래량 일정 이상

AND

1년 전 상승종목

재무정보 판별식

CORR

투자시점 예측

KRX

재무정보

ARIMA

SUMMARY

ARIMA

Page 8: 분석6기 4조

모델 Pool

Simulation

Performanc Analytics

매매전략 수립

Accuracy Profit Rate

종목 A

분석 개념도(2)

프로젝트 실행 단계 – 기술적 단기투자 모형

8

개요

Quantmod

분석 Pool - 종목 list

예측변수 선정/ 파생변수 후보

생성

Box-Cox

선행지수의 시계열 예측 / KOSPI200 회귀식

상관관계 시계열 다중회귀

RandomForest

종목별 모델 수립

투자 타겟 종목 선정

EGARCH

SVM

분석 data 수집/확보

FEEDBACK

설명변수 선정

Simulation

Performanc Analytics

매매전략 수립

Accuracy Profit Rate

종목 A

Simulation

Performanc Analytics

매매전략 수립

Accuracy Profit Rate

종목 A 종목 선택

실전 투자

모델 pool

Page 9: 분석6기 4조

SVM 소개

SVM(Supported Vector Machine)

판별, 회귀분석을 위한 학습모형으로서

범주를 판별하는 hyperplane을 찾아 분류하는 방법

특징

대용량 data와 많은 설명변수를 가지고도 빠르고 쉽게 적용이

가능하다.

R에서는 e1071, kerlab 등의 패키지를 이용할 수 있다.

9

개요

Page 10: 분석6기 4조

SVM의 주요 파라메터

kernel:

hyperplane이 일반적으로 선형이 아니므로, 변수변환을 실행해야 한다.

변수변화을 위한 함수라 생각하면 된다.

linear, polynomial, radial basis and sigmoid 등이 있다.

gamma: parameter needed for all types of kernels except linear (default: 1/(data dimension));

cost: cost of constraint violation (default: 1). This is the ‘C’-constant of the regularization term in the Lagrange formulation;

10

개요

Page 11: 분석6기 4조

RandomForest 소개

11

개요

M

N

m1

n1

m2

n2

m3

n3

m4

ni

Original Data: N x M - N개의 data와

- M개의 변수

Sample Data: ni x mi single classification

voting1 voting2

voting3 voting[i]

최적의 결과 선택

Forest Tree

Page 12: 분석6기 4조

RF의 주요 파라메터 Option을 결정하는 2 개의 random forest object OOB

Proximity

Tree error 추정방법 training set에서 tree를 추출할 때, 1/3의 자료가 남는다.

tree가 forest에 포함될 때, 남는 자료인 OOB(out-of-bag) data가 분류오차에 대한 비편향 추정에 사용된다.

또한 변수의 중요도를 추정하는 데도 활용된다.

Proximity tree가 만들어지면, 모든 data가 각 tree에서 구동되며,

각 자료의 쌍에 대한 proximity가 계산된다. • 이때, 동일 node에 속하는 자료 쌍의 proximity는 1이 증가한다.

• proximity는 tree의 수만큼 나뉘어 마침내 정규화된다.

이 proximity는 결측치, 이상치를 추정하는데 사용된다.

데이터에 대한 저차원의 뷰를 제공한다.

12

개요

Page 13: 분석6기 4조

변수의 중요도 숲에 나무가 자라면, OOB들은 각 나무의 정확도를 voting한다.

각 OOB에 대해 정확한 범주를 voting한 수에서 변수 m을 임의의 값으로 치환한 후, 정확한 범주로 voting한 수를 뺀다.

forest내의 모든 tree에 대해 적용할 때, 이 평균값이 변수 m에 대한 raw importance score이다.

각 tree간에 있어, 변수 m에 대한 값은 독립이라면, 표준 오차는 고전적인 방법으로 구할 수 있다.

많은 data set에 적용해 보았을 때, 상관관계는 매우 낮았다.

Z-score는, 표준오차로 나누어 표준화된 중요도이다.

local importance score 하나의 tree에 대해 OOB가 되는 다른 tree에 대해

score를 구한 값이다.

13

개요

Page 14: 분석6기 4조

내용

원시 데이터

종목 list: 분석 종목 pool

주가data: OHLC time series

세력(외인/기관) 수급

거시경제 변수

파생 데이터: 설명변수

ROC(Volume; 거시경제변수)

SMA(Close) 등

Transformation

예측 변수

n.day간의 수익률

내일의 상승/하락 시그널

14

2. 데이터마트의 구성

원시 데이터

파생 데이터 예측 변수

생성

모델

검증 투입

Page 15: 분석6기 4조

원시data> 종목 list

종목 list

KOSPI200 편입 종목

증시 테마주

중소형 성장주 (자동차 부품주 등)

수집 방법

수동 수집

자동 수집(crawling)

data 구조

15

2. 데이터마트의 구성

변수명 name code

type char char

설명 종목명 종목코드

예 삼성전자 030200.KS

Page 16: 분석6기 4조

원시data> 주가 data

주가 data

종목에 대한 OHLC 구조의 time series data

수집 방법 및 data 구조

data 구조

16

2. 데이터마트의 구성

수집방법 수동 R 패키지 crawling

관련 패키지 fImport quantmode quandl XML

데이터 소스 krx 야후금융 야후금융 야후금융 다음증권

데이터 형태 xls, csv xts, csv,

data.frame

xts, csv,

data.frame

xts, csv,

data.frame

data.frame

특징 +세력수급 정보

Volume이 0인 data도 존재

OHLC의 data만 가능

+세력수급+외인보유

변수명 Open High Low Close Volume Xvol Yvol

설명 시가 고가 저가 종가 매매량 관순매수 외순매수

Page 17: 분석6기 4조

원시data> 거시경제 변수

개별 주가에 영향을 미치는 지수

환율, 유가, 반도체 지수 등

수집 방법 및 data 구조

data 구조

17

2. 데이터마트의 구성

수집방법 수동 R 패키지 crawling

관련 패키지 fImport quantmode quandl XML

데이터 소스 한국은행 야후금융 야후금융 야후금융 다음증권

데이터 형태 xls, csv xts, csv,

data.frame

xts, csv,

data.frame

xts, csv,

data.frame

data.frame

특징 일부 국내 증시 개장일과 unmatch 일부

변수명 FXrate sox wto

설명 환율 반도체 유가

Page 18: 분석6기 4조

파생변수

설명변수의 후보: 약 40여개 점차 증가

주가 및 지수의 모멘텀, 이동평균

주가 수급량, 외인 보유율의 변동

위 두가지 변수들간의 조합 패턴

작성 방법

기술적 변수: quantmode, TTR을 활용한 함수 적용

패턴: 주식 관련 서적 활용한 수동 생성

내용

18

2. 데이터마트의 구성

변수명 ROC SMA MACD Stoch RSI ATR DEMA

설명 - - - - - - -

적용 종가,

지수

종가, 지수 ROC

종가,

ROC

HLC 종가 HLC SMA

Page 19: 분석6기 4조

예측변수

투자여부를 결정할 종속변수

주가 변동율을 예측할 연속형 변수

상승, 하락 signal을 가지는 범주형 변수

내용

내일의 ROC 예측 변수

일정기간(주/월) ROC의 합에 대한 예측 변수

19

2. 데이터마트의 구성

변수명 NEXTDAY T.sig

설명 ROC ROC 합

적용 미래 종가 SMA(미래 종가)

Page 20: 분석6기 4조

분석 절차

20

3. 분석 방법

주가 data 수집

분석 종목 선정

외인/ 기관 data 수집 거시경제 지수 수집

예측 변수 생성 파생변수 생성

예측변수 선정

모델검증을 위한 목적에 적합한가? - 투기 대상 종목은 회피

자료의 무결성 검증

탐색적 분석/ 이상치 여부 - 시계열, 산점도, 상관계수, 회귀

Random Forest를 이용한 중요 변수 선정

분석모델 선정: SVM 예측도가 가장 높다는 연구보고서

학습데이터, 시험데이터 작성 모델튜닝(커널, gamma, cost 등)

Accuracy, Precision, Specification

실제 주가의 변동량 대비 수익율

분석모델 선정

분석모델 구성

모델 평가

Feed-back

시뮬레이션

Page 21: 분석6기 4조

데이터마트 생성 조건

Volume > 0 자료만 포함

거래 정지 또는 장이 열리지 않은 자료는 제외

거시경제변수

파생변수의 생성조건

• 장 개시일에 맞게 거시경제 파생변수를 생성

• 장 개시일과 무관하게 거시경제에 대한 파생변수를 생성 – 환률의 폭락이 토요일 관측되더라도, 이 값을 빼고 분석하는 것이

아니다.

생성된 파생변수는 장 개시일만 포함

• 장이 개시되지 않은 날이 길어질 경우 문제가 발생 – 거시경제변수 값 자체를 예측변수로 포함시켜 해결함

국내 주가와 거시경제지표의 장개시일이 틀림

향후 interleaving 방식으로 결합

결측치는 lag값으로 대치

21

3. 분석 방법

Page 22: 분석6기 4조

파생변수의 생성

TTR 패키지에 있는 기술적분석 변수사용

용어설명:

http://www.fmlabs.com/reference/default.htm?url=

SMI.htm

분석설명:

http://www.fntec.com/uploads/board/uboard.asp?i

d=t3&u=0&u_no=438

함수설명: http://cran.r-

project.org/web/packages/TTR/TTR.pdf

• ATR(average ture range): 변덕지수, 변동이 많으면

높음. 단기지표

• SMI(Stochastics Momentum Index) ....

22

3. 분석 방법

Page 23: 분석6기 4조

탐색적 분석(1)

챠트

23

3. 분석 방법

Page 24: 분석6기 4조

Close

2003-03-17 145

2003-03-18 150

2003-03-19 145

2003-03-20 165

2003-03-21 165

2003-03-24 155

2003-03-25 145

2003-03-26 135

2003-04-14 3045

2003-04-15 3500

2003-04-16 4025

1:21의 주식병합

발생

탐색적 분석(2)

이상치 탐색

24

3. 분석 방법

Page 25: 분석6기 4조

탐색적 분석(3)

시계열 분석 – CCF이용 선행지수 여부 파악

25

3. 분석 방법

Page 26: 분석6기 4조

탐색적 분석(4)

시계열 분석 – CCF이용 선행지수 여부 파악

26

3. 분석 방법

Page 27: 분석6기 4조

중요변수 선정

specifyModel로 quantmod object 생성

예측변수: T.ind(stock.data)

모든 변수를 포함

randomForest 모델 실행

training set

• 2002-01-02 ~ 2013-12-31(11년간)

importance 변수의 중요도 확인

중요도가 10 이상인 것만 변수에 포함하기로 결정

결과: Allimp.xls

주의

• 실행할 때마다, 기간설정에 따라, 중요도 값이 달라져

• 변수에 대한 변별력이 떨어짐.

• 최근 data로만 변수의 중요도를 설정하는 것이 필요

27

3. 분석 방법

Page 28: 분석6기 4조

SVM 튜닝

28

3. 분석 방법

> tuned <- tune.svm(NEXTDAY~., data = training,

+ gamma = 0.01*(8:10), cost = (8:10))

> summary(tuned)

Parameter tuning of ‘svm’:

- sampling method: 10-fold cross validation

- best parameters:

gamma cost

0.08 10

- best performance: 0.4137872

- Detailed performance results:

gamma cost error dispersion

1 0.08 8 0.4191457 0.03312440

2 0.09 8 0.4155665 0.02756318

3 0.10 8 0.4184314 0.02713497

4 0.08 9 0.4169977 0.03388194

5 0.09 9 0.4141481 0.02652986

6 0.10 9 0.4212860 0.02724787

7 0.08 10 0.4137872 0.03157594

8 0.09 10 0.4170053 0.02602342

9 0.10 10 0.4198650 0.03013390

Page 29: 분석6기 4조

모델 비교 및 피드백

추가사항

volume/ volume rate

거시경제지표

개선할 내용

복합 파생변수를 생성

29

3. 분석 방법

초기 모델

true

pred down up

down 3 12

up 32 73

Volume 추가 모델

true

pred down up

down 0 5

up 35 80

거시경제 추가 모델(n.day=5)

true

pred down up

down 25 20

up 27 42

거시경제 추가 모델(n.day=5)

true

pred down up

down 20 21

up 32 41

cost = 10, gamma=0.1 cost = 11, gamma=0.08

accuracy = 58.8%

<<

accuracy = 63.3%

거시경제 추가 모델(n.day=10)

true

pred down up

down 4 9

up 38 58

cost = 88, gamma=0.03

accuracy = 56.9%

Page 30: 분석6기 4조

모델의 재구성

설명변수의 축약

randomForest의 결과 중요도로 설명변수 압축

• myMACD(stock.data)는 처음 33개의 값이 결측치

specifyModel로 quantmod object 생성

trainset과 testset을 생성

trainset: (‘2001-01-02', ‘2008-12-31')

testset: ('2000-01-01', '2009-09-15‘)

30

3. 분석 방법

#modelData: Extract from a quantmod object the dataset created for use in

modelling

Tdata.train = as.data.frame(modelData(data.model,

data.window=c(‘2001-01-0 ', ‘2008-12-31')))

#data.window: a character vector of subset start and end dates to return

Tdata.eval = na.omit(as.data.frame(modelData(data.model,

data.window=c('2000-01-01', 2008-12-31'))))

Tform = as.formula('T.ind ~ .')

#xx(yy)형태 함수값이 xx.yy변수명명규칙으로 바뀜..

Page 31: 분석6기 4조

예측: neural network

scale을 이용한 변수 표준화 ~ N(0,1)

nnet을 이용한 예측 모델링

trainset의 첫 1000개의 data

predict를 이용한 예측

nnet 모델로 trainset의 다음 1000개를 예측

예측값을 신호로 변환

신호

• preds > 0.1: buy

• 0.1 > preds > -0.1: hold

• preds < -0.1: sell

예측결과: 정확도 43%

시뮬레이션 결과: - 수익률

31

3. 분석 방법

> sigs.PR(sigs.nn, true.sigs)

precision recall

s 0.1870748 0.3125000

b 0.1531100 0.1987578

s+b 0.1729622 0.2581602

> table(sigs.nn, true.sigs)

true.sigs

sigs.nn s h b

s 55 182 57

h 81 344 72

b 40 137 32

Page 32: 분석6기 4조

예측: neural network 2

모델의 변화

기존: T.ind를 예측하고, 예측 결과를 signal로 변환

변경: T.ind를 signal로 변환하고, signal을 예측

결과

precision은 다소 증가하였으나,

• 예상했던 것에 대한 실제(sell, buy)의 비율

recall은 오히려 떨어졌음

• 실제의 발생(sell, buy) 수에 대한 예상의 비율

32

3. 분석 방법

> sigs.PR(preds,

norm.data[1001:2000, 1])

precision recall

s 0.2620321 0.2784091

b 0.1909091 0.2608696

s+b 0.2088452 0.2522255

Page 33: 분석6기 4조

예측: SVM1

모델구성

train: Tdata.train의 첫1000개

test: train다음의 첫1000개

SVM파라메터

커널: radial

gamma=.001

cost=100

결과

sell, buy이 예측률은 높다.

그러나 대부분을 hold로 예측

튜닝이 필요

33

3. 분석 방법

> sigs.PR(sigs.svm, true.sigs)

precision recall

s 0.5555556 0.08522727

b 0.3000000 0.07453416

s+b 0.4029851 0.08011869

> table(sigs.svm, true.sigs)

true.sigs

sigs.svm s h b

s 15 4 8

h 151 641 141

b 10 18 12

Page 34: 분석6기 4조

예측: SVM2

모델변경

예측변수의 변경

• T.ind 대신에 signals를 사용

• s, b (hold를 제거)

train: 2013년도 trend가 유지되도록 최근만 활용

test: 2014년도

SVM 대신 ksvm을 사용

커널: radial

gamma=.01

cost=10

결과

약간의 개선

34

3. 분석 방법

Page 35: 분석6기 4조

삼성전자

35

4. 분석 결과

(+11.10 %)

(+2.40 %)

pred

true diag : 0.638

s b kappa : 0.265

S 52 30 rand : 0.534

B 17 31 crand : 0.069

Page 36: 분석6기 4조

현대중공업 pred

true diag : 0.469

s b kappa : 0.019

s 9 63 rand : 0.498

b 6 52 crand : -0.006

36

4. 분석 결과

(-28.62 %)

(-2.15%)

Page 37: 분석6기 4조

아모레 퍼시픽

37

4. 분석결과 pred

true diag : 0.669

s b kappa : 0.280

s 67 7 rand : 0.553

B 36 20 crand : 0.104

(+49.04 %)

(+54.72 %)

Page 38: 분석6기 4조

KT

38

4. 분석결과 pred

true diag : 0.815

s b kappa : 0.627

s 46 9 rand : 0.696

b 15 60 crand : 0.393

(-0.81 %)

(+ 7.59 %)

Page 39: 분석6기 4조

향후 계획

모델 개선

다양한 패턴을 반영하는 파생변수를 추가한다.

종목당 주기성을 파악하여, 시기별 대상 종목에

편입한다.

종목별/ 시기별 모델 library를 생성한다.

안정적인 모델 구성을 위한 기본적 분석에 충실

직접 투자

모델에 따른 직접 투자를 시도해 볼까?

39

4. 향후 계획