'퀀트' 태그의 글 목록
본문 바로가기

퀀트35

파이썬으로 간단한 퀀트투자 백테스트 Tool(BackTester) 만들기 퀀트투자 백테스트를 여러가지로 하고 싶어서 백테스트 툴을 만들었다. 만들게 된 계기는 강환국씨와 닥터퀀트, systrader79, Quant 실전 퀀트투자(홍용찬, 이래미디어) 책을 읽고나서 왠지 간단하게 만들 수 있겠다는 생각이 들어서이다. 당연히 시중에 이렇게 백테스트를 하는 툴이 유료로 존재한다. 사실 사용해 본적은 없다. 돈이 없어서이다.(가난한 40대 가장의 현실이다.) 유로툴처럼 많은 기능이나 정확성 그리고 UI 디자인은 구현할 수 없지만, 나름 비슷하게는 만들 수 있다는 생각이 며칠전부터 들었다. 차차 업데이트를 할 목적으로 우선 간단하게 만들었다. 계략적인 기능은 아래와 같다. 그리고 1년단위로 리밸런싱 하는 조건으로 만들었다. 리밸런싱 기간 조건도 선택을 할 수 있게 기능을 추가할 수 있.. 2023. 10. 14.
퀀트투자(PBR x DPS) 백테스트 업그레이드230928 예전에 백테스트 한 퀀트투자를 다시 해 보았다. 1년이 넘어서 그런지 그 동안 프로그래밍 실력도 나아지고, 보는 눈도 좀 더 좋아진 것 같다. 조건은 KRX Data를 가져와서 저PBR x 저DPS 조합으로 20개씩 동일가중으로 매수해서 1년 후 매도하는 전략이다. 어차피 현실에서는 많은 변수가 있으니 날짜 부분은 매월 첫째일에 투자해서 1년 후 대충 11번째 날에 매도하는 방법으로 했다. 우선 결과는 아래와 같다. 지난번 테스트에는 매년 2월과 11월 초에 투자하는 것이 유리하다고 생각했다. 하지만, 손실이 나는 해의 개수를 비교해보니 2월과 12월이 2번으로 가장 적었다. 초기에 1천만원 투자금으로 추가 불입없이 19년간 투자를 진행하는 시물레이션이다. 19년 후에는 2월 12월 각각 원금대비 187.. 2023. 9. 28.
퀀트투자 - 백테스트 할 날짜 가져오기 백테스트를 하기 위해서는 날짜가 필요하다. 내가 투자를 하고나서 일정시점 또는 기간 동안에 수익을 확인해야지 내가 하려는 방법이 옳은지 그른지 판단이 선다. 주식시장은 영업일에만 개장한다. 수익을 확인하기 위해서는 해당일의 종가를 알아야 하고, 해당일이 영업일이 아니면 종가를 가져오지 못한다. 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.
퀀트투자 - 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.
퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 예전에 저PBR 과 저DPS 조합으로 퀀트투자 백테스트를 한 적이 있다. 저PBR X 저DBS 조합 퀀트투자 백테스트 그 당시에는 모든 것이 완벽할 것이라고 생각하고 바로 실행해 보았다. 막상 실제로 투자를 해 보니 여러가지 문제에 부딪히게 되었다. 가장 큰 부분이 멘탈관리 적인 부분이다. 원래 11월 초에 사서 1년 보유 후 수익여부와 관계없이 되파는 것이었는데, 주가의 등락이 심해서 마음을 계속 졸였다. 특히나 손실이 발생하고 있는 시점이나, 어느정도 수익이 발생했을 때 어떻게 할 것인지에 대한 대비가 전혀 없었다. 다행인지 모르겠지만, 조금의 수익만 보고 전량 매도해 버렸다. 그리고 다시 백테스트를 하고 있다. 내 짧은 지식으로 어떻게 해야할지 몰라서 일단 생각나는 아이디어로 코드를 짜 보았다. 1.. 2022. 9. 21.
파이썬 마법의 공식 - 7. PER, ROA 순위를 매겨서 투자 종목 선정하기 이번 포스트는 지난번에 만든 PER, ROA를 가져오는 함수를 이용해서 전 종목의 PER과 ROA의 순위를 매긴다음 조엘그린블란트의 마법의 공식과 비슷하게 20개 종목을 고르는 코드를 작성해 보겠습니다. 지난 포스트는 아래 링크를 참고하세요. 2022.07.25 - [집구석 강의/파이썬으로 마법의 공식 구현하기] - 파이썬 마법의 공식 - 6. ROA 가져오기 파이썬 마법의 공식 - 6. ROA 가져오기 지난번까지 전체 종목을 가져와서 PER까지 가져오는 방법을 알아보았습니다. 지난번 포스트는 아래 링크를 참고하세요. 2022.07.13 - [집구석 강의/파이썬으로 마법의 공식 구현하기] - 파이썬 마법 dotsnlines.tistory.com def make_magic_df(year, date): # .. 2022. 8. 15.
파이썬 마법의 공식 - 6. ROA 가져오기 지난번까지 전체 종목을 가져와서 PER까지 가져오는 방법을 알아보았습니다. 지난번 포스트는 아래 링크를 참고하세요. 2022.07.13 - [집구석 강의/파이썬으로 마법의 공식 구현하기] - 파이썬 마법의 공식 - 5. PER 가져오기 파이썬 마법의 공식 - 5. PER 가져오기 2022.06.28 - [집구석 강의/파이썬으로 마법의 공식 구현하기] - 파이썬 마법의 공식 - 4. 모든 종목번호, 종목명 가져오기 파이썬 마법의 공식 - 4. 모든 종목번호, 종목명 가져오기 조엘 그린블란트 dotsnlines.tistory.com 이번 포스트는 ROA를 가져오는 방법을 알아보도록 하겠습니다. ROA는 크롤링을 해야 합니다. 우선 인터넷 브라우저 주소입력창에 "https://comp.fnguide.com" .. 2022. 7. 25.
파이썬 마법의 공식 - 5. PER 가져오기 2022.06.28 - [집구석 강의/파이썬으로 마법의 공식 구현하기] - 파이썬 마법의 공식 - 4. 모든 종목번호, 종목명 가져오기 파이썬 마법의 공식 - 4. 모든 종목번호, 종목명 가져오기 조엘 그린블란트의 마법의 공식을 구현하기 위해서는 우선 주식시장에 상장된 전체 종목을 가져와야 합니다. 여러가지 방법이 있겠지만, 저는 KRX에서 전체 종목을 가져오도록 하겠습니다. 다행 dotsnlines.tistory.com 지난 포스트에는 pykrx 라이브러리를 사용해서 상장된 모든 종목을 가져왔습니다. 이번 포스트는 per을 가져와서 정리해 보도록 하겠습니다. 전체 종목 리스트는 pykrx 모듈을 이용해서 가져왔습니다. PER도 pykrx를 사용해서 가져오겠습니다. 가져온 데이터를 테이블 형식으로 만들기.. 2022. 7. 13.
파이썬 마법의 공식 - 4. 모든 종목번호, 종목명 가져오기 조엘 그린블란트의 마법의 공식을 구현하기 위해서는 우선 주식시장에 상장된 전체 종목을 가져와야 합니다. 여러가지 방법이 있겠지만, 저는 KRX에서 전체 종목을 가져오도록 하겠습니다. 다행히 어느 능력자께서 'pykrx'라는 라이브러리를 만드셔서 상장된 전체 주식종목을 아주 쉽게 가져올 수 있습니다. 혹시나 모르시는 분들이 계실수도 있어서 기초적인 사항 하나만 먼저 말씀드리겠습니다. 파이참을 열어보시면 왼쪽에 위의 그림과 같이 탐색창이 나옵니다. 마우스 오른쪽 버튼을 클릭하면 메뉴창이 나오는데, "New > Directory"를 선택하면 폴더를 생성할 수 있고, "New > Python File"을 선택하면 우리가 코딩하는 창을 만들 수 있습니다. 폴더이름과 파일이름은 아무거나 만드셔도 상관 없습니다. 이.. 2022. 6. 28.
파이썬 마법의 공식 - 2. 파이썬 설치하기 제 경험상 파이썬을 배우는 과정에서 가장 힘든 부분은 아나콘다, 파이참 등 관련 프로그램을 설치하는 과정이었습니다. 파이썬을 시작하기 위한 설치만 완료 한다면 7부 능선은 넘은거라 생각하셔도 됩니다. 예전에 파이썬을 설치하는 포스트를 쓴 적이 있어서 링크를 걸어 드리겠습니다. 아래 링크를 참고하세요. 2020.11.12 - [취미로 하는 파이썬/시작 - 아나콘다,파이참 설치] - 파이썬 시작하기 1 - 아나콘다 쉽게 설치하기 파이썬 시작하기 1 - 아나콘다 쉽게 설치하기 www.anaconda.com/products/individual Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to p.. 2022. 6. 20.
파이썬 마법의 공식 - 1. 시작하는 글 제 블로그의 구독자 중 한 분께서 "조엘그린블란트"의 마법의 공식을 파이썬으로 구현하고 싶다는 요청이 있었습니다. 파이썬에 아직 익숙하지 않으셔서 코딩에 어려움을 겪고 계시다고 하셔서 함께 고민할겸 "마법의 공식"을 파이썬으로 구현하는 강의 포스트를 개설했습니다. 조엘그린블란트는 1985년 ~ 2005년까지 약 20년간 연 40%의 수익율을 올린 고담 캐피털의 설립자이자 경영파트너입니다. 이 분이 돈은 많은데 명예욕이 있어서 책을 쓰셨어요. 첫번째 책이 "주식시장을 이기는 작은책"입니다. 이 책에서 나오는 주식 투자 방법이 있는데, 어린 아들도 이 방법으로 투자하더라도 무조건 수익을 볼 수 있는 법칙을 적었습니다. 일종의 계량투자(퀀트투자)법인데, 2006년 이 책이 발매될 당시 선풍적인 인기를 얻었습니.. 2022. 6. 12.
파이썬 퀀트투자 쉽게하기 - 11. 종목 고르는 프로그램(실행파일) 무료 배포 지난번 사정상 급하게 마지막 강의를 마무리하고 오랜만에 다시 포스트를 올려 봅니다.파이썬을 배우시는 목적에서 나름 설명을 드렸으나, 종목을 고르는 코드만 필요하신 분들도 계실거라는 생각이 듭니다.그래서 이번 포스트는 투자할 종목을 고르는 코드를 설명드리고, 포스트의 마지막에는 제가 만든 프로그램도 배포 드릴려고 합니다.우선 전체 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 .. 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.
파이썬 퀀트투자 쉽게 하기 - 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.
파이썬 퀀트투자 쉽게하기 - 3 현실적인 퀀트투자 방법 퀀트투자 책들을 읽어보면 대부분 어렵습니다. 최소한 제 경우는 그랬습니다. 설사 이해가 된다고 하더라도 구현하기가 상당히 어렵습니다. 조엘 그린블란트라는 유명한 펀트매니저가 쓴 "주식시장을 이기는 작은책"은 그나마 쉬운 편입니다. 높은 이익수익률과 높은 자본수익률을 내는 회사를 20 ~ 30개 쯤 사서 3년 보유하면 된다고 합니다. 이것을 마법의 공식이라고 저자가 불렀고, 1988년 ~ 2004년까지의 마법의 공식 평균 수익률은 30.8%가 된다고 책에 적혀 있습니다. 저는 책은 재미있게 읽었는데, 도통 어떻게 하라는지 이해가 가지 않더라구요. 그래서 책 맨 뒤에 적혀있는 "일반적인 선별 방법"을 시도해 보았습니다. 일반적인 선별방법은 높은 ROA와 낮은 PER을 순위를 매긴 후 더해서 낮은 순으로 20.. 2021. 11. 24.
파이썬 퀀트투자 쉽게하기 - 2 사람의 두뇌는 투자에 실패하도록 설계되었다. 사람의 두뇌가 투자에 적합하지 않다는 주제의 책들은 차고 넘쳐납니다. 혹시 모르실 분들을 위해 제 경험을 빗대어서 우리의 두뇌가 얼마나 투자에 부적합한지를 적어보려고 합니다. 1. 비일관성 광고 중에 "배고플 때 너는 네가 아니야" 라는 광고 대사가 있습니다. 사람들은 배고플때 올바른 판단을 하지 않는 경우가 있습니다. 허기가 질 때 외에도 시간이 촉박하거나, 정서적으로 안정되지 못 할때 올바른 판단을 내리기가 쉽지 않습니다. 투자를 할 때는 일관적인 방법으로 해야 합니다. 오늘 기분이 좋아서 주식을 사고, 내일은 기분이 나빠서 시장에 내다 판다면 만족할 만한 수익을 얻기란 힘이 듭니다. 2. 직관체계 행동경제학으로 노벨경제학상을 받은 데일 카너먼 교소는 우리뇌에 두 가지 시스템이 있다고 합니다. 하나는.. 2021. 11. 22.