5. 4
1. 주식투자자가 파이썬을 통해 얻을 수 있는 효과
고집이 쎄짐
노안
체력감소
기억력 감소
한정된 인맥
…
자동화 인간의 본성 극복 새로운 통찰력
고집, 집착
변화에 대한 두려움
손실 두려움
특정 수익모델 집착
…
“ 데이터 수집/분석 자동화”
“ 단순 작업 자동화”
“ 분석 자동화”
“ 실시간 자료 수집”
“ 시스템 트레이딩”
“ 알고리즘 트레이딩”
“ 성과 모니터링”
“ Machine Learning”
“ 다양한 라이브러리”
그리고 ???
6. 5
1. 주식투자자가 파이썬을 배워야 하는 이유
“ 파이썬은 주식 투자자에게 있어 엑셀 또는 HTS 역할을 할 것입니다.”
“ 파이썬을 잘한다고 해서 반드시 좋은 성과를 낼 수는 없지만,
없어서는 안 되는 도구가 될 것입니다.”
8. 7
파이썬으로 매우 급격한 시간 절약과 효율성 증대를 달성할 수 있음
또한 머신러닝을 활용하여 인간의 눈으로 보지 못하는 새로운 패턴을 발견할 수 있음
2. 파이썬으로 할 수 있는 것들
공시/뉴스 검색
정기 데이터 업데이트 및 분석
실시간 시장 데이터 모니터링
기술적 분석
실적 발표 체크
자동화
확장성/ 맞춤형
머신러닝
다른 언어보다 상대적으로
쉽게 활용 가능
주식 투자자들이 사용하는 분석법
.
.
.
9. 8
2.1 가격 패턴 분석
프로그래밍을 활용한다면?
• 인간의 눈으로 주가 가격 그래프 분석
• 장점 – 오랜 경력의 프로 투자자의 경우 미묘한 패턴 등을
감각적으로 분석하여 활용할 수 있음
• 단점 – 다수의 종목을 확인할 경우 시간이 많이 걸림, 직감
의존 한계, 과거 사례 등 체크 가능성
기존의 방식
시간의
절약
• 2,000개 이상의 종목 패턴 검색 가능
(2,000개 종목의 2년치 데이터를 600개
구간으로 나누어 분석해도 3분안에 처리가능)
시뮬레이
션 가능
• 해당 패던이 존재했던 과거 유사사례 분석
• 유상증자 전후 및 IPO 주가 패턴
본인의
방식으로
• 기존 HTS 검색기 외에도 본인의 특성에 맞는
양식 개발하여 원하는 방식으로 Reporting
• 하락각도, 패턴기간, 종목조건, 분석대상 등
새로운
패턴의
발견
• 본인이 설정한 패턴 외의 새로운 패턴 제시
• 머신 러닝의 유사도 찾기 및 군집화 알고리즘
10. 9
2.1 가격 패턴 분석
원하는 패턴
정의
자료 입력
자료 처리 및 분석
활용 및 리포팅
• 본인이 원하는 가격 차트 패턴 정의 과정
• 종목, 직접 그린 패턴, 분석대상의 특성, 시가총액, 업종, 이벤트 등
• 차트 패턴 정의 후 list 형태로 입력
1) 원하는 종목과 기간을 지정하여 list로 변환 후 입력
2) 원하는 수식을 지정하여 입력
3) 패턴을 간소화하여 list로 변환하여 입력
• 입력된 자료 처리 – Scikit Learn 등의 모듈 사용
• Cosine Simillar, DTW 등의 모델 이용하여 유사한 패턴 검색
• 현재 시점 기준, 또는 특정 기간 등을 기준으로 설정하여 분석
• 원하는 양식으로 변환하는 과정을 시각화
• 과거 시뮬레이션 시 유사한 패턴 및 이후 성과 분석
• 현재 시점 유사도 기준으로 패턴 정렬
11. 10
2.1 가격 패턴 분석
Cosine Similar
라이브러리 소개
DTW PIP
• 기간의 간격이 정해져 있으며 비교적 짧은
기간의 패턴 분석에 유용함
• 시계열 자료 이외의 분석에도 유용
• 기간의 간격이 유동적일 경우 유용함
• 과거 사례 검색에 도움
• 초단기 패턴 분석에 유용
• 차트 패턴 중 돌파, 지지, 저항 등과 관련된
로직 작성에 유리
• PIP로 전처리 이후 Cosine Similar
라이브러리 사용 시 유용함
12. 11
2.1 가격 패턴 분석
Cosine Similar 분석 예시
[…………………………………………………….………………………..]
[…………………………………………………….………………………..]
13. 12
2.2 정기데이터 업데이트 및 분석
프로그래밍을 활용한다면?
• 오전에 일별로 다양한 정보를 체크
• 뉴스 또는 수치화된 정보를 체크함
• 상당히 다양한 정보가 있어 일일이 체크하기가 어려움
• 또한 당일 시장과 연동되는 핵심 지표 등을 선정하는데
물리적 한계 존재
기존의 방식
시간의
절약
• 시장의 중요한 변수로 작용할 수 있는 3,000개
이상의 지표를 손쉽게 처리 가능
• 원하는 패턴이 올 경우 해당 지표 자동 알람
시뮬레이
션 가능
• 해당 지표의 해당 패턴이 있었던 과거 사례
검색 가능함
• 과거 사례 분석에 따른 패턴화 가능
본인의
방식으로
• 경제뉴스 상의 핵심 지표만이 아닌,
• 본인의 관심종목과 시장 패턴에 맞추어 알람
• 주식에 영향을 줄 수 있는 상황 자동 알람
비정형
데이터
확인가능
• 정형화된 데이터 외에도 구글 트랜드, 쇼핑몰
데이터, 뉴스 분석, 산업지표 등도 크롤링하여
분석 가능
14. 13
2.2 정기 데이터 업데이트 및 분석
필요한 자료 및
처리 방법 정의
자료 수집
및 입력
자료 처리 및 분석
활용 및 리포팅
• 체크해야 할 주요 지표의 정의
• 경제데이터(환율, 유가, 상품가격 등), 해외주식(미국, 일본 등의 각 산업별 분류),
산업지표(수출입 데이터, 산업협회 자료 등)
• 각 지표별 수집 및 처리 방법 정의
• BeautifulSoup 모듈 활용
• Selenium및 팬텀js 모듈 활용 데이터 수집
• MySQL 등을 통해 입력
• 원하는 가격 패턴 분류(List 형식)
• 입력된 자료 처리 (Scikit Learn 등의 모듈 사용)
• Cosine Simillar, DTW 등의 모델 이용하여 설정한 패턴에 부합하는지 여부 판별
• 각 자료 별 우선순위 부여 알고리즘 개발
• 조건 발생 시 휴대폰 알람
• 각 조건 별 시뮬레이션 및 유사사례 점검
15. 14
2.3 실시간 시장 데이터 모니터링
• 투자자별 동향, 주가, 거래량 등에 대한 정보를 주로 HTS 등을
통하여 확인
• HTS 기능이 발전함에 따라 다양한 기능 사용 가능하지만
본인만의 전략 관련 수집하는데는 제한적
• 특히 다양한 종목을 검색할 경우 누락 등의 우려 있음
기존의 방식 프로그래밍을 활용한다면?
시간의
절약
• 전 종목에 대하여 원하는 조건에 따라 검색
• 증권사 API 활용 시 다양한 지표 및 조건식을
한번에 처리 가능함
시뮬레이
션 가능
• 해당 조건에 대한 과거 사례 모니터링 가능
• MySQL 등을 활용하여 시간대별 DB구축 가능
본인의
방식으로
• HTS 기능 등을 본인에 최적화되도록 사용
• 특정 종목군, 조건별 (시간대, 외국인 등) 정렬
16. 15
2.3 실시간 시장 데이터 모니터링
필요한 자료 및
처리 방법 정의
증권사 API 연동
자료 처리 및 분석
활용 및 리포팅
• 체크해야 할 주요 시장 데이터 정의(외국인 수급, 주체별 수급, 주가 데이터, 창구별 현황 등)
• 체크 주기, 조건 등에 대한 명확화
• 실시간 데이터의 경우 인터넷 상에서 수집 어려움
• 키움증권, 대신증권 등의 API 활용
• 수집한 데이터에 대한 조건 처리, 설정한 패턴에 부합하는지 여부 판별
• 각 시간대별로 MySQL에 DB화 시킴
• 각 조건 발생 시 Alarm 및 Reporting 기능
• 각 조건 별 DB 저장 자료를 통한 과거 사례 분석
18. 17
2.4 공시/뉴스 발송 및 분류
• 기업 공시 및 뉴스에 대하여 HTS 또는 금감원 전자공시
사이트 이용(또는 일부 앱 이용)
• 계속 보고 있지 않으면 중요한 뉴스를 놓칠 가능성 있음
• 단기적인 대응만 가능할 수 있음
• 워낙 많은 정보로 인해 꼭 필요한 정보가 묻힐 수 있음
기존의 방식 프로그래밍을 활용한다면?
시간의
절약
• 특정 키워드에 맞는 뉴스/공시 발생 시
텔레그램 발송
시뮬레이
션 가능
• 해당 공시에 대하여 유사한 사례의 공시와
당시 퍼포먼스 검색 가능
확장성
• 공시의 종류별로 저장하여 과거 사례 분석
(기업분할, 액면분할, 유상증자, 상장 등)
• 주가 패턴과 연동 가능
19. 18
2.4 공시/뉴스 발송 및 분류
Key Word 및
특성 설정
데이터 수집
자료 처리 및 분석
활용 및 리포팅
• 검색하려고 하는 Key Word 설정
• 각 Key Word의 특성 구분(장기-단기, 이벤트성, 이슈성-펀더멘털성 필요성 등)
• BeautifulSoup, Selenium및 팬텀js 모듈 활용 데이터 수집
• 전자공시 사이트 및 증권사 API 연동, Naver, Google 등 뉴스면 활용
• 언론사별 RSS 등 활용
• 뉴스/공시별 Key Word의 특성에 맞추어 처리 진행
• 장기성, 이벤트성, 펀더멘털성의 경우로 분류하여 처리
(Telegram API 활용)
• 각 조건 발생 시 Alarm 및 Reporting 기능
• 각 조건 별 DB 저장 자료를 통한 과거 사례 분석
• 주가 위치별로 중요한 국면일 경우 발송 가중치 부여
23. 22
3.1 프로젝트 정의 및 범위
프로젝트
정의
• IPO 종목의 주가 예측
범위
• 국내 KOSDAQ, KOSPI 시장에 신규 상장하는 종목을
대상으로 함
• KONEX 이전 상장, OTC 이전상장 등은 포함
• 기업 인적분할을 통한 신규상장, ETF 등은 제외
목표 결과
• 일반적인 주가 예측 모형은 해당 종목의 예상 수익률 및
변동성 등을 예측함
• IPO의 경우 투자자 입장에서 볼 때, 예상 수익률보다는
공모가 대비 시초가, 상장 이후 주가 움직임을
패턴화하여 나타내는 것이 더욱 가치 있는 결과물이 될
수 있음
결과 패턴
목표 결과
• IPO 예측에 필요한 핵심변수 24개를 선정함
• 해당 변수를 구간별로 나눔
• 각 종목에 대한 Cosine Similarity 이용함
• 공모가 대비 상승하였으나 이후 지속 하락 패턴
• 공모가 부근의 시초가 형성 이후 지속 성장 패턴
• 초기 조정 이후 상승세 나타내는 패턴
• 공모가 하회 이후 지속 하락하는 패턴
24. 23
3.3 주요 변수의 정의
IPO 주가 형성에 영향을 미치는 변수 24가지 추출함.
총 60개 선정 이후 중복성, 중요도, 계량화 가능성 등을 검토하여 범위 축소
각 단계는 1~5로 구분. 일부는 clustering 기법 활용하였으며, 일부는 투자자입장에서 유의미한 기준 구분
25. 24
3.4 데이터 수집
IPO 주가 형성에 영향을 미치는 변수 24가지 추출함.
총 60개 선정 이후 중복성, 중요도, 계량화 가능성 등을 검토하여 범위 축소
각 단계는 1~5로 구분. 일부는 clustering 기법 활용하였으며, 일부는 투자자입장에서 유의미한 기준 선별
26. 25
3.5 유사 종목 검색
각 종목별로 점수 입력하여 List 작성
Cosine Similarity 활용하여 유사도 계산함
해당 종목 입력 시 각 종목별로 과거 유사도가 높았던 종목 위주로 검색
28. 27
3.7 결과
해당 종목을 입력 시 각 종목별로 과거 유사도가 높았던 순으로 검색, 2011년 이후를 분석기간으로 선정하여 기본 데이터는 289개 종목 활용함
데이터가 누적된 2015년 이후 110개 종목에 대한 분석결과 ‘시초가‘ 항목의 경우 85%, ‘당일거래’ 항목은 73%, 상장 후 주가 패턴의 경우 ’66%’의
유의미한 유용성을 보임
대형주의 경우 적중도가 낮았고 반면에 중소형주는 매우 높은 정확성 보임
(대형주는 분석이 상당부분 이루어져 과거 데이터만으로는 초과 수익 가능성 높지 않음)
단순히 과거 적중율보다는 새로운 패턴 발견과 종목군 분류를 통해 투자 Insight 향상
29. 28
결론
프로그래밍 학습을 통해 서로를 보완할 수 있음
기계의 영역
“ 빅데이터와 머신러닝으로 대표”
“ 인프라 및 데이터 가공이 중요”
“과거 데이터를 통한 패턴 파악"
“ 초단기 매매에 적합”
“Passive 투자, 자산배분 등에
주로 활용”
인간의 영역
“ 직감, 통찰력 등으로 대표”
“ 경험 및 재능 등이 중요”
“ 패러다임 및 트랜드 변화 인식"
“중기, 장기 투자에 적합“
“집중 투자에 활용 가능"