본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project

(48)
[백테스팅]EMA 골든 크로스를 응용한 비중 투자 이번에 사용할 알고리즘을 간략하게 소개하겠습니다. 매수 1번째 조건: 20일, 120일 EMA 골든 크로스 발생시 50% 비중으로 매수합니다. 매수 2번째 조건: 1번째 조건 발생후, 캔들이 EMA 20일 선을 터치하면 나머지 50% 추가 매수합니다. 단, 조건 1에서의 매수단가보다 높은 가격에서 추가 진입해야 할 경우 매수하지 않습니다. 매도 조건: 데드크로스 발생시 전액 매도 S&P500의 3000일의 일봉 데이터를 사용하였습니다. 본격적인 코드를 소개하겠습니다. 우선 S&P500데이터를 다운받은 후, talib 패키지를 통해 ema 20일, 120일을 계산해줍니다. import talib import yfinance as yf stock_data = yf.download('^GSPC')#S&P500..
[백테스팅]EMA 60 상향 돌파 시 매수 이번에 사용할 매매 알고리즘은 EMA 60일 선을 봉이 상향 돌파시 매수, 하향 돌파시 매도하는 것입니다. s&p500의 3000일에 대한 일봉 데이터를 가지고 저의 알고리즘을 백테스팅해보겠습니다. 우선 s&p500 데이터를 다운받아 보겠습니다. 그리고 ema 60일 선을 만들어보겠습니다. ema60일선은 talib패키지에서 제공해주는 메소드를 사용하겠습니다. import talib import yfinance as yf stock_data = yf.download('^GSPC')#S&P500 데이터에 해당 count = 3000 stock_data = stock_data.tail(count) stock_data['EMA_60'] = talib.EMA(stock_data['Close'], 60) 다음으로..
Ta-lib를 통해 기술적 지표 계산하기 - 이동평균, RSI, 볼린저밴드 기술적 지표를 이용한 트레이딩 전략은 크게 두 가지로 '추세추종전략'과 '평균회귀전략'으로 나눌 수 있습니다. 추세추종 전략은 주가가 동일한 방향으로 지속될 것이라는데 배팅하고, 이동평균 등의 지표가 사용됩니다. 평균회귀 전략은 주가가 평균으로 다시 회귀하는데 배팅하며, RSI, 볼린저밴드 등의 지표가 사용됩니다. 각각의 기술적 지표를 계산하는 수식이 존재하기 때문에 이를 이용해 계산할 수도 있지만, 패키지를 이용하면 매우 손쉽게 기술적 지표를 계산할 수 있습니다. 기술적 지표 계산에 사용되는 대표적인 패키지는 'TA-Lib'입니다. 이것을 통해 150개 이상의 지표를 계산할 수 있으며, C언어로 작성되어 있기에 속도 또한 매우 빠릅니다. 그러나 TA-Lib는 다른 패키지들처럼 pip install 명령..
(Python)국내 주식 가치 지표 계산하기_2 전 종목에 해당하는 가치지표를 계산해보겠습니다. 먼저 mysql에서 가치지표 데이터를 담을 테이블을 만들겠습니다. use stock_db; create table kor_value ( 종목코드 varchar(6), 기준일 date, 지표 varchar(3), 값 double, primary key(종목코드, 기준일, 지표) ); 이제 전 종목 가치지표를 계산후 sql에 저장해보겠습니다. #패키지 불러오기 import pymysql from sqlalchemy import create_engine import pandas as pd import numpy as np # DB 연결 engine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/stock_..
(Python)국내 주식 가치 지표 계산하기_1 기본적인 지표에 대해서 소개해 드리겠습니다. 지표 설명 필요한 재무제표 데이터 PER Price to Earnings Ratio 순이익 PBR Price to Book Ratio 순자산 PCR Price to Cash Flow Ratio 영업활동으로 인한 현금흐름 PSR Price to Sales Ratio 매출액 DY Dividend Yield 배당 가치지표의 경우 연간 재무제표 기준으로 계산할 경우 다음 재무제표가 발표될 때까지 1년이나 기다려야 합니다. 반면 분기 재무제표는 3개월 마다 발표되므로 최신 정보를 훨씬 빠르게 반영할 수 있다는 장점이 있습니다. 일반적으로 최근 4분기 데이터를 이용해 계산하는 TTM(Trailing Twelve Months) 방법을 많이 사용합니다. 예제로 삼성전자의 가..
한국투자증권 api 사용하기_2 #사전준비 먼저 app key와 app secret을 keyring 패키지를 통해 저장해 둡니다. 그리고 base url을 설정하고 접근토큰과 해쉬키 발급 함수를 설정합니다. 이에 대한 자세한 내용은 이전 포스트에 있으니 참조하시기 바랍니다. #주식 및 계좌 잔고 조회하기 #주식 잔고조회 path = "/uapi/domestic-stock/v1/trading/inquire-balance" url = f"{url_base}/{path}" headers = {"Content-Type":"application/json", "authorization":f"Bearer {access_tocken}", "appKey":app_key, "appSecret":app_secret, "tr_id":"VTTC8434R"} ..
한국투자증권 api 사용하기_1 #모의투자 신청 먼저 한국투자증권 홈페이지 로그인하여 모의투자를 신청해줍니다. 그리고 모의투자 계좌번호를 기억해둡니다. #api 신청 api 신청해줍니다. [트레이딩] -> [Open API] -> [KIS Developers] -> [KIS Developers 서비스 신청하기] 모의투자 계좌, 국내주식에 5억원 신청해줍니다. #keyring 패키지를 통한 app key, app secret 기억하기 vscode를 키고 다음을 입력합니다. import keyring #종합계좌 real_app_key = keyring.set_password('real_app_key', 'User Name', 'App key') # 'App key' 자리에 발급받은 app key 입력 real_app_secret = key..
국내 주식 재무제표 크롤링하기_2 이전 포스트를 읽지 않으면 이해하기 어려우실 수 있습니다! 국내 모든 주식의 재무제표를 크롤링 해보겠습니다. 먼저 sql에 table을 먼저 만들어 줍니다. use stock_db; create table kor_fs ( 계정 varchar(30), 기준일 date, 값 float, 종목코드 varchar(6), 공시구분 varchar(1), primary key(계정, 기준일, 종목코드, 공시구분) ) 그리고 이제 파이썬으로 데이터를 크롤링 해보겠습니다. 먼저 아래의 코드를 실행하여 크롤링할 준비를 해보겠습니다. #모든 종목 재무제표 크롤링 import pymysql from sqlalchemy import create_engine import pandas as pd import requests as ..