'파이썬으로 만든 것들' 카테고리의 글 목록 (4 Page)
본문 바로가기

파이썬으로 만든 것들81

퀀트투자 백테스트 - PER X PBR 콤보 전략 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 지난번 포스트에서 저 PER 백테스트를 진행했다. 결과는 생각보다 실망스러웠다. 그래서 이번에는 PER과 함께 저 PBR을 접목해서 콤보전략으로 백테스트를 진행한 결과를 기록해 보겠다. 블로그에 수차례 언급하지만, 퀀트투자는 백테스트를 직접 해 보아야 한다. 변수가 너무나 많다. 그리고 변수 하나에 따라 결과가 천차만별로 나온다. 이번 테스트는 PER 0 이상, PBR 0이상인 종목을 기준으로 낮은 PER, PBR 순으로 정렬 후 20개를 뽑았다. 방법은 간단하다. 0이상인 PER을 오름차순으로 정렬한.. 2021. 11. 15.
퀀트투자 백테스트 - 파이썬 코드로 특정기간 영업일만 가져오기 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 백테스트를 하기 위해서는 테스트 기간동안의 영업일만 가져와야 한다. 구글에서 검색해 보면 다양한 방법이 많이 나온다. 하지만, 잘 안된다. 나는 pykrx를 이용해서 영업일을 가져왔다. 아주 잘 된다. 영업일을 가져오기 위해 2가지 방법을 찾았다. 첫번째는 datetime 라이브러리를 이용하는 방법이고, 다른 방법은 pandas의 date_range를 이용하는 방법이다. 우선 datetime 라이브러를 이용하는 방법부터 살펴보겠다. 1 2 3 4 5 6 7 8 9 from datetime import .. 2021. 11. 13.
퀀트투자 백테스트 - 저 PER 20종목 (All Market, 거래량 0이상) 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 백테스트를 진행하면 할 수록 오류를 찾게된다. 저 PER 조건으로 백테스트를 여러차례 진행하면서 개선된 사항을 기록으로 남기려고 한다. PBR이 낮은 순으로 정렬을 한 다음 순위를 매겨서 20 종목만 투자를 하는 테스트이다. 17년 동안 투자를 하며, 매월 4일에 리밸런싱하는 조건이다. 퀀트책을 읽다보면 저 PER 로 투자를 하는 방법에 대한 내용이 나온다. 그 책에서는 어떻게 투자를 했는지 모르겠지만, 내가 직접 테스트 한 결과만 봐서는 좋은 투자법이 아닌 것 같다. 5월이 가장 수익률이 높.. 2021. 11. 11.
퀀트투자 백테스트 - 매수종목 20 (21.11.05~21.11.08) 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 백테스트를 하다보니 수익률이 높은 조합을 찾았다. 당연히 백테스트 과정에서 내가 찾지못한 오류가 있다고 생각한다. 하지만 그 오류를 아직 찾지 못했다. 백테스트만 하며, 소중한 인생을 다 흘려 보내겠는가? 아니면, 어느정도 테스트를 한 결과로 실제 투자를 하겠는가?를 나 스스로 많이 고민했다. 결론적으로 일단 투자를 해보기로 했다. 백테스트가 완벽하지 않다는 것을 알기에 실전 투자도 분명히 필요하리라 생각한다. 투자를 하기로 결정을 하고 난 후의 고민은 "얼마를 투자해야 하는가?" 이다. 예전.. 2021. 11. 9.
퀀트투자 백테스트 - 현실적인 백테스트 방법 - 2 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 프로그램을 사용하지 않고, 보통사람이 할 수 있는 가장 현실적인 퀀트투자 방법 2번째 포스트다. 첫 번째 포스트는 누구나 할 수 있지만, 아주 시간이 오래 걸리는 방법이다. 아래 링크를 참고하길 바란다. 퀀트투자 백테스트 - 현실적인 백테스트 방법 - 1 두 번째 방법은 진입장벽이 약간 있는 방법이다. 파이썬이라는 언어를 공부하고 사용해야 한다. 하지만, 결코 어렵지 않다. 시간만 조금 투자하면 누구나 쉽게 배우고, 활용도가 높은 프로그램이 '파이썬'이다. 혹시나 관심이 있는 사람이 지금 포스.. 2021. 11. 5.
퀀트투자 백테스트 - 현실적인 백테스트 방법 - 1 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 프로그램을 사용하지 않고, 보통 사람이 할 수 있는 가장 현실적인 퀀트투자 방법을 소개하려고 한다. 이런 내용은 퀀트책 몇 권만 보면 나온다. 내 경험까지 추가해서 누구나 할 수 있는 방법을 기록해 보겠다. 1. Python 프로그램을 못하고, 앞으로 할 계획이 없는 경우 IT 강국인 우리나라에는 'KRX' 사이트가 있다. 참으로 고마운 사이트이다. 여기에서는 날짜 별, 종목별로 종가, PBR, PER, PSR, DIV 등의 데이터를 무료로 제공받을 수 있다. 1) KRX에서 위의 그림에서 보.. 2021. 11. 3.
퀀트투자 백테스트 - 저 PBR 20종목 (All Market) 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 지난번 포스트까지 백테스트 파이썬 코드에서 약간의 실수가 있었다. 데이터를 스크래핑 할때 'KOSPI'만 가져온 것이다. 왠지 종목수가 적게 나와서 좀 의아하게 생각했다. 그래서 전체 시장, 즉 코스피와 코스닥의 데이터를 모두 불러와서 저 PBR로 20종목을 골라낸 후 백테스트를 해 보았다. 파이썬 코드는 길지 않은데, 17년치를 백테스트 하다보니 프로그램을 돌리는 시간이 약 30분 정도 걸린다. 이 시간이 너무나 길게 느껴진다. 비효율적이다. 그래서 multiprocessing을 구현하려고 하는데, .. 2021. 11. 1.
퀀트투자 백테스트 - 저 PBR 20종목 VS 30종목 승자는? 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 책을 보면 20개 또는 30개를 사서 매매하라고 한다. 저 PBR 같은 경우에는 20개 사는 것이 유리할까? 30개 사는 것이 유리할까? "17년치 X 월별 X 2가지 조건" 이런 경우의 수를 다 해 보면 알지 않을까? 하루에 하나씩 분석 한다면 약 1년 3개월이면 다 계산하고 분석할 수 있겠다. ...죄송하다. 헛소리 했다. 다행히 파이썬으로 코드를 다 만들었다. 20분이면 결과가 예쁘게 엑셀파일에 출력이 된다. 저 PBR 순으로 오름차순 정렬을 한 뒤 월 별 20개 종목만 선정을 했다. 월.. 2021. 10. 28.
퀀트투자 백테스트 - 저 PBR 투자 수익률 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 재무데이터 구하기 너무 어렵다. 공짜로 얻으려고 하니 더욱 구하기가 어려운 것 같다. 네이버금융에서 크롤링을 해봤자 5년치 정도 밖에 안되고, DART는 그나마 2012년부터 제공이 되는것 같지만, 전 종목을 구하는데 시간도 오래걸리고 데이터 전처리도 필요할 것 같다. 시간이 날때 fnguide에 돈을 주고 다운로드 받을까 하는데, 예전에 가입해 논 비번을 까먹었다. 이메일도 어떤걸로 등록했는지 기억이 나질 않는다. 퀀트킹과 젠포트가 유명하던데 돈 주고 이용할까 생각도 했지만, 백테스는 작은 조건에 의.. 2021. 10. 26.
퀀트투자 백테스트 - 워런버핏이 사용하던 NCAV 투자법 파이썬 코드 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 지난 포스트에 이어서 NCAV를 이용해서 백테스트 한 파이썬 코드 기록이다. 개념은 간단하다. NCAV가 "유동자산 - 총부채 > 시가총액" 조건이기 때문에 3가지 수치만 가져오면 된다. 어떻게... 나는 IT 업계에서 일하는 사람이 아니다. 당연히 파이썬도 독학으로 배운지 1년 정도 되었다. 그리고 금융관련 지식이라곤 재테크 책 몇 권 읽은것이 전부다. 이렇게 간단한 조건을 어렵게 생각하는 내가 과연 파이썬 코드로 구현할 수 있을지 너무나 내 자신에 대해 의구심이 가득했지만, 결과적으로는 만들었다. .. 2021. 10. 24.
퀀트투자 백테스트 - 워런버핏이 큰 돈을 번 NCAV 투자법 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 퀀트투자 서적을 2권 읽었다. 예전에 읽었던 조엘그린블란트의 '주식시장을 이기는 작은 책'이나 그레이엄의 '현명한 투자자' 같은 뜬구름 잡는 책이 아니라 실용서에 가까운 책을 읽었다. 책을 읽을때는 금방 부자가 될 것 같이 행복했지만 막상 백테스트를 시작하려니 많은 어려움과 마주쳤다. 가장 큰 문제는 주가 정보나, 재무정보에 대한 데이터를 구할 수 없다는 점이다. 네이버 금융에서 크롤링해서 가져올 수 있는 데이터는 최대 5년 정도 되고, DART API를 통해서 가지고 올 수 있는 데이터는 9년정도 된.. 2021. 10. 22.
퀀트투자 백테스트를 한 번 해보기로 했다. 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 책을 읽었다. 퀀트 투자 책이다. 2021.10.18 - [리뷰/책] - 할수있다 퀀트투자 - 독서후기 할수있다 퀀트투자 - 독서후기 이 책을 읽고나서 소크라테스의 "너 자신을 알라!!" 라는 문장이 떠올랐습니다. '투자'를 하든, 본인의 꿈을 이루든 성공확률을 높이는 방법은 본인의 재능과 장, 단점을 빠르게 파악하는게 아닐 dotsnlines.tistory.com 강환국이라는 분이 쓰신 책이다. 나보다 나이는 어리지만 이 책은 2016년도에 쓰셨고, 지금은 FIRE 족으로 경제적 자유를 누리고 있다고.. 2021. 10. 20.
(업데이트) 파이썬으로 마법의 공식 구현하기 4 - 전체 코드 (파이썬 코드파일 공유) 지난 포스트까지 전체 종목코드와 PER을 가져오고, 에프엔가이드 사이트에서 ROA를 크롤링해서 데이터프레임을 만들고 마법의 공식을 구현하는 코드를 작성해 보았습니다. 이전 포스트는 아래링크를 클릭하세요 ↓ 2021.05.26 - [취미로 하는 파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기 파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기 조엘그린블란트의 마법의 공식은 상당히 유명합니다. PER과 ROA를 이용해서 종목을 골라내는 방법이죠.(엄밀히 말하면 실제 마법의 공식과 약간 다릅니다.) 우리나라에서는 맞지 않다고 하시는 dotsnlines.tistory.com 2021.05.27 - [취미로 하는 파이썬/Python P.. 2021. 5. 29.
파이썬으로 마법의 공식 구현하기 3 - ROA, PER의 순위를 매겨서 최종순위 정렬하기 지난번 포스트까지 전 종목 코드와 PER을 가져오는 함수와 코드를 입력하면 ROA를 가져올 수 있는 함수를 만들었습니다. 지난번 포스트는 아래 링크를 참고하세요. ↓ 2021.05.27 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 2 - ROE 가져오기 이번에는 이미 만들어진 함수를 가지고 데이터프레임을 만들고 각각 순위를 매겨서 최종 순위를 매기는 코드를 만들어 보겠습니다. # krx 데이터 '종목코드', '종목명', 'PER' 가져오기 codes = get_ticker_per(date) codes['종목코드'] = codes.index 종목코드와 PER을 가져와서 codes라는 변수의 데이터프레임에 담습니다. 종목코드는 인덱스로 되어있기 때문에 임의로 종목코드의 컬럼을.. 2021. 5. 28.
파이썬으로 마법의 공식 구현하기 2 - ROA, ROE 가져오기 지난번 포스트에 이어서 이번에는 ROA를 웹에서 가져오는 방법을 기록하겠습니다. 지난번 포스트는 아래 링크를 참고하세요 ↓ 2021.05.26 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기 requests 모듈을 이용해서 에프엔가이드에서 제공하는 ROA를 가져오겠습니다. code 명과 가져올 시점(해당 분기 또는 사업보고시점)을 파라미터로 넣어주면 ROA를 가져오는 과정입니다. ROA를 가져오는 김에 ROE도 함께 불러오도록 하겠습니다. url = 'https://comp.fnguide.com/SVO2/ASP/SVD_FinanceRatio.asp?pGB=1&gicode=' + code + \ '&cID=&MenuYn=Y&ReportGB=.. 2021. 5. 27.
파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기 조엘그린블란트의 마법의 공식은 상당히 유명합니다. PER과 ROA를 이용해서 종목을 골라내는 방법이죠.(엄밀히 말하면 실제 마법의 공식과 약간 다릅니다.) 우리나라에서는 맞지 않다고 하시는 분이 많은데, 예전에 엑셀 매크로로 10년치 데이터를 백테스트 해 보니 평균 수익률이 꽤 높더라구요. 저는 마법의 공식으로 실제로 투자를 해서 23%, 15% 수익을 4개월만에 달성한 적도 있습니다. 코로나 폭락장 이전부터 폭락장이 이어지는 내내 마법의 공식으로 투자를 했는데, 투자 수익률이 나쁘지 않았습니다. 더구나 오래 보유하고 있으면 수익률이 많이 상승하는 경험도 있었습니다. 좀 더 마법의 공식을 쉽게 하기 위해서 파이썬으로 구현을 했었습니다. 본업이 바빠서 한동한 투자에 손을 놓고 지내다가 다시 마법의 공식을 .. 2021. 5. 26.
파이썬을 이용하여 10년치 재무제표 가져오기 - 5. 재무비율 추가하기 2021.05.16 - [분류 전체보기] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 4. 코드 개선하기 파이썬을 이용하여 10년치 재무제표 가져오기 - 4. 코드 개선하기 지난번 포스트까지 DART(전자공시)에서 10년치 제무재표 데이터를 가져오는 파이썬 코드를 작성했습니다. 2021.05.15 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계 dotsnlines.tistory.com 지난번 포스트에서는 재무제표를 좀 개선하는 내용을 다루었습니다. 이번 포스트는 가져온 재무제표 데이터를 이용해서 재무비율을 추가해 보도록 하겠습니다. 재무비율 추이를 보면, 해당 기업의 상황을 이해하는데 도움이 됩니다. 완전 코딩과 관련이 없는 사람이 이런걸 .. 2021. 5. 17.
파이썬을 이용하여 10년치 재무제표 가져오기 - 4. 코드 개선하기 지난번 포스트까지 DART(전자공시)에서 10년치 제무재표 데이터를 가져오는 파이썬 코드를 작성했습니다. 2021.05.15 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계산서, 현금흐름표 가져오기 파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계산서, 현금흐름표 가져오기 지난 포스트에 이어서 손익계산서와 현금흐름까지 10년치 데이터를 가져와 보도록 하겠습니다. 2021.05.14 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 2. 재무상태표 가 dotsnlines.tistory.com 그런데, 문제가 생겼습니다. DART에서 받은 데이터가 회사별로 양식이 다 다르네요... 삼성전자로 코드를.. 2021. 5. 16.
파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계산서, 현금흐름표 가져오기 지난 포스트에 이어서 손익계산서와 현금흐름까지 10년치 데이터를 가져와 보도록 하겠습니다. 2021.05.14 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 2. 재무상태표 가져오기 파이썬을 이용하여 10년치 재무제표 가져오기 - 2. 재무상태표 가져오기 지난 포스트에서 DART(전자공시시스템)의 API를 통해 10년치 재무제표 데이터를 가지고 왔습니다. 가져온 데이터는 항목이 너무 많아서 분석이 어렵습니다. 분석을 할 수 있도록 필요한 항목만 빼 dotsnlines.tistory.com 손액계산서는 시트명이 'Data_is'로 되어 있네요. 변수로 저장합니다. 가져올 항목을 'is_items'라는 List에 저장합니다. 각 항목별 데이터를 위의 코드와 같이.. 2021. 5. 15.
파이썬을 이용하여 10년치 재무제표 가져오기 - 2. 재무상태표 가져오기 지난 포스트에서 DART(전자공시시스템)의 API를 통해 10년치 재무제표 데이터를 가지고 왔습니다. 2021.05.13 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 1. Dart(전자공시)에서 10년 재무제표 데이터 가져오기 파이썬을 이용하여 10년치 재무제표 가져오기 - 1. Dart(전자공시)에서 10년 재무제표 데이터 가져 주식투자를 하다보면 재무제표를 확인해야 하는 경우가 있습니다. 증권사에서 제공하는 데이터도 유용하지만, 좀 더 깊이있게 기업을 분석하기 위해서는 10년 정도의 데이터를 확인하는 것이 dotsnlines.tistory.com 가져온 데이터는 항목이 너무 많아서 분석이 어렵습니다. 분석을 할 수 있도록 필요한 항목만 빼내서 보기좋게 .. 2021. 5. 14.