SlideShare una empresa de Scribd logo
1 de 115
Descargar para leer sin conexión
주가정보 다루기
한국폴리텍대학교 서울강서캠퍼스 스마트금융과(김효관 교수, 황원용 교수)
실습 과정
◦ matplotlib 등 주요 라이브러리 소개
◦ FinanceDataReader
◦ 종목 코드 수집
◦ 수익률 계산
◦ BeautifulSoup + Naver 금융을 이용한 주가 및 재무 정보 수집
◦ 중간 연습문제
◦ 정량 지표 정보 수집
◦ 정성 지표 정보 수집
사전 준비
◦ 실습 소스 git clone
git clone https://github.com/wonyongHwang/kopoStockModel.git
◦ PyCharm 준비
1. 파이썬 주요 라이브러리 소개
구분 라이브러리 비고
시각화 Matplotlib 차트 시각화 지원
분석
NumPy
수치 데이터 조작
배열 데이터 핸들링
Pandas
고성능
데이터 조작 라이브러리
크롤링
BeautifulSoup
Requests
웹 데이터 크롤링
1-1. Matplotlib
◦ 그래프나 2차원 데이터 시각화용 라이브러리
◦ 특정부분확대 등 그래프 조작 등 인터렉티브 차트
1-2. NumPy
◦ 빠르고 효율적인 다차원 배열 객체
◦ 배열 또는 배열간 연산 수행
◦ 데이터 Read/Write
◦ 선형대수 계산, 난수발생기
Pandas는 뒤에서 계속 다룰 예정…
1-3. 간단 실습
File -> Settings -> Interpreter에서
필요한 라이브러리 설치
- numpy
- matplotlib
source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/01%20matplotlib%20test.py
1-3. 간단 실습
용어 알아보기
• 미국시장에서는 종목을 식별하기 위해 영문알파벳 조합된 코드
야후(yahoo.com), 포브스(forbes.com) 같은 모든 경제 사이트에서 사용
• F (포드 자동차)
• GE (제너럴 일렉트릭)
• BAC (뱅크오브 아메리카)
• APPL (Apple inc, 애플), GOOG(Google, 구글), MSFT (Microsoft, 마이크로소프트)
용어 알아보기
• ^KS11: KOSPI composite index (거래소 지수) <- 증권거래소에 상장된 상장기업 주식
벤처회사를 제외한 주식들을 시가총액 가중평균방식을 통해 코스피에 상장된 전 주식을 평균화한 지수
• ^KQ11: KOSDAQ composite index (코스닥 지수) <- 국내 장외 주식 (벤처)
KOSPI에 상장이 불가능한 벤처기업들을 시가총액 가중평균 방식으로 산출하여 평균화
• 종목코드에 .KS가 붙는다 예를들어 삼성전자의 심볼은 005930.KS
용어 알아보기
• 시가총액: 회사가 발행한 전체 주식의 가치 (1만원 * 100주 = 100만원)
• 수정주가 (Adjusted Closing Price):
주가는 자본을 마련하기위해 새로 주식을 발행하거나(유상증자) 기존의 주주에게 무료로
배포하는(무상증자) 행위 또는 기존의 보유주를 2,3배로 바꿔주기도한다 (액면변경)
이처럼 시시각각 변하는 상황에 과거의 주가를 지금의 주식수를 기준으로 바꾸어주는 것을 수정주가라고 한다.
• 분할, 배당, 배분, 신주 발행이 반영된 주식 가격 데이터의 연속성을 보장하기 때문에 데이터 분석에는 “수정주가” 를 사용한다.
2. FinanceDataReader
• KRX Stock Symbol listings: 'KRX', 'KOSPI', 'KODAQ', 'KONEX’
• Global Stock Symbol listings: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍
• KRX delistings: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목)
• ETF Symbol listings(for multiple countries): 'KR', 'US', 'JP’
• Stock price(KRX): '005930'(Samsung), '091990'(Celltrion Healthcare) ...
• Stock price(Word wide): 'AAPL', 'AMZN', 'GOOG' ... (you can specify exchange(market) and symbol)
• Indexes: 'KS11'(코스피지수), 'KQ11'(코스닥지수), 'DJI'(다우존스지수), 'IXIC'(나스닥지수), 'US500'(S&P 500지
• Exchanges: 'USD/KRX', 'USD/EUR', 'CNY/KRW' ... (조합가능한 화폐별 환율 데이터 일자별)
• Cryptocurrency price data: 'BTC/USD' (Bitfinex), 'BTC/KRW' (Bithumb)
https://github.com/FinanceData/FinanceDataReader
2-1. FinanceDataReader를 활용한 주가정보 수집
◦ File  Settings  Interpreter 에
finance-datareader, beautifulsoup4 추가
2-2. FinanceDataReader를 활용한 주가정보 수집
◦ 현재일 기준 [720일 이전 ~ 1일전]의 주가 정보(시가, 고가, 저가, 종가, 거래량, 변화율)를 수집
today = date.today()
startday = date.today() - timedelta(720)
yesterday = date.today() - timedelta(1)
◦ 종목번호와 함께 시작일/종료일을 FinanceDataReader 함수의 인자로 전달
SEC = web.DataReader("207940", startday, yesterday)
◦ 종가와 거래량을 Matplotlib로 시각화
plt.subplot(211)
SEC["2020-05-06":"2022-05-06"]['Close'].plot(figsize=(16,4), style='b’)
plt.subplot(212)
SEC["2020-05-06":"2022-05-06"]["Volume"].plot(figsize=(16,4), style='g')
source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/02%20sample%20test.py
2-3. FinanceDataReader를 활용한 주가정보 수집
2-4. FinanceDataReader를 활용한 주가정보 수집
Q1> KOSPI, DJI 차트를 출력하세요.
Q2> 환율(USD/KRW) 차트를 출력하세요.
Q3> 비트코인(BTC/KRW) 차트를 출력하세요.
2-5. FinanceDataReader를 활용한 주가정보 수집
고가(high)
종가(close)
시가(open)
저가(low)
고가(high)
시가(open)
종가(close)
저가(low)
Candle Chart
한국에서는 양봉이 빨간색, 음봉이 파란색
미국은 양봉을 초록색, 음봉을 빨간색으로 표시
2-6. FinanceDataReader를 활용한 주가정보 수집
Candle Chart
사이트: https://kind.krx.co.kr/corpgeneral/corpList.do?method=loadInitPage
3. 종목코드 수집 타겟사이트
3. 종목코드 수집
source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb
필요 변수 및 함수 정의
3. 종목코드 수집 실행
3. 종목코드 수집 종목코드 수집
Q1> 전체 종목코드와 종목명을 저장하는 코드를 작성 하세요.
Q2> 전체 업종의 개수와 업종명을 분류하는 코드를 작성 하세요.
3. 종목코드 수집 연습문제(특정 조건에 해당하는 종목코드 가져오기)
단기 평균선이
장기 평균보다 가격이 높다는 말은 최근
에 가격성장폭이 커졌다는 뜻!
3. MA (이동평균) 계산과 GC/DC 그리기
source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb
3. MA (이동평균) 계산과 GC/DC 그리기
① N일 이동평균 구하기
- 값이 NaN일 경우 최소 하나의 데이터로 평균으로 가정
② 단기이평과 장기이평의 차이를 구함
- 차이가 + : Golden Cross
- 차이가 - : Dead Cross
3. MA (이동평균) 계산과 GC/DC 그리기
종가, 5MA, 20MA
거래량(Volume)
GC/DC
수익률 =
초기가격
(미래가격 – 초기가격)
투자한 자본에 대한 수익(혹은 손실) 의 비율
예) 100만원에 사서 150만원이 되면 수익률은 + 50% → (150-100) / 100
4. 주가 수익률 계산하기
일반 수익률 = (미래가격 – 이전가격) / 이전가격 → 수익률 합과 최종 손실률이 달라진다
ln 미래가격/이전가격 → 최종 수익률과 수익률 합이 일치 (금융분야에서 주로 사용)
거래일 가격 일반수익률 계산법 로그수익률 계산법
1일 1,000
2일 1,500 50 (1500-1000)/1000 40.54 ln(1500/1000)
3일 800 -46.67 (800-1500)/1500 -62.86 ln(800/1500)
4일 600 -25 (600-800)/800 -28.76 ln(600/800)
5일 1,500 150 (1500-600)/600 91.62 ln(1500/600)
수익률합계 78% 128.33% 50-46.67-25+150 40.54% 40.54-62.86-28.76+91.62
최종수익률 50% 50% (1500-1000)/1000 40.54% ln(1500/1000)
4. 주가 수익률 계산하기
plt.figure(figsize=(15,9))
today = date.today()
startday = date(2018,4,1)
endday = date(2018,6,27)
SEC = web.DataReader("207940", startday, endday)
SEC = SEC[SEC['Volume'] != 0]
SEC['Close'].head()
# 1 씩 shift
SEC['Close'].shift(1).head()
# 수익률 계산
SEC['Rate'] = np.log( SEC['Close'].astype(float) / SEC['Close'].shift(1).astype(float))
SEC.head()
4. 주가 수익률 계산하기
source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/04%20price-earnings%20ratio.ipynb
SEC["Rate"].plot(figsize=(16,4))
plt.show()
4. 주가 수익률 계산하기
5. 재무 정보 수집하기
from bs4 import BeautifulSoup
url = 'https://finance.naver.com/item/main.nhn?code=035720'
table_df_list = pd.read_html(url, encoding='euc-kr')
5. 재무 정보 수집하기
금융 시장 분석
기본 분석 기술 분석 정서 분석
• 재무제표, 주가와 손익
• 경기, 사업동향 분석
• 기술 분석을 위한 기초분석 단계
• 주관적이고 검증이 어렵다
금융 시장 분석 – 기본 분석
마켓상황 분석
• 과거 데이터 활용하여 추세 예측
• 과거데이터를 활용하여 추세선을 그리고 예측하는 작업
• 가격은 모든 정보가 반영된 종속 변수이다.
• 가격은 일정한 추세로 움직인다.
금융 시장 분석 – 기술 분석
과거 가격과 거래량의 변화를 분석하여 예측
• 자연어 처리, 텍스트 분석등을 통해 감성분석 후 정보를 추출
• 투자자들의 감성정보를 의사결정에 활용
금융 시장 분석 – 정서 분석
투자 심리 분석
기술 분석을 위
한 지표
용어 정리
◦ EPS (Earnings Per Share 주당 순이익)
당기순이익/발행주식수
예> EPS 4,165원 : 주식 1주가 4,165원의 이익을 창출
◦ PER (Price Earning Ratio 주가수익비율)
현재주가 / EPS
예> 19.14배 : 79,700원 / 4,165원 -> 현재 회사의 이익 대비 주가가 19.14배 비싸다는 의미
업종에 따라 PER 평균이 다름
◦ BPS(Book-value Per Share 주당 순자산)
(총자산 - 총부채) / 발행 주식수
예> BPS 39,126원 : 회사 자산 처분시 1주당 39,126원의 가치가 있음
◦ PBR(Price Book-value Ratio 주가순자산 비율)
현재주가/BPS
예> PBR 2.04배: 회사 자산 처분시 주당 39,126원을 받을 수 있는 주식이
그보다 2배 정도 높은 가격에 거래되고 있다는 의미
용어 정리
◦ PBR(주가순자산비율: Price Book-value Ratio)
- 현재자산 / BPS
- 낮을수록 건전성 ↑, 동종업계 타기업과 비교해 봐야 함
- 성장 가능성이 높을 경우 높은 수치를 나타낼 수 있기 때문에 보조적 판단 수단으로 사용해야 함
◦ PER(주가순익비율: Price Earning Ratio)
- 현재주가 / EPS
로직 구성에 참고할 만한 정량 지표 예시
◦ EPS(주당순이익: Earning Per Share) * 10
- 당기순이익 / 발행주식수
◦ ROE * EPS ± X
◦ PER * EPS
◦ 유동비율 : 최소 200% 이상
◦ 유보율(  (자본잉여금+이익잉여금)/납입자본금 * 100)
◦ MA120 G/C 한 종목 || MA60이 MA120을 3번 근접 및 우상향
◦ EPS 지속 증가하는 경우 || EPS 5년 연평균 성장률이 우상향
◦ 연평균 성장률 대비 PER(주가수익비율)이 낮은 기업
적정 주가 산출 참고식
* ROE(Return On Equity) : 자기자본이익율
당기순이익/자본총액
EPS * 10 = 5,777 * 10 = 57,770원
ROE * EPS = 15.21 * 5,777 = 87,868원
PER * EPS = 11.37 * 5,777 = 65,684원
로직 구성에 참고할 만한 정량 지표 예시
조별과제
주가 예측 과제
◦ 판단 로직 (예측 기준, 매수/매도 기준)
◦ 수집 대상 및 방법
◦ 예측 결과(Back Testing)
- 예측 모델(로직)의 수익성 판단을 위한 시뮬레이션 및 결과출력
정량 지표 수집
출처 : 네이버 금융(finance.naver.com)
정량 지표 수집
http://dart.fss.or.kr/
https://www.data.go.kr
[참고] 퀀트 테스트 (인텔리퀀트社)
출처 : 인텔리퀀트(https://www.intelliquant.co.kr/)
실시간 트레이딩
이베스트 Xing API를 활용한
실시간 트레이딩
DISCLAIMER
source : https://github.com/wonyongHwang/KopoScalpingTrader
※ 주가 정보 실습 목적으로 모의 투자만 진행합니다.
재학 기간 중, 실습 소소코드를 이용한 실 투자를 금합니다.
비대면 계좌 개설
https://www.ebestsec.co.kr/guide/eDirect/newid/GUJoinNewid0_01.jsp?left_menu_no=321&front_menu_no=1402&parent_menu_no=322
XING API 사용등록
XING API 다운로드
XING API 설치
모의투자 참가신청
◦ 실습 목적으로 모의투자만 진행
◦ 학교 실습 과정 중 실 투자 금지
API 명세 확인 및 테스트
◦ 접속서버는 “모의투자“
◦ 공인인증 : 필요없음(실서버 접속시에만 사용)
API Test (1/2)
◦ Res 파일 다운로드
API Test (2/2)
◦ 시세 조회
◦ 필드 및 데이터 확인
Anaconda 32bit 설치(1/2)
https://www.anaconda.com/products/distribution
※ 설치시 기 설치한 Anaconda 64bit 버전의
경로(C:ProgramDataAnaconda3)와 다른 경로에 설치
Anaconda 32bit 설치(2/2)
※ 체크 해제
실습 소스파일 준비
◦ git clone https://github.com/wonyongHwang/KopoScalpingTrader.git
프로젝트 준비
※ Anaconda 32 bit
※ 실습 소스 루트 디렉토리
※ Anaconda 32 bit
◦ 주요 라이브러리 확인
프로젝트 준비
계좌 로그인 테스트
source :
https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/pre
parations/loginTest.py
이벤트 처리 클래스
로그인 호출(+ 이벤트처리 클래스 콜백등록)
로그인 응답시까지 이벤트 대기 루프
주식종목조회(t8430)
※ 매우 주의!!!
주식종목조회(t8430)
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/basicApiTest.py
현재가 조회(t1102)
현재가 조회(t1102)
주식 차트 정보(t8413)
주식 차트 정보(t8413)
매매 체결의 법칙
◦ 가격 우선 (매수는 높은 가격, 매도는 낮은 가격 우선)
◦ 시간 우선
◦ 수량 우선
◦ 가격 > 시간 > 수량
호가 보는 방법
◦ 매수 잔량
◦ 매도 잔량
◦ 총 매수 잔량
◦ 총 매도 잔량
호가 보는 방법
거래 시간과 종류
출처 : https://securities.miraeasset.com/public/mw/guide/html/tradinghours.html
호가 단위
출처 : https://md2biz.tistory.com/515
◦ 일정시간 동안 거래를 모아서 적정가격을 자동으로 정함
◦ 거래 폭증에 따른 가격 왜곡 현상을 예방하기 위하여 장 시작 전 , 마감 전 등 특정 시점에 적용
◦ 변동성 완화장치 발동, 써킷 브레이커, 단기과열 지정, 투자위험종목 지정에도 적용
◦ 동시호가가 상한가 또는 하한가일 경우는 정량 배분 기준에 따라 수량을 배분
66,600
66,500
66,400
66,300
1,000
400 1,000
1,000
Q1> 동시호가 가격은?
동시호가
66,600
66,500
66,400
66,300
66,300
66,200
500
1,000
1,000
1,500
1,500
2,000
66,600
66,500
66,400
66,300
66,300
66,200
0
1,000
1,000
1,500
1,000
2,000
Q2> 동시호가 가격은?
동시호가
66,600
66,500
66,400
66,300
66,200
66,100
0
0
1,000
1,500
0
2,000
66,600
66,500
66,400
66,300
66,200
66,100
0
0
1,000
0
0
500
동시호가
66,600
66,500
66,400
66,300
66,200
66,100
0
0
1,000
0
0
500
직전 가격(전일 종가 또는 장종료전 체결가)으로 정함
동시호가
체결 강도
체결강도 =
매수체결량
매도체결량
X 100
주문 종류
◦ 지정가(보통가) : 원하는 가격을 지정
◦ 시장가 : 매도시 매수1호가 + α, 매수시 매도1호가 + α 에 체결
자동화 로직에서 시장가 주문시 슬리피지(Slippage) 발생에 유의
◦ 조건부지정가 : 정규장에서 지정가로 체결하고, 마감시까지 미 성립된 거래에
대해서는 [장마감 동시호가]에 시장가로 자동 체결
◦ 최유리지정가 : 매도시 매수1호가 체결시키고 남은 물량은 매도1호가 주문
매수시 매도1호가 체결시키고 남은 물량은 매수1호가 주문
◦ 최우선지정가 : 매도시 매도1호가에 전량 주문 예약
매수시 매수1호가에 전량 주문 예약
66,600
66,500
66,400
66,300
66,200
66,100
수수료와 거래세
출처 : https://namu.wiki/w/%EC%A6%9D%EA%B6%8C%EA%B1%B0%EB%9E%98%EC%84%B8
※ 증권사별, 가입경로별 수수료에 차이가 있음
데이터베이스 준비
◦ 사전 설치 : MySql
◦ 스키마 준비 : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/Database/DB%20Schema.sql
데이터베이스 준비
Run “pip install pymysql” at anaconda Prompt
Result Check
Run Test Code
Xing API 공통 클래스로 리팩토링
◦ https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/orderManager.py
기본 환경 준비
◦ 모의투자 전용 HTS 다운로드
기본 환경 준비
◦ 모의투자 전용 접속 및 계좌비밀번호 확인
계좌 잔고 조회(t0424)
import orderManager
orderManager.Login(id=accountId, pwd=password, cert=pkpwd)
orderInstance = orderManager.t0424(accountNumber, accountPwd)
source: https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/accountCheck.py
매수 주문(CSPAT00600)
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/buyTest.py
[INFO] 포폴# 1 D2추정: 3106022 추정순자산 9921095
매수시도 종목코드: 005750 수량: 568 가격: 5460
CSPAT00600 C:eBESTxingAPIResCSPAT00600.res
OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다.
OnReceiveMessage : 0 00000 조회가 완료되었습니다.
OnReceiveData : t0424
CSPAQ12200 C:eBESTxingAPIResCSPAQ12200.res
OnReceiveMessage : 0 00136 모의투자 조회가 완료되었습니다.
OnReceiveData : CSPAQ12200
예수금(D2) : -557326
추정순자산 : 9891806
[INFO] 포폴# -1 D2추정: -557326 추정순자산 9891806
매수시도 종목코드: 004835 수량: 39 가격: 14150
CSPAT00600 C:eBESTxingAPIResCSPAT00600.res
OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다.
매수 주문 로직 구현시 고려 사항
매수前 D2 예수금 확인은 기본 +
현재 미체결된 종목들의 매수금액까지 D2예수금에 先 반영해야 함
매도 주문(CSPAT00600)
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/sellTest.py
선 매도주문이 미체결 상태인 경우에 발생
기존 매도주문 취소후 재 주문 해야 함
매도가능수량이 조회가 안되는 경우
◦ 시스템 제약 확인
- 로직 <<<<<< 시스템 제약
- 280개 종목을 3~4가지 조건으로 검사할 경우 대략 40분 소요
- 시스템 제약을 우선 고려해야 함
- 전략적으로 조건을 정하고, 스캔 범위를 좁혀야 함
시스템 제약 확인은 필수
슬리피지(Slippage)도 고려 대상
출처 : https://minsuksung-ai.tistory.com/9
◦ 요청하는 시각에 따라 다른 데이터를 받을 수 있음에 주의한다.
0 60
요청 시점에 따른 데이터 수신
체결강도 127.49 체결강도 83.19
매수시 RSI, RSI MA
매수/매도 시각
수익구간
수익률 : 3.35%, 기간 : 1시간
# 전략 검증 사례 1
수익구간
매수/매도 시각
수익률 : 0.54 %, 기간 : 2시간
# 전략 검증 사례 2
실시간 트레이딩
TA를 이용한 각종 지표 도출
TA Library 설치
◦ Technical Analysis 라이브러리
◦ 금융 시장 데이터의 기술적 분석을 수행
◦ 공식 홈페이지
- http://ta-lib.org/
- https://mrjbq7.github.io/ta-lib/
설치
- https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
mpl finance 라이브러리 설치
◦ 캔들 차트 등 주가 관련 차트 시각화
◦ pip install mplfinance
ADX, RSI, OBV 계산하기
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
taadx = ta.ADX(df['고가'], df['저가'], df['종가'], 9)
taadxSig = ta.MA(taadx, timeperiod=9)
taadx = np.asarray(taadx)
taadxSig = np.asarray(taadxSig)
rsi9 = ta.RSI(np.asarray(df['종가']), 9)
rsi9 = rsi9[~np.isnan(rsi9)] # remove nan
if rsi9.size == 0:
print("rsi size exception")
simpleMA9 = ta.MA(rsi9, timeperiod=9)
obv = ta.OBV(np.asarray(df['종가'], dtype = np.double), np.asarray(df['거래량'], dtype = np.double))
obvSignal = ta.MA(obv, timeperiod=9)
ADX, RSI, OBV, Candle Chart 그리기
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
ADX(average directional index)
- 평균 방향 지수
- 상승 또는 하락하는 추세의 강도를 측정
(상승인지 하락인지는 타 지표를 통해 확인 필요)
- 횡보 국면 : 0 에 수렴
reference : https://www.hi-ib.com/systemtrade/st02090803view04.jsp
image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
ADX(average directional index)
image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
RSI(Relative Strength Index)
◦ 상대 강도 지수
◦ 매도세 <-> 매수세
0 ~ 100
◦ 과매도, 과매수 구간
30, 70
20, 80
◦ 지표 기간(Time Span)이 짧아질 수록 민감하게 반응
reference : https://ko.wikipedia.org/wiki/RSI_(%ED%88%AC%EC%9E%90%EC%A7%80%ED%91%9C)
image resource : https://www.investopedia.com/terms/r/rsi.asp
OBV(On Balance Volume)
◦ 거래량은 항상 주가에 선행한다는 것을 전제로 주가의 변동을 분석하는 기법
◦ 매집 또는 분산 시기 판단에 참고
◦ 해당 종가 상승 : OBV = 이전 OBV + 해당 거래량
◦ 행당 종가 하락 : OBV = 이전 OBV – 해당 거래량
reference : https://www.hi-ib.com/systemtrade/st020908view04.jsp
MACD(Moving Average Convergence/Divergence)
◦ 단기 이동평균선과 장기 이동평균선이 상호 수렴 또는 발산을 반복하는 원리를 이용하여 추세 판단
◦ MACD : 단기 이평 – 장기 이평
◦ MACD Signal = n기간 동안의 MACD 평균
단기 이평과 장기 이평의 괴리가 큰 지점 파악
- MACD와 Signal 골든 크로스 : 매수
- MACD와 Signal 데드 크로스 : 매도
◦ MACD = EMA (단기) -EMA (중기)
image source : https://www.investopedia.com/terms/m/macd.asp
MACD(Moving Average Convergence/Divergence)
macd, macdsignal, macdhist = ta.MACD(df['종가'], fastperiod=12, slowperiod=26, signalperiod=9)
macd = macd[~np.isnan(macd)]
macdsignal = macdsignal[~np.isnan(macdsignal)]
macdhist = macdhist[~np.isnan(macdhist)]
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
Bollinger Band
https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C
중심선 : N 기간 동안의 이동평균
상단선 : 중심선 + 표준편차(3σ)
하단선 : 중심선 + 표준편차(3σ)
Bollinger Band
upper, middle, low = ta.BBANDS(df['종가'], 20, 3, 3) # 3 sigma
upper = np.asarray(upper)
middle = np.asarray(middle)
low = np.array(low)
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
stochastic fast
◦ 주가의 변동을 기반한 분석지표
◦ 특정 기간 가격등락의 중심으로 가격이 회귀하려는 특성을 활용한 지표
image resource : https://www.investopedia.com/terms/s/stochasticoscillator.asp
◦ %K : 특정 기간 동안 현재의 가격 위치
◦ %D : %K의 이동평균
stochastic fast
stochastic fast
fastk, fastd = ta.STOCHF(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, fastd_period=3, fastd_matype=0) # SMA
fastk = fastk[~np.isnan(fastk)]
fastd = fastd[~np.isnan(fastd)]
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
stochastic slow
◦ stochastic fast 가 가격변동에 민감 반응하는 부분을 완화시킨 지표
◦ stochastic slow %K = stochastic fast %D
◦ stochastic slow %D = stochastic slow %K의 이동평균
stochastic slow
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
slowk, slowd = ta.STOCH(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, slowk_period=3, 
slowk_matype=0,slowd_period=3,slowd_matype=0)
slowk = slowk[~np.isnan(slowk)]
slowd = slowd[~np.isnan(slowd)]
CCI(COMMODITY CHANNEL INDEX)
◦ 상품 가격의 계절성, 주기성을 확인하기 위해 도출된 지표
◦ CCI의 값이 100을 넘으면 과도매수로 보고 -100이하로 나타나면 과매도
cci = ta.CCI(high=df['고가'], low=df['저가'], close=df['종가'],timeperiod=14)
cciSig = ta.MA(cci, timeperiod=9)
cci = cci[~np.isnan(cci)]
cciSig = cciSig[~np.isnan(cciSig)]
source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
감사합니다.

Más contenido relacionado

La actualidad más candente

제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
BOAZ Bigdata
 
Investment and deep learning
Investment and deep learningInvestment and deep learning
Investment and deep learning
NAVER Engineering
 

La actualidad más candente (20)

ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Secret X 팀] : XAI를 활용한 수능 영어영역 문제풀이
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Secret X 팀] : XAI를 활용한 수능 영어영역 문제풀이제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Secret X 팀] : XAI를 활용한 수능 영어영역 문제풀이
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Secret X 팀] : XAI를 활용한 수능 영어영역 문제풀이
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Stalker 팀] : 감정분석을 통한 MBTI 기반 개인별 투자 성향 분석
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Stalker 팀] : 감정분석을 통한 MBTI 기반 개인별 투자 성향 분석제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Stalker 팀] : 감정분석을 통한 MBTI 기반 개인별 투자 성향 분석
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Stalker 팀] : 감정분석을 통한 MBTI 기반 개인별 투자 성향 분석
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SiZoAH] : 리뷰 기반 의류 사이즈 추천시스템
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SiZoAH] : 리뷰 기반 의류 사이즈 추천시스템제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SiZoAH] : 리뷰 기반 의류 사이즈 추천시스템
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SiZoAH] : 리뷰 기반 의류 사이즈 추천시스템
 
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Cm:)e팀] : 이커머스 고객경험 관리 분석
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Cm:)e팀] : 이커머스 고객경험 관리 분석제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Cm:)e팀] : 이커머스 고객경험 관리 분석
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Cm:)e팀] : 이커머스 고객경험 관리 분석
 
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색 제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
 
Chat GPT_중학생 강의.pptx
Chat GPT_중학생 강의.pptxChat GPT_중학생 강의.pptx
Chat GPT_중학생 강의.pptx
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
그로스 해킹 - Growth Hacking
그로스 해킹 - Growth Hacking그로스 해킹 - Growth Hacking
그로스 해킹 - Growth Hacking
 
아이디어 불패의 법칙 Pretotyping - The Right It
아이디어 불패의 법칙 Pretotyping - The Right It아이디어 불패의 법칙 Pretotyping - The Right It
아이디어 불패의 법칙 Pretotyping - The Right It
 
MD가 알아야할 라이선스 기본지식
MD가 알아야할 라이선스 기본지식 MD가 알아야할 라이선스 기본지식
MD가 알아야할 라이선스 기본지식
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [마페터 팀] : 고객 페르소나를 활용한 마케팅 전략 대시보드
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
Investment and deep learning
Investment and deep learningInvestment and deep learning
Investment and deep learning
 
인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기
 
TCP/IPプロトコルスタック自作入門
TCP/IPプロトコルスタック自作入門TCP/IPプロトコルスタック自作入門
TCP/IPプロトコルスタック自作入門
 

Similar a 주가 정보 다루기.pdf

장내파생상품시장의 현황과 과제(Krx)
장내파생상품시장의 현황과 과제(Krx)장내파생상품시장의 현황과 과제(Krx)
장내파생상품시장의 현황과 과제(Krx)
Smith Kim
 

Similar a 주가 정보 다루기.pdf (20)

PYCON 2017 발표자료 한성준
PYCON 2017 발표자료 한성준PYCON 2017 발표자료 한성준
PYCON 2017 발표자료 한성준
 
금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014
 
주가_변화시점탐지(Change point Detection)
주가_변화시점탐지(Change point Detection)주가_변화시점탐지(Change point Detection)
주가_변화시점탐지(Change point Detection)
 
금융투자에의 Ai 기계학습 기술 적용 동향-2017년11월1일
금융투자에의 Ai 기계학습 기술 적용 동향-2017년11월1일금융투자에의 Ai 기계학습 기술 적용 동향-2017년11월1일
금융투자에의 Ai 기계학습 기술 적용 동향-2017년11월1일
 
빅 데이터 추진방안
빅 데이터 추진방안빅 데이터 추진방안
빅 데이터 추진방안
 
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
 
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -워렌 Bo.fit(돈)
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -워렌 Bo.fit(돈)제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -워렌 Bo.fit(돈)
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -워렌 Bo.fit(돈)
 
분석6기 4조
분석6기 4조분석6기 4조
분석6기 4조
 
파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석
 
글로벌 주가지수 증감 예측(제1회 미래에셋대우 빅데이터페스티벌, 입상작)
글로벌 주가지수 증감 예측(제1회 미래에셋대우 빅데이터페스티벌, 입상작)글로벌 주가지수 증감 예측(제1회 미래에셋대우 빅데이터페스티벌, 입상작)
글로벌 주가지수 증감 예측(제1회 미래에셋대우 빅데이터페스티벌, 입상작)
 
Ch.2 주식분석
Ch.2 주식분석Ch.2 주식분석
Ch.2 주식분석
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with Tajo
 
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 강화학습을 이용한 주식 트레이딩 알고리즘
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 강화학습을 이용한 주식 트레이딩 알고리즘제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 강화학습을 이용한 주식 트레이딩 알고리즘
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 강화학습을 이용한 주식 트레이딩 알고리즘
 
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
 
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링
 
장내파생상품시장의 현황과 과제(Krx)
장내파생상품시장의 현황과 과제(Krx)장내파생상품시장의 현황과 과제(Krx)
장내파생상품시장의 현황과 과제(Krx)
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
Dr. dojun rhee idea to business process chapter 10 part 3
Dr. dojun rhee  idea to business process chapter 10 part 3Dr. dojun rhee  idea to business process chapter 10 part 3
Dr. dojun rhee idea to business process chapter 10 part 3
 

Más de wonyong hwang

Más de wonyong hwang (20)

Hyperledger Explorer.pptx
Hyperledger Explorer.pptxHyperledger Explorer.pptx
Hyperledger Explorer.pptx
 
하이퍼레저 페이지 단위 블록 조회
하이퍼레저 페이지 단위 블록 조회하이퍼레저 페이지 단위 블록 조회
하이퍼레저 페이지 단위 블록 조회
 
토큰 증권 개요.pptx
토큰 증권 개요.pptx토큰 증권 개요.pptx
토큰 증권 개요.pptx
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptx
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptx
 
HyperLedger Fabric V2.5.pdf
HyperLedger Fabric V2.5.pdfHyperLedger Fabric V2.5.pdf
HyperLedger Fabric V2.5.pdf
 
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
 
Nginx Https 적용하기.pptx
Nginx Https 적용하기.pptxNginx Https 적용하기.pptx
Nginx Https 적용하기.pptx
 
Kafka JDBC Connect Guide(Postgres Sink).pptx
Kafka JDBC Connect Guide(Postgres Sink).pptxKafka JDBC Connect Guide(Postgres Sink).pptx
Kafka JDBC Connect Guide(Postgres Sink).pptx
 
Nginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxNginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptx
 
Kafka Rest.pptx
Kafka Rest.pptxKafka Rest.pptx
Kafka Rest.pptx
 
Kafka monitoring using Prometheus and Grafana
Kafka monitoring using Prometheus and GrafanaKafka monitoring using Prometheus and Grafana
Kafka monitoring using Prometheus and Grafana
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
App development with quasar (pdf)
App development with quasar (pdf)App development with quasar (pdf)
App development with quasar (pdf)
 
kubernetes practice
kubernetes practicekubernetes practice
kubernetes practice
 
Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0)
 
Docker practice
Docker practiceDocker practice
Docker practice
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
Hyperledger composer
Hyperledger composerHyperledger composer
Hyperledger composer
 

주가 정보 다루기.pdf

  • 1. 주가정보 다루기 한국폴리텍대학교 서울강서캠퍼스 스마트금융과(김효관 교수, 황원용 교수)
  • 2. 실습 과정 ◦ matplotlib 등 주요 라이브러리 소개 ◦ FinanceDataReader ◦ 종목 코드 수집 ◦ 수익률 계산 ◦ BeautifulSoup + Naver 금융을 이용한 주가 및 재무 정보 수집 ◦ 중간 연습문제 ◦ 정량 지표 정보 수집 ◦ 정성 지표 정보 수집
  • 3. 사전 준비 ◦ 실습 소스 git clone git clone https://github.com/wonyongHwang/kopoStockModel.git ◦ PyCharm 준비
  • 4. 1. 파이썬 주요 라이브러리 소개 구분 라이브러리 비고 시각화 Matplotlib 차트 시각화 지원 분석 NumPy 수치 데이터 조작 배열 데이터 핸들링 Pandas 고성능 데이터 조작 라이브러리 크롤링 BeautifulSoup Requests 웹 데이터 크롤링
  • 5. 1-1. Matplotlib ◦ 그래프나 2차원 데이터 시각화용 라이브러리 ◦ 특정부분확대 등 그래프 조작 등 인터렉티브 차트
  • 6. 1-2. NumPy ◦ 빠르고 효율적인 다차원 배열 객체 ◦ 배열 또는 배열간 연산 수행 ◦ 데이터 Read/Write ◦ 선형대수 계산, 난수발생기 Pandas는 뒤에서 계속 다룰 예정…
  • 7. 1-3. 간단 실습 File -> Settings -> Interpreter에서 필요한 라이브러리 설치 - numpy - matplotlib source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/01%20matplotlib%20test.py
  • 9. 용어 알아보기 • 미국시장에서는 종목을 식별하기 위해 영문알파벳 조합된 코드 야후(yahoo.com), 포브스(forbes.com) 같은 모든 경제 사이트에서 사용 • F (포드 자동차) • GE (제너럴 일렉트릭) • BAC (뱅크오브 아메리카) • APPL (Apple inc, 애플), GOOG(Google, 구글), MSFT (Microsoft, 마이크로소프트)
  • 10. 용어 알아보기 • ^KS11: KOSPI composite index (거래소 지수) <- 증권거래소에 상장된 상장기업 주식 벤처회사를 제외한 주식들을 시가총액 가중평균방식을 통해 코스피에 상장된 전 주식을 평균화한 지수 • ^KQ11: KOSDAQ composite index (코스닥 지수) <- 국내 장외 주식 (벤처) KOSPI에 상장이 불가능한 벤처기업들을 시가총액 가중평균 방식으로 산출하여 평균화 • 종목코드에 .KS가 붙는다 예를들어 삼성전자의 심볼은 005930.KS
  • 11. 용어 알아보기 • 시가총액: 회사가 발행한 전체 주식의 가치 (1만원 * 100주 = 100만원) • 수정주가 (Adjusted Closing Price): 주가는 자본을 마련하기위해 새로 주식을 발행하거나(유상증자) 기존의 주주에게 무료로 배포하는(무상증자) 행위 또는 기존의 보유주를 2,3배로 바꿔주기도한다 (액면변경) 이처럼 시시각각 변하는 상황에 과거의 주가를 지금의 주식수를 기준으로 바꾸어주는 것을 수정주가라고 한다. • 분할, 배당, 배분, 신주 발행이 반영된 주식 가격 데이터의 연속성을 보장하기 때문에 데이터 분석에는 “수정주가” 를 사용한다.
  • 12. 2. FinanceDataReader • KRX Stock Symbol listings: 'KRX', 'KOSPI', 'KODAQ', 'KONEX’ • Global Stock Symbol listings: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍 • KRX delistings: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목) • ETF Symbol listings(for multiple countries): 'KR', 'US', 'JP’ • Stock price(KRX): '005930'(Samsung), '091990'(Celltrion Healthcare) ... • Stock price(Word wide): 'AAPL', 'AMZN', 'GOOG' ... (you can specify exchange(market) and symbol) • Indexes: 'KS11'(코스피지수), 'KQ11'(코스닥지수), 'DJI'(다우존스지수), 'IXIC'(나스닥지수), 'US500'(S&P 500지 • Exchanges: 'USD/KRX', 'USD/EUR', 'CNY/KRW' ... (조합가능한 화폐별 환율 데이터 일자별) • Cryptocurrency price data: 'BTC/USD' (Bitfinex), 'BTC/KRW' (Bithumb) https://github.com/FinanceData/FinanceDataReader
  • 13. 2-1. FinanceDataReader를 활용한 주가정보 수집 ◦ File  Settings  Interpreter 에 finance-datareader, beautifulsoup4 추가
  • 14. 2-2. FinanceDataReader를 활용한 주가정보 수집 ◦ 현재일 기준 [720일 이전 ~ 1일전]의 주가 정보(시가, 고가, 저가, 종가, 거래량, 변화율)를 수집 today = date.today() startday = date.today() - timedelta(720) yesterday = date.today() - timedelta(1) ◦ 종목번호와 함께 시작일/종료일을 FinanceDataReader 함수의 인자로 전달 SEC = web.DataReader("207940", startday, yesterday) ◦ 종가와 거래량을 Matplotlib로 시각화 plt.subplot(211) SEC["2020-05-06":"2022-05-06"]['Close'].plot(figsize=(16,4), style='b’) plt.subplot(212) SEC["2020-05-06":"2022-05-06"]["Volume"].plot(figsize=(16,4), style='g') source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/02%20sample%20test.py
  • 15. 2-3. FinanceDataReader를 활용한 주가정보 수집
  • 16. 2-4. FinanceDataReader를 활용한 주가정보 수집 Q1> KOSPI, DJI 차트를 출력하세요. Q2> 환율(USD/KRW) 차트를 출력하세요. Q3> 비트코인(BTC/KRW) 차트를 출력하세요.
  • 17. 2-5. FinanceDataReader를 활용한 주가정보 수집 고가(high) 종가(close) 시가(open) 저가(low) 고가(high) 시가(open) 종가(close) 저가(low) Candle Chart 한국에서는 양봉이 빨간색, 음봉이 파란색 미국은 양봉을 초록색, 음봉을 빨간색으로 표시
  • 18. 2-6. FinanceDataReader를 활용한 주가정보 수집 Candle Chart
  • 20. 3. 종목코드 수집 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb 필요 변수 및 함수 정의
  • 22. 3. 종목코드 수집 종목코드 수집 Q1> 전체 종목코드와 종목명을 저장하는 코드를 작성 하세요. Q2> 전체 업종의 개수와 업종명을 분류하는 코드를 작성 하세요.
  • 23. 3. 종목코드 수집 연습문제(특정 조건에 해당하는 종목코드 가져오기)
  • 24. 단기 평균선이 장기 평균보다 가격이 높다는 말은 최근 에 가격성장폭이 커졌다는 뜻! 3. MA (이동평균) 계산과 GC/DC 그리기 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb
  • 25. 3. MA (이동평균) 계산과 GC/DC 그리기 ① N일 이동평균 구하기 - 값이 NaN일 경우 최소 하나의 데이터로 평균으로 가정 ② 단기이평과 장기이평의 차이를 구함 - 차이가 + : Golden Cross - 차이가 - : Dead Cross
  • 26. 3. MA (이동평균) 계산과 GC/DC 그리기 종가, 5MA, 20MA 거래량(Volume) GC/DC
  • 27. 수익률 = 초기가격 (미래가격 – 초기가격) 투자한 자본에 대한 수익(혹은 손실) 의 비율 예) 100만원에 사서 150만원이 되면 수익률은 + 50% → (150-100) / 100 4. 주가 수익률 계산하기
  • 28. 일반 수익률 = (미래가격 – 이전가격) / 이전가격 → 수익률 합과 최종 손실률이 달라진다 ln 미래가격/이전가격 → 최종 수익률과 수익률 합이 일치 (금융분야에서 주로 사용) 거래일 가격 일반수익률 계산법 로그수익률 계산법 1일 1,000 2일 1,500 50 (1500-1000)/1000 40.54 ln(1500/1000) 3일 800 -46.67 (800-1500)/1500 -62.86 ln(800/1500) 4일 600 -25 (600-800)/800 -28.76 ln(600/800) 5일 1,500 150 (1500-600)/600 91.62 ln(1500/600) 수익률합계 78% 128.33% 50-46.67-25+150 40.54% 40.54-62.86-28.76+91.62 최종수익률 50% 50% (1500-1000)/1000 40.54% ln(1500/1000) 4. 주가 수익률 계산하기
  • 29. plt.figure(figsize=(15,9)) today = date.today() startday = date(2018,4,1) endday = date(2018,6,27) SEC = web.DataReader("207940", startday, endday) SEC = SEC[SEC['Volume'] != 0] SEC['Close'].head() # 1 씩 shift SEC['Close'].shift(1).head() # 수익률 계산 SEC['Rate'] = np.log( SEC['Close'].astype(float) / SEC['Close'].shift(1).astype(float)) SEC.head() 4. 주가 수익률 계산하기 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/04%20price-earnings%20ratio.ipynb
  • 31. 5. 재무 정보 수집하기 from bs4 import BeautifulSoup url = 'https://finance.naver.com/item/main.nhn?code=035720' table_df_list = pd.read_html(url, encoding='euc-kr')
  • 32. 5. 재무 정보 수집하기
  • 33. 금융 시장 분석 기본 분석 기술 분석 정서 분석
  • 34. • 재무제표, 주가와 손익 • 경기, 사업동향 분석 • 기술 분석을 위한 기초분석 단계 • 주관적이고 검증이 어렵다 금융 시장 분석 – 기본 분석 마켓상황 분석
  • 35. • 과거 데이터 활용하여 추세 예측 • 과거데이터를 활용하여 추세선을 그리고 예측하는 작업 • 가격은 모든 정보가 반영된 종속 변수이다. • 가격은 일정한 추세로 움직인다. 금융 시장 분석 – 기술 분석 과거 가격과 거래량의 변화를 분석하여 예측
  • 36. • 자연어 처리, 텍스트 분석등을 통해 감성분석 후 정보를 추출 • 투자자들의 감성정보를 의사결정에 활용 금융 시장 분석 – 정서 분석 투자 심리 분석
  • 38. 용어 정리 ◦ EPS (Earnings Per Share 주당 순이익) 당기순이익/발행주식수 예> EPS 4,165원 : 주식 1주가 4,165원의 이익을 창출 ◦ PER (Price Earning Ratio 주가수익비율) 현재주가 / EPS 예> 19.14배 : 79,700원 / 4,165원 -> 현재 회사의 이익 대비 주가가 19.14배 비싸다는 의미 업종에 따라 PER 평균이 다름 ◦ BPS(Book-value Per Share 주당 순자산) (총자산 - 총부채) / 발행 주식수 예> BPS 39,126원 : 회사 자산 처분시 1주당 39,126원의 가치가 있음 ◦ PBR(Price Book-value Ratio 주가순자산 비율) 현재주가/BPS 예> PBR 2.04배: 회사 자산 처분시 주당 39,126원을 받을 수 있는 주식이 그보다 2배 정도 높은 가격에 거래되고 있다는 의미
  • 39. 용어 정리 ◦ PBR(주가순자산비율: Price Book-value Ratio) - 현재자산 / BPS - 낮을수록 건전성 ↑, 동종업계 타기업과 비교해 봐야 함 - 성장 가능성이 높을 경우 높은 수치를 나타낼 수 있기 때문에 보조적 판단 수단으로 사용해야 함 ◦ PER(주가순익비율: Price Earning Ratio) - 현재주가 / EPS
  • 40. 로직 구성에 참고할 만한 정량 지표 예시 ◦ EPS(주당순이익: Earning Per Share) * 10 - 당기순이익 / 발행주식수 ◦ ROE * EPS ± X ◦ PER * EPS ◦ 유동비율 : 최소 200% 이상 ◦ 유보율(  (자본잉여금+이익잉여금)/납입자본금 * 100) ◦ MA120 G/C 한 종목 || MA60이 MA120을 3번 근접 및 우상향 ◦ EPS 지속 증가하는 경우 || EPS 5년 연평균 성장률이 우상향 ◦ 연평균 성장률 대비 PER(주가수익비율)이 낮은 기업 적정 주가 산출 참고식 * ROE(Return On Equity) : 자기자본이익율 당기순이익/자본총액
  • 41. EPS * 10 = 5,777 * 10 = 57,770원 ROE * EPS = 15.21 * 5,777 = 87,868원 PER * EPS = 11.37 * 5,777 = 65,684원 로직 구성에 참고할 만한 정량 지표 예시
  • 43. 주가 예측 과제 ◦ 판단 로직 (예측 기준, 매수/매도 기준) ◦ 수집 대상 및 방법 ◦ 예측 결과(Back Testing) - 예측 모델(로직)의 수익성 판단을 위한 시뮬레이션 및 결과출력
  • 44. 정량 지표 수집 출처 : 네이버 금융(finance.naver.com)
  • 46. [참고] 퀀트 테스트 (인텔리퀀트社) 출처 : 인텔리퀀트(https://www.intelliquant.co.kr/)
  • 47. 실시간 트레이딩 이베스트 Xing API를 활용한 실시간 트레이딩
  • 48. DISCLAIMER source : https://github.com/wonyongHwang/KopoScalpingTrader ※ 주가 정보 실습 목적으로 모의 투자만 진행합니다. 재학 기간 중, 실습 소소코드를 이용한 실 투자를 금합니다.
  • 53. 모의투자 참가신청 ◦ 실습 목적으로 모의투자만 진행 ◦ 학교 실습 과정 중 실 투자 금지
  • 54. API 명세 확인 및 테스트 ◦ 접속서버는 “모의투자“ ◦ 공인인증 : 필요없음(실서버 접속시에만 사용)
  • 55. API Test (1/2) ◦ Res 파일 다운로드
  • 56. API Test (2/2) ◦ 시세 조회 ◦ 필드 및 데이터 확인
  • 57. Anaconda 32bit 설치(1/2) https://www.anaconda.com/products/distribution ※ 설치시 기 설치한 Anaconda 64bit 버전의 경로(C:ProgramDataAnaconda3)와 다른 경로에 설치
  • 59. 실습 소스파일 준비 ◦ git clone https://github.com/wonyongHwang/KopoScalpingTrader.git
  • 60. 프로젝트 준비 ※ Anaconda 32 bit ※ 실습 소스 루트 디렉토리 ※ Anaconda 32 bit
  • 61. ◦ 주요 라이브러리 확인 프로젝트 준비
  • 62. 계좌 로그인 테스트 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/pre parations/loginTest.py 이벤트 처리 클래스 로그인 호출(+ 이벤트처리 클래스 콜백등록) 로그인 응답시까지 이벤트 대기 루프
  • 69. 매매 체결의 법칙 ◦ 가격 우선 (매수는 높은 가격, 매도는 낮은 가격 우선) ◦ 시간 우선 ◦ 수량 우선 ◦ 가격 > 시간 > 수량
  • 70. 호가 보는 방법 ◦ 매수 잔량 ◦ 매도 잔량 ◦ 총 매수 잔량 ◦ 총 매도 잔량
  • 72. 거래 시간과 종류 출처 : https://securities.miraeasset.com/public/mw/guide/html/tradinghours.html
  • 73. 호가 단위 출처 : https://md2biz.tistory.com/515
  • 74. ◦ 일정시간 동안 거래를 모아서 적정가격을 자동으로 정함 ◦ 거래 폭증에 따른 가격 왜곡 현상을 예방하기 위하여 장 시작 전 , 마감 전 등 특정 시점에 적용 ◦ 변동성 완화장치 발동, 써킷 브레이커, 단기과열 지정, 투자위험종목 지정에도 적용 ◦ 동시호가가 상한가 또는 하한가일 경우는 정량 배분 기준에 따라 수량을 배분 66,600 66,500 66,400 66,300 1,000 400 1,000 1,000 Q1> 동시호가 가격은? 동시호가
  • 77. 66,600 66,500 66,400 66,300 66,200 66,100 0 0 1,000 0 0 500 직전 가격(전일 종가 또는 장종료전 체결가)으로 정함 동시호가
  • 79. 주문 종류 ◦ 지정가(보통가) : 원하는 가격을 지정 ◦ 시장가 : 매도시 매수1호가 + α, 매수시 매도1호가 + α 에 체결 자동화 로직에서 시장가 주문시 슬리피지(Slippage) 발생에 유의 ◦ 조건부지정가 : 정규장에서 지정가로 체결하고, 마감시까지 미 성립된 거래에 대해서는 [장마감 동시호가]에 시장가로 자동 체결 ◦ 최유리지정가 : 매도시 매수1호가 체결시키고 남은 물량은 매도1호가 주문 매수시 매도1호가 체결시키고 남은 물량은 매수1호가 주문 ◦ 최우선지정가 : 매도시 매도1호가에 전량 주문 예약 매수시 매수1호가에 전량 주문 예약 66,600 66,500 66,400 66,300 66,200 66,100
  • 80. 수수료와 거래세 출처 : https://namu.wiki/w/%EC%A6%9D%EA%B6%8C%EA%B1%B0%EB%9E%98%EC%84%B8 ※ 증권사별, 가입경로별 수수료에 차이가 있음
  • 81. 데이터베이스 준비 ◦ 사전 설치 : MySql ◦ 스키마 준비 : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/Database/DB%20Schema.sql
  • 82. 데이터베이스 준비 Run “pip install pymysql” at anaconda Prompt Result Check Run Test Code
  • 83. Xing API 공통 클래스로 리팩토링 ◦ https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/orderManager.py
  • 84. 기본 환경 준비 ◦ 모의투자 전용 HTS 다운로드
  • 85. 기본 환경 준비 ◦ 모의투자 전용 접속 및 계좌비밀번호 확인
  • 86. 계좌 잔고 조회(t0424) import orderManager orderManager.Login(id=accountId, pwd=password, cert=pkpwd) orderInstance = orderManager.t0424(accountNumber, accountPwd) source: https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/accountCheck.py
  • 87. 매수 주문(CSPAT00600) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/buyTest.py
  • 88. [INFO] 포폴# 1 D2추정: 3106022 추정순자산 9921095 매수시도 종목코드: 005750 수량: 568 가격: 5460 CSPAT00600 C:eBESTxingAPIResCSPAT00600.res OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다. OnReceiveMessage : 0 00000 조회가 완료되었습니다. OnReceiveData : t0424 CSPAQ12200 C:eBESTxingAPIResCSPAQ12200.res OnReceiveMessage : 0 00136 모의투자 조회가 완료되었습니다. OnReceiveData : CSPAQ12200 예수금(D2) : -557326 추정순자산 : 9891806 [INFO] 포폴# -1 D2추정: -557326 추정순자산 9891806 매수시도 종목코드: 004835 수량: 39 가격: 14150 CSPAT00600 C:eBESTxingAPIResCSPAT00600.res OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다. 매수 주문 로직 구현시 고려 사항 매수前 D2 예수금 확인은 기본 + 현재 미체결된 종목들의 매수금액까지 D2예수금에 先 반영해야 함
  • 89. 매도 주문(CSPAT00600) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/sellTest.py
  • 90. 선 매도주문이 미체결 상태인 경우에 발생 기존 매도주문 취소후 재 주문 해야 함 매도가능수량이 조회가 안되는 경우
  • 91. ◦ 시스템 제약 확인 - 로직 <<<<<< 시스템 제약 - 280개 종목을 3~4가지 조건으로 검사할 경우 대략 40분 소요 - 시스템 제약을 우선 고려해야 함 - 전략적으로 조건을 정하고, 스캔 범위를 좁혀야 함 시스템 제약 확인은 필수
  • 92. 슬리피지(Slippage)도 고려 대상 출처 : https://minsuksung-ai.tistory.com/9
  • 93. ◦ 요청하는 시각에 따라 다른 데이터를 받을 수 있음에 주의한다. 0 60 요청 시점에 따른 데이터 수신 체결강도 127.49 체결강도 83.19
  • 94. 매수시 RSI, RSI MA 매수/매도 시각 수익구간 수익률 : 3.35%, 기간 : 1시간 # 전략 검증 사례 1
  • 95. 수익구간 매수/매도 시각 수익률 : 0.54 %, 기간 : 2시간 # 전략 검증 사례 2
  • 97. TA Library 설치 ◦ Technical Analysis 라이브러리 ◦ 금융 시장 데이터의 기술적 분석을 수행 ◦ 공식 홈페이지 - http://ta-lib.org/ - https://mrjbq7.github.io/ta-lib/ 설치 - https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
  • 98. mpl finance 라이브러리 설치 ◦ 캔들 차트 등 주가 관련 차트 시각화 ◦ pip install mplfinance
  • 99. ADX, RSI, OBV 계산하기 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py taadx = ta.ADX(df['고가'], df['저가'], df['종가'], 9) taadxSig = ta.MA(taadx, timeperiod=9) taadx = np.asarray(taadx) taadxSig = np.asarray(taadxSig) rsi9 = ta.RSI(np.asarray(df['종가']), 9) rsi9 = rsi9[~np.isnan(rsi9)] # remove nan if rsi9.size == 0: print("rsi size exception") simpleMA9 = ta.MA(rsi9, timeperiod=9) obv = ta.OBV(np.asarray(df['종가'], dtype = np.double), np.asarray(df['거래량'], dtype = np.double)) obvSignal = ta.MA(obv, timeperiod=9)
  • 100. ADX, RSI, OBV, Candle Chart 그리기 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  • 101. ADX(average directional index) - 평균 방향 지수 - 상승 또는 하락하는 추세의 강도를 측정 (상승인지 하락인지는 타 지표를 통해 확인 필요) - 횡보 국면 : 0 에 수렴 reference : https://www.hi-ib.com/systemtrade/st02090803view04.jsp image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
  • 102. ADX(average directional index) image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
  • 103. RSI(Relative Strength Index) ◦ 상대 강도 지수 ◦ 매도세 <-> 매수세 0 ~ 100 ◦ 과매도, 과매수 구간 30, 70 20, 80 ◦ 지표 기간(Time Span)이 짧아질 수록 민감하게 반응 reference : https://ko.wikipedia.org/wiki/RSI_(%ED%88%AC%EC%9E%90%EC%A7%80%ED%91%9C) image resource : https://www.investopedia.com/terms/r/rsi.asp
  • 104. OBV(On Balance Volume) ◦ 거래량은 항상 주가에 선행한다는 것을 전제로 주가의 변동을 분석하는 기법 ◦ 매집 또는 분산 시기 판단에 참고 ◦ 해당 종가 상승 : OBV = 이전 OBV + 해당 거래량 ◦ 행당 종가 하락 : OBV = 이전 OBV – 해당 거래량 reference : https://www.hi-ib.com/systemtrade/st020908view04.jsp
  • 105. MACD(Moving Average Convergence/Divergence) ◦ 단기 이동평균선과 장기 이동평균선이 상호 수렴 또는 발산을 반복하는 원리를 이용하여 추세 판단 ◦ MACD : 단기 이평 – 장기 이평 ◦ MACD Signal = n기간 동안의 MACD 평균 단기 이평과 장기 이평의 괴리가 큰 지점 파악 - MACD와 Signal 골든 크로스 : 매수 - MACD와 Signal 데드 크로스 : 매도 ◦ MACD = EMA (단기) -EMA (중기) image source : https://www.investopedia.com/terms/m/macd.asp
  • 106. MACD(Moving Average Convergence/Divergence) macd, macdsignal, macdhist = ta.MACD(df['종가'], fastperiod=12, slowperiod=26, signalperiod=9) macd = macd[~np.isnan(macd)] macdsignal = macdsignal[~np.isnan(macdsignal)] macdhist = macdhist[~np.isnan(macdhist)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  • 107. Bollinger Band https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C 중심선 : N 기간 동안의 이동평균 상단선 : 중심선 + 표준편차(3σ) 하단선 : 중심선 + 표준편차(3σ)
  • 108. Bollinger Band upper, middle, low = ta.BBANDS(df['종가'], 20, 3, 3) # 3 sigma upper = np.asarray(upper) middle = np.asarray(middle) low = np.array(low) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  • 109. stochastic fast ◦ 주가의 변동을 기반한 분석지표 ◦ 특정 기간 가격등락의 중심으로 가격이 회귀하려는 특성을 활용한 지표 image resource : https://www.investopedia.com/terms/s/stochasticoscillator.asp
  • 110. ◦ %K : 특정 기간 동안 현재의 가격 위치 ◦ %D : %K의 이동평균 stochastic fast
  • 111. stochastic fast fastk, fastd = ta.STOCHF(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, fastd_period=3, fastd_matype=0) # SMA fastk = fastk[~np.isnan(fastk)] fastd = fastd[~np.isnan(fastd)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  • 112. stochastic slow ◦ stochastic fast 가 가격변동에 민감 반응하는 부분을 완화시킨 지표 ◦ stochastic slow %K = stochastic fast %D ◦ stochastic slow %D = stochastic slow %K의 이동평균
  • 113. stochastic slow source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py slowk, slowd = ta.STOCH(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, slowk_period=3, slowk_matype=0,slowd_period=3,slowd_matype=0) slowk = slowk[~np.isnan(slowk)] slowd = slowd[~np.isnan(slowd)]
  • 114. CCI(COMMODITY CHANNEL INDEX) ◦ 상품 가격의 계절성, 주기성을 확인하기 위해 도출된 지표 ◦ CCI의 값이 100을 넘으면 과도매수로 보고 -100이하로 나타나면 과매도 cci = ta.CCI(high=df['고가'], low=df['저가'], close=df['종가'],timeperiod=14) cciSig = ta.MA(cci, timeperiod=9) cci = cci[~np.isnan(cci)] cciSig = cciSig[~np.isnan(cciSig)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py