'파이썬으로 만든 것들/퀀트투자' 카테고리의 글 목록
본문 바로가기

파이썬으로 만든 것들/퀀트투자36

파이썬으로 주식 분석 프로그램 툴 만들기(시가배당률 이용) 주식은 싸게 사서 비싸게 팔면 된다. 아주 간단한 원리다. 하지만 싸다는 기준과 비싸다는 기준은 너무나 모호하다. 아무도 알려주지 않는다. 책에서 나름 똑똑하다는 사람이 여러 기준을 알려주었지만, 실제로 테스트를 해 보지 않아서 잘 모르겠다. 나는 개인적으로 PER 밴드, PBR 밴드로 주가가 저가임을 판단한다. 하지만, 이것도 그렇게 완벽하지는 않은 것 같은 느낌이다.(아래는 파이썬으로 PER 밴드차트를 그려본 포스트다.) 2022.09.19 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 차트 그리기 3 - qt designer로 UI 만들기 파이썬으로 PER 밴드 차트 그리기 3 - qt designer로 UI 만들기 2022.09.07 - [취미로 하는 파이썬/투.. 2022. 10. 25.
퀀트투자 - 매년 초에 투자해서 매년 말까지 수익률 Test 2022.09.21 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 예전에 저PBR 과 저DPS 조합으로 퀀트투자 백테스트를 한 적이 있다. 저PBR X 저DBS 조합 퀀트투자 백테스트 그 당시에는 모든 것이 완벽할 것이라고 생각하고 바로 실행해 보았다. 막상 실제로 투자 dotsnlines.tistory.com 위와 같이 지난번에 pykrx를 가지고 매년 초에 투자해서 월별로 수익률을 구해보고, 최저값, 최고값을 구해 보았다. 매월 1번만 수익률을 구했기에 매일 종가로 수익률을 구하면 값이 어떻게 되는지 궁금했다. 그래서 DB에 영업일의 모든 Data를 다운로드 해서 저장했고, 일별로 1년.. 2022. 10. 24.
퀀트투자 - 백테스트 할 날짜 가져오기 백테스트를 하기 위해서는 날짜가 필요하다. 내가 투자를 하고나서 일정시점 또는 기간 동안에 수익을 확인해야지 내가 하려는 방법이 옳은지 그른지 판단이 선다. 주식시장은 영업일에만 개장한다. 수익을 확인하기 위해서는 해당일의 종가를 알아야 하고, 해당일이 영업일이 아니면 종가를 가져오지 못한다. pykrx에서는 영업일만 가져오는 함수가 있어서 문제가 없었다. 또한, 특정기간 예를들어 한달에 1번 수익률을 구하는 것이 가능했다. 하지만, 영업일을 DB로 가져오고 나서 기간별 수익률을 확인하려고 하니 방법을 모르겠다. 열심히 고민을 한 끝에 리스트로 만들기로 했다. con = sqlite3.connect('krx_data.db') df_dates = pd.read_sql("SELECT * FROM dates".. 2022. 10. 3.
퀀트투자 - DB에서 날짜 가져와서 PBR x DPS 조건으로 종목 고르기(SQL 특정 조건 가져오기) 여태까지 투자 실험을 한 내용을 요약해 보겠다. PBR x DPS를 기준으로 20 종목을 선정한 뒤 월별로 수익률을 분석했다.(물론 그 전에 여러 조건으로 수익률을 분석한 적이 있지만, 이런 세부적인 부분은 설명이 길어지니 생략하겠다.) pykrx 라이브러리를 사용해서 데이터를 가져오고, 백테스트를 하다보니 KRX 홈페이지에 차단되는 일이 발생했다. 그래서 데이터를 일일이 받아서 DB에 저장했다. 그리고 다시 백테스를 해 보려고 한다. df = pd.read_sql("SELECT * FROM ...", con) 로 전체 데이터를 다 가져오니 시간이 생각보다 오래걸렸다. sqlite3를 처음 사용해보고 SQL 사용법을 모르니 생각보다 쉽지 않았다. 그래도 내 친구 Google이 쉽게 방법을 알려주어서 이번.. 2022. 10. 1.
퀀트투자 - 환율데이터 DB에 저장하기, KOSPI와 상관관계 확인해 보기 그리고 사기꾼과 욕심에 관한 내 생각 환율데이터를 받아서 DB에 저장했다. pykrx 모듈처럼 자동으로 불러 오는 방법을 찾아 봤지만, 엑셀로 받아서 DB에 저장했다. 매번 Data를 업데이트 할 필요도 없고, 한번 DB에 저장하면 그걸로 백테스트만 하면 되니깐 굳이 힘들게 라이브러리를 찾을 필요가 없다고 판단했다. https://spot.wooribank.com/pot/Dream?withyou=FXXRT0014 기간별환율조회 - 우리은행 통화 USD(미국) JPY(일본(100)) EUR(유럽연합) AED(U.A.E) ARS(아르헨티나) AUD(호주) BDT(방글라데시) BHD(바레인) BND(브루나이) BRL(브라질) CAD(캐나다) CHF(스위스) CNY(중국) CZK(체코) DKK(덴마크) EGP(이집트) FJD( spot.woorib.. 2022. 9. 29.
퀀트투자 - KRX에서 KOSPI 지수, PER, PBR 다운로드 받아서 DB에 저장하기 퀀트투자 실험을 진행하면서 KOSPI 지수와 비교할 일이 있을 것 같아서 다운로드 받아서 DB에 저장했다. KOSPI 지수를 다운 받는건 생각보다 간단하다. 그리고 시간도 1초 정도 걸린다. 1 2 3 4 5 6 7 8 9 from pykrx import stock import sqlite3 df_kos = stock.get_index_fundamental('20030101', '20220831', '1001') con = sqlite3.connect('krx_data.db') df_kos.to_sql('kospi_index', con=con, if_exists='replace') print(df_kos) Colored by Color Scripter cs Data를 DB에 저장했다. 다운받는데 시간이 .. 2022. 9. 27.
퀀트투자 - KRX에서 재무 데이터 DB로 저장하기 지난 포스트에서 KRX에서 영업일을 다운받아 DB에 저장하는 과정을 기록했다. 이전 포스트(KRX에서 영업일 다운로드 받기) 이제 드디어 데이터를 다운 받았다. 다행히 차단되지 않고, 한 번에 받았지만 아주 오래 걸렸다. 미리 받은 영업일을 데이터프레임을 가져오고, 다시 List로 저장 했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 from pykrx import stock from datetime import datetime, timedelta import pandas as p.. 2022. 9. 25.
퀀트투자 - KRX에서 영업일 다운로드 받기 퀀트투자 백테스트와 분석을 진행하면서 힘든 부분이 데이터를 구하는 것이다. 지난 포스트(퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석) pykrx로 데이터를 가져왔지만 데이터 양이 많아지면 KRX 사이트에서 차단이 되어 버린다. 그래서 데이터를 다운 받아서 Local PC에 저장하기로 했다. 엑셀에 저장하려고 했지만, 데이터 양이 너무 많아서 불가능 하다는 사실을 알게되었다.(가능하다 해도 속도도 느려지고, 사용하기가 불편할 것이다.) 그래서 DB라는걸 이용하기로 했다. 예전에 읽은 책에서 Maria DB라는걸 알게 되어서 설치하고, 해 보려고 했지만 내가 머리가 나빠서 그런지 이해도 잘 안되고 어떻게 하는지 잘 모르겠다. 그러던 중 sqlite3 라는걸 검색해서 찾아냈다. 이건 상대적으로 할 수 .. 2022. 9. 23.
퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 예전에 저PBR 과 저DPS 조합으로 퀀트투자 백테스트를 한 적이 있다. 저PBR X 저DBS 조합 퀀트투자 백테스트 그 당시에는 모든 것이 완벽할 것이라고 생각하고 바로 실행해 보았다. 막상 실제로 투자를 해 보니 여러가지 문제에 부딪히게 되었다. 가장 큰 부분이 멘탈관리 적인 부분이다. 원래 11월 초에 사서 1년 보유 후 수익여부와 관계없이 되파는 것이었는데, 주가의 등락이 심해서 마음을 계속 졸였다. 특히나 손실이 발생하고 있는 시점이나, 어느정도 수익이 발생했을 때 어떻게 할 것인지에 대한 대비가 전혀 없었다. 다행인지 모르겠지만, 조금의 수익만 보고 전량 매도해 버렸다. 그리고 다시 백테스트를 하고 있다. 내 짧은 지식으로 어떻게 해야할지 몰라서 일단 생각나는 아이디어로 코드를 짜 보았다. 1.. 2022. 9. 21.
퀀트투자 분할매수 백테스트(파이썬) 저의 취미 중 하나가 프로그래밍입니다. 또 다른 취미는 주식투자 입니다. 투자관련 서적들을 보면 여러가지 투자 방법들을 알 수 있는데, 실제로 수익이 나는지 증명해 보고 싶을때가 있습니다. 작년에 저PBR x 저DPS로 백테스를 해 본적이 있습니다. 아래 링크는 제가 백테스트 한 내용을 적은 포스트입니다. 2021.12.14 - [인생발자국/처음부터 다시 쓰는 투자일기] - 퀀트투자 백테스트 코드 (저PBR X 저DPS) 퀀트투자 백테스트 코드 (저PBR X 저DPS) 강환국 님의 '할수있다 퀀트투자'를 읽고나서 파이썬으로 만들어 보았다. 여러 조건을 백테스트 해 보았고, 이 조건이 가장 괜찮았다. 2003년부터 매월 11월 4일 즈음에 매수를 하고, 1년 후 매도 dotsnlines.tistory.co.. 2022. 8. 31.
파이썬 퀀트투자 쉽게하기 - 11. 종목 고르는 프로그램(실행파일) 무료 배포 지난번 사정상 급하게 마지막 강의를 마무리하고 오랜만에 다시 포스트를 올려 봅니다. 파이썬을 배우시는 목적에서 나름 설명을 드렸으나, 종목을 고르는 코드만 필요하신 분들도 계실거라는 생각이 듭니다. 그래서 이번 포스트는 투자할 종목을 고르는 코드를 설명드리고, 포스트의 마지막에는 제가 만든 프로그램도 배포 드릴려고 합니다. 우선 전체 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 from PyQt5.Qt.. 2022. 6. 7.
파이썬 퀀트투자 쉽게하기 - 10. 전체 코드(마지막) 저 PBR 주식을 선별해서 퀀트투자 백테스트를 할 수 있는 전체 코드입니다. 개인 사정상 강의를 계속 올리기 위한 시간이 충분치 않아서 급하게 마무리하게 됨을 이해하여 주시기 바랍니다. 아래 코드에 주석으로 설명을 달았으니 참고하시기 바라며, 혹시라도 모르시는 부분이 있으면 댓글로 질문해 주시기 바랍니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 7.. 2021. 12. 28.
파이썬 퀀트투자 쉽게하기 - 9. 영업일만 가져와서 List로 만들기(주식거래일 구하기) 이번에는 백테스트 할 날짜를 구하는 코드를 만들어 보겠습니다. 백테스트 방법은 2003년 부터 2021년까지 특정월 특정일에 투자하고 1년이 지난 후 매도 후 다시 매수하는 것입니다. 18년 기간동안 일일이 달력을 찾아보며 증권거래일(휴일이 아닌 날짜)을 지정하는 방법도 있습니다. 하지만, 백테스트의 목적은 가장 수익이 많이 나는 날짜와 방법을 사용하는 것이기에 여러 조건들을 계속에서 변경할 필요가 있습니다. 수기로 날짜와 조건을 바꾸면 상당한 시간과 노력이 들기에 자동으로 변하게 할 필요가 있습니다. 이때 사용하는 개념이 "변수"입니다. m = 10 d = 4 우선 달을 지정할 변수를 'm'으로 지정하고, 숫자 10을 넣어줍니다. 날짜는 'd'라는 변수에 4를 지정합니다. 이제 2003년부터 2021년.. 2021. 12. 22.
파이썬 퀀트투자 쉽게하기 - 8. 모듈가져오기 이제 본격적으로 파이썬으로 퀀트투자 백테스트를 하는 코드를 작성해 보겠습니다. 우선 필요한 모듈을 가져오겠습니다. 1 2 3 4 from pykrx import stock import pandas as pd import numpy as np import os cs 모듈을 가져오는 방법은 아래 링크의 이전 포스트를 참고해 주세요. 2021.12.13 - [집구석 강의/파이썬 퀀트투자 쉽게하기] - 파이썬 퀀트투자 쉽게 하기 - 7. 파이썬 기초 파이썬 퀀트투자 쉽게 하기 - 7. 파이썬 기초 파이썬 코드를 짜기위한 기초적인 부분만 설명하려고 합니다. 어디부터 어디까지 알려드려야 할지 개인적으로 고민이 많았습니다. 그리고 어떻게 알려드려야 할지도 감이 잡히질 않네요. 그래 dotsnlines.tistory... 2021. 12. 20.
퀀트투자 종목 스크리닝 파이썬 코드 저 PBR X 저 DPS 퀀트투자 백테스트를 하고 나서 실제 종목을 스크리닝 할 수 있는 코드를 작성했다. 간단한 코드인데 잘 만든 것 같다. 사실 내가 잘 했다기 보다는 여러 똑똑한 프로그래머들이 만든 모듈을 적절히 사용한 것 밖에 없다. 이 코드로 실제 투자를 했다. 1년을 기다려야 한다. 1년 후에 이 투자 방식이 검증이 되겠지. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 from pykrx import stock import pandas as pd import numpy as np def make_pbr_dps_lis.. 2021. 12. 15.
퀀트투자 백테스트 코드 (저PBR X 저DPS) 강환국 님의 '할수있다 퀀트투자'를 읽고나서 파이썬으로 만들어 보았다. 여러 조건을 백테스트 해 보았고, 이 조건이 가장 괜찮았다. 2003년부터 매월 11월 4일 즈음에 매수를 하고, 1년 후 매도 후 다시 매수하는 방법으로 17년간 백테스틀 해 보았다. 수익률이 8652% 즉, 원금의 86배가 된다. 하지만 문제는 손실이 많이 발생하는 해도 있다는 사실이다. 복리 수익률로 실컷 자금을 불렸지만, -42% 손실이 발생하면 정말 견디기 힘들 것 같다. 그래서 11월과 더불어 2월에도 분산해서 투자하는 방법을 생각했다. 그러니 가장 손실이 많이 발생한 해는 -1%로 견딜만한 수준이 되었다. CAGR도 11월만 하면 30%이지만, 2월까지 같이 하더라도 29%로 차이가 거의 없다. 저 PER, 저 PBR, .. 2021. 12. 14.
파이썬 퀀트투자 쉽게 하기 - 7. 파이썬 기초 파이썬 코드를 짜기위한 기초적인 부분만 설명하려고 합니다. 어디부터 어디까지 알려드려야 할지 개인적으로 고민이 많았습니다. 그리고 어떻게 알려드려야 할지도 감이 잡히질 않네요. 그래서 1년 전 제가 파이썬을 시작할때의 마음으로 기초적인 부분만 간단히 다루고 실제 퀀트투자 백테스트 코드를 가지고 설명하는 편이 나을 것 같다는 결론에 도달했습니다. 우선 파이썬은 남이 만든 코드를 가져와서 쓸 수 있습니다. 예를들어 내가 KRX(한국증권거래소)에서 모든 종목을 불러온다고 했을때를 생각해보세요. 뭐 부터 시작해야 하나 막막하죠? 이럴때 "pykrx"라는 모듈(라이브러리)을 사용하면 됩니다. "pykrx"라는 모듈에서 여러 함수를 제공하는데, 제가 필요한 종목코드, 종목명, PER, PBR,... 등 데이터를 쉽.. 2021. 12. 13.
파이썬 퀀트투자 쉽게하기 - 6 파이썬(Python) 설치하기 지난번 포스트에서 말씀 드렸듯이 파이썬을 배우는 과정에서 가장 어려운 부분은 '설치'입니다. 이런 얘기를 하면 대부분 제가 거짓말이나 장난으로 얘기한다고 생각하시더라구요. 얼마 전 회사 우리부서 막내에게 파이썬을 알려주려고 파이썬을 설치해 주었습니다. 그 직원도 "설치과정이 가장 어렵다"는 말을 장난으로 받아들이더라구요. 막상 설치하는 과정을 보여주니 "정말 어렵네요."라며 제 말을 그제서야 이해했습니다. 파이썬은 다양한 모듈을 사용합니다. 일일이 설치해도 되지만, Package로 설치하면 쉽우면서 시간도 절약할 수 있습니다. Python이 '뱀'을 뜻하는 단어인건 아시죠? 파이썬 언어를 만들때 귀도 반 로섬이 자기가 좋아하는 코미디 팀 이름이 Python이라고 장난스럽게 프로그래밍 언어를 파이썬이라고 .. 2021. 12. 3.
파이썬 퀀트투자 쉽게하기 - 5 파이썬(Python) 이란? 이번 시간에는 파이썬에 대해 알아보겠습니다. Python은 1991년 프로그래머인 귀도 반 로섬이 만든 언어입니다. 프로그래밍 언어는 우리가 영어, 중국어, 한국어 등 다양한 언어를 사람들이 사용하며 소통하고 있듯이 컴퓨터와 대화할 때도 C, C#, java, Visual Basic 등 다양한 언어가 있다고 이해하시면 됩니다. Python은 많은 언어들 중 사용자가 많으며, 사용하기 쉬워서 비전공자부터 인공지능 개발자까지 다양한 분야에서 여러 목적으로 사용하고 있습니다. 저도 기계공학과를 15년전에 졸업하고, 프로그래밍과 아무 관련이 없는 일을 하다가 작년에 호기심에 파이썬을 독학하게 되었습니다. 당연히 제 프로그래밍 실력은 좋은편은 아닙니다. 전문가가 보기에는 극히 초보적인 수준일 수도 있어요. 하지만.. 2021. 12. 1.
파이썬 퀀트투자 쉽게하기 - 4 프로그래밍 없이 백테스트 하기 이번 시간에는 프로그래밍을 하지 않고, 손쉽게 백테스트 하는 방법에 대해서 포스트 해 보겠습니다. 퀀트투자는 말 그대로 계량투자를 말합니다. 일정한 조건으로 종목을 선별해서 규칙적으로 사고, 팔고(리벨런싱)을 하면서 장기간 복리수익을 기대하는 투자법입니다. 계량 조건은 간단한 PER, PBR 부터 매출액, 영업이익률 등 투자자 성향에 따라 여러 요소가 될 수 있습니다. 중요한 점은 백테스트를 통해 장기간 수익률이 괜찮은 요소로 투자를 해야 한다는 것입니다. 지난 포스트에서도 말씀 드렸듯이 시중에 판매되는 프로그램을 사용하셔서 백테스트를 해도 되지만, 더욱 간단한 방법으로 직접 백테스트를 하는 방법이 있습니다. 일단 저 PBR 기준으로 20개 종목을 선정 후 1년 후 수익률을 확인하는 백테스트 방법에 대해.. 2021. 11. 29.