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

Python28

퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 예전에 저PBR 과 저DPS 조합으로 퀀트투자 백테스트를 한 적이 있다. 저PBR X 저DBS 조합 퀀트투자 백테스트 그 당시에는 모든 것이 완벽할 것이라고 생각하고 바로 실행해 보았다. 막상 실제로 투자를 해 보니 여러가지 문제에 부딪히게 되었다. 가장 큰 부분이 멘탈관리 적인 부분이다. 원래 11월 초에 사서 1년 보유 후 수익여부와 관계없이 되파는 것이었는데, 주가의 등락이 심해서 마음을 계속 졸였다. 특히나 손실이 발생하고 있는 시점이나, 어느정도 수익이 발생했을 때 어떻게 할 것인지에 대한 대비가 전혀 없었다. 다행인지 모르겠지만, 조금의 수익만 보고 전량 매도해 버렸다. 그리고 다시 백테스트를 하고 있다. 내 짧은 지식으로 어떻게 해야할지 몰라서 일단 생각나는 아이디어로 코드를 짜 보았다. 1.. 2022. 9. 21.
파이썬으로 PER 밴드 차트 그리기 3 - qt designer로 UI 만들기 2022.09.07 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 차트 그리기 2 - 수정주가 가져와서 선형으로 그래프 그리기 파이썬으로 PER 밴드 차트 그리기 2 - 수정주가 가져와서 선형으로 그래프 그리기 2022.09.05 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드를 만들어 보았습니다. https://m.blog.naver.com/PostView.nave.. dotsnlines.tistory.com 지난번 포스트에서 얘기한 것 처럼 UI를 만드는 방법입니다. 컨센서스도 가져와서 미래 예측까지 보여주려고 했는데, 잘 안되네요. 이 부분은 나중에 여유가 생기면.. 2022. 9. 19.
파이썬으로 PER 밴드 차트 그리기 2 - 수정주가 가져와서 선형으로 그래프 그리기 2022.09.05 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드를 만들어 보았습니다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kbomb2000&logNo=221295759491 PER band 그리기 해당 글에도 언급이 되어 있듯이 피터 린치는.. dotsnlines.tistory.com 지난번 포스트에서 만들어 본 PER 밴드를 좀 더 다듬어 보겠습니다.(지난번 포스트는 위의 링크를 참고하세요) 지난번 포스트에서 PER 밴드를 만드는 과정에서 2가지 고민할 부분이 있었습니다. 첫번째, 주가를 PER x EPS로 구해서.. 2022. 9. 7.
파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드를 만들어 보았습니다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kbomb2000&logNo=221295759491 PER band 그리기 해당 글에도 언급이 되어 있듯이 피터 린치는 주식의 고평가 기준을 '이익선' 을 기준으로 삼고 주가가 이... blog.naver.com 네이버를 검색하다가 엑셀로 PER 밴드를 그리는 포스트를 쓰신 분을 발견하게 되었습니다. (위에 링크) 파이썬으로 PER을 그리면 훨씬 편리할 것 같은데, 그런 포스트는 검색을 해도 찾을 수가 없었습니다. 그래서 간단히 한 번 만들어 보았습니다. 기본 개념은 간단합니다. 저도 PER 밴드를 만드는 원리를 파이썬으로 구현하면서 알게 .. 2022. 9. 5.
파이썬 퀀트투자 쉽게 하기 - 7. 파이썬 기초 파이썬 코드를 짜기위한 기초적인 부분만 설명하려고 합니다. 어디부터 어디까지 알려드려야 할지 개인적으로 고민이 많았습니다. 그리고 어떻게 알려드려야 할지도 감이 잡히질 않네요. 그래서 1년 전 제가 파이썬을 시작할때의 마음으로 기초적인 부분만 간단히 다루고 실제 퀀트투자 백테스트 코드를 가지고 설명하는 편이 나을 것 같다는 결론에 도달했습니다. 우선 파이썬은 남이 만든 코드를 가져와서 쓸 수 있습니다. 예를들어 내가 KRX(한국증권거래소)에서 모든 종목을 불러온다고 했을때를 생각해보세요. 뭐 부터 시작해야 하나 막막하죠? 이럴때 "pykrx"라는 모듈(라이브러리)을 사용하면 됩니다. "pykrx"라는 모듈에서 여러 함수를 제공하는데, 제가 필요한 종목코드, 종목명, PER, PBR,... 등 데이터를 쉽.. 2021. 12. 13.
퀀트투자 백테스트 - 파이썬 코드로 특정기간 영업일만 가져오기 본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다. 백테스트를 하기 위해서는 테스트 기간동안의 영업일만 가져와야 한다. 구글에서 검색해 보면 다양한 방법이 많이 나온다. 하지만, 잘 안된다. 나는 pykrx를 이용해서 영업일을 가져왔다. 아주 잘 된다. 영업일을 가져오기 위해 2가지 방법을 찾았다. 첫번째는 datetime 라이브러리를 이용하는 방법이고, 다른 방법은 pandas의 date_range를 이용하는 방법이다. 우선 datetime 라이브러를 이용하는 방법부터 살펴보겠다. 1 2 3 4 5 6 7 8 9 from datetime import .. 2021. 11. 13.
Python - openpyxl 을 사용 중 값이 아닌 수식을 가져올때 해결방법 openpyxl 라이브러리를 사용하여 특정셀의 값을 가져올 수가 있습니다. 값을 가져오려고 했는데, 예기치 않게 수식을 가져오는 경우가 발생하더라구요. 예제를 통해 보겠습니다. 이렇게 임의로 10, 20 그리고 "=A1 + B1" 수식을 차례로 입력하였습니다. 코드를 위와 같이 입력하고 결과값을 출력해 보도록 하겠습니다. C1 셀은 '30'이 아닌 수식("=A1+B1")이 출력 되었습니다. openpyxl 라이브러리가 익숙하지 않은 탓에 다소 당황했습니다. 이럴때는 load_workbook 클래스에서 파일을 가져오는 옵션을 추가해주면 수식이 아닌 값을 가져올 수 있습니다. wb = load_workbook(file, data_only=True) 이런식으로 'data_only=True' 옵션을 추가로 넣어.. 2021. 10. 30.
파이썬으로 쉽고 빠르게 빈 폴더 찾아서 폴더명 바꾸기 컴퓨터를 사용해서 일을 하다보면, 많은 폴더를 사용할 때가 있습니다. 좀 더 복잡하고, 정신없이 일을 하다보면 빈 폴더도 여러개 만들어질 때도 있습니다. 이럴때 빈폴더인지 여부를 파이썬을 이용해서 쉽고, 빠르게 찾아낼 수 있습니다. 더욱이 빈폴더의 폴더명을 바꿔서 표시하는 것도 가능합니다. 파이선을 잘 활용하면, 여유있게 일을 할 수도 있겠네요. from tkinter import * import os 가져올 모듈은 'tkinter'와 'os' 모듈입니다. 사실 'os' 모듈만 있어도, 원하는 기능을 작동하기에 충분하지만, 나중에 exe 파일로 만들어서 보다 편리하게 사용하기 위해서 'tkinter'도 함께 사용했습니다. win = Tk() lbl = Label(win, text='현재 폴더에서 빈폴더를.. 2021. 10. 16.
파이썬으로 여러 폴더 빠르고 쉽게 만들기 컴퓨터로 작업을 하다 보면 수많은 폴더를 만들어야 할 때가 있습니다. 이런일이 반복된다면 파이썬으로 프로그래밍을 해서 업무를 좀 더 효율화 시킬 수 있습니다. 우선 만들 폴더의 명을 엑셀파일에 입력하도록 하겠습니다. C:D 열에 순서를 나타내는 번호와 폴더 이름을 입력했습니다. 주의할 점은 C열에 숫자는 문자입니다. 만약 숫자를 적으면 파이썬 코드에서 문자로 변경해 주어야 합니다. 수십개나 수백개를 하더라도 속도차이는 거의 없습니다. 일단 예시로 5개 폴더만 만들어 보겠습니다. from openpyxl import load_workbook from tkinter import * from tkinter import filedialog import os 모듈은 엑셀을 열어야 하니 openpyxl에서 기존 만.. 2021. 10. 14.
tkinter - 섭씨 온도를 화씨온도로 변환하는 프로그램 만들기 tkinter를 응용해서 섭씨온도(℃)를 입력하면, 화씨온도(℉)로 변환해주는 프로그램을 만들어 보도록 하겠습니다. from tkinter import * win = Tk() win.title('섭씨 온도를 화씨 온도로 변환') win.geometry('400x100') lbl_c = Label(win, text="섭씨온도", width=10) lbl_f = Label(win, text="화씨온도") lbl_c.grid(row=0, column=0) lbl_f.grid(row=1, column=0) ent_c = Entry(win, width=20) ent_f = Entry(win) ent_c.grid(row=0, column=1) ent_f.grid(row=1, column=1) btn_tr = But.. 2021. 10. 12.
파이썬 - 문장에서 특정 문자 포함 여부(포함개수) 확인 방법 파이썬에서는 문장에서 특정 문자가 포함되었는지 여부를 쉽게 찾을 수 있습니다. 파이참에서 임의로 문장을 만들어서 'string'이라는 변수에 저장해 봅니다. 여기서 '파이썬'이라는 단어가 포함되었는지 확인해 봅시다. '파이썬'이라는 단어를 'word'라는 변수에 저장합니다. if문을 사용하여 위의 그림과 같이 코딩을 합니다. "찾고자 하는 글자 in 문장" ==>> 이렇게 하면 특정글자 포함 여부를 확인할 수 있습니다. 제대로 결과가 나왔네요. 그럼 이번에는 찾고자 하는 글자가 몇개가 포함되었는지 확인하는 코드를 작성해 보겠습니다. 위의 그림과 같이 코드를 작성해 봅니다. "문장.count(찾고자 하는 글자)" ==>> 이런 형식으로 작성하면 됩니다. 결과가 제대로 출력 된 것을 확인할 수 있습니다. 2021. 6. 20.
Python(파이썬) openpyxl - 엑셀 스타일 지우기(주의) 다른 사람의 엑셀파일에다 작업을 하다보면 필요없는 스타일이 만들어지게 됩니다. 이런 지저분한 스타일 때문에 엑셀파일이 느려지거나 에러가 발생하는 경우도 있습니다. 사용자가 지정한 스타일을 파이썬을 사용하여 자동으로 삭제해 보도록 하겠습니다. 스타일을 삭제하기 전 파일 모습은 아래와 같습니다. 스타일을 지우기 위한 파이썬 코드는 아래와 같습니다. 실행을 시켜보니 큰일이 났네요....ㅠㅠ 이렇게 되어 버렸어요....ㅠㅠ 스티일은 지워졌는데, 모든 적용된 양식들이 싹 다 지워졌네요.... 이렇게 되면 못쓰겠네요....ㅠㅠ 구글링을 열심히 해서 만들었는데, 비전공자의 능력은 여기까지인가 보네요.... 혹시 스타일을 지우시고 싶은 분은 아래에 VBA 로 만든 코드 참고하시기 바랍니다. 2020.11.28 - [I.. 2021. 5. 6.
python(파이썬) openpyxl - 열 위치를 숫자로 가져오기(Get column's index number) 파이썬을 이용해서 엑셀을 사용하는 방법입니다. 반복문을 사용할때 row는 숫자를 이용하면 되는데, 열(column)은 'A', 'B', 'C' ... 이런식으로 되어 있어서 사용하기가 쉽지 않습니다. coulum 위치를 숫자로 변환해서 사용하면 편합니다. openpyxl.utils 에서 get_column_letter 모듈을 임포트 합니다. get_column_letter(index) 이런 식으로 사용하면 됩니다. index 값에 3을 넣으니 'C'가 반환 되었습니다. 2021. 4. 24.
파이썬 Pandas - 시각화를 위한 한글 폰트 설정 판다스로 그래프 등을 이용해 시각화를 하다 보면 글꼴이 깨지는 경우가 있습니다. 이럴때는 한글폰트를 설정해 주면 됩니다. plt.rc('font', family='Malgun Gothic') 윈도우의 경우에는 이렇게 설정하고, 맥북의 경우에는 위의 그림과 같이 설정해 주면 됩니다. 그리고 마이너스가 나타나면 오류가 생기는것을 방지하기 위하여 아래와 같이 설정합니다. plt.rc('axes', unicode_minus=False) 그래프가 노트북 안에 보이게 하기 위해서는 아래와 같이 inline 설정을 해줍니다. %matplotlib inline 폰트가 선명하게 보이게 하기 위해서는 아래와 같이 retina 설정을 해 줍니다. from Ipython.display import set_matplotlib_.. 2021. 4. 17.
파이썬으로 엑셀 VBA 매크로를 작동 시키는 방법(Calling Excel VBA Macro script by using Python script) 지난번 포스트에 이어서 파이썬을 통해 엑셀 VBA 매크로를 작동하는 방법에 대해서 포스트 해 보겠습니다. 시작하기 앞서 addin install 과 약간의 설정이 필요한데 이 부분은 아래 포스틀 참고하시기 바랍니다. 2021.03.31 - [파이썬/Python & Excel & VBA] - xlwings - 설치 및 addin 설정 방법 xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 dotsnlines.tistory.com 우선 예제로 엑셀 VBA 코드를 작성해 보겠습니다. 파이썬 파일과 같은 디렉토리에 위와 같이 .. 2021. 4. 1.
xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 편하게 느껴집니다. 하지만, 확장성은 VBA가 Python을 따라가지 못하는 탓에 고민을 계속 하다가 좋은 모듈을 하나 발견했습니다. "xlwings'라는 모듈입니다. 이 모듈을 사용하면 파이썬으로 VBA 코드를 구동할 수 있습니다. 반대로 VBA로 파이썬 코드도 구동할 수 있고요. Anaconda를 설치하시면 패키지로 자동 설치가 되는 모듈입니다.(아나콘다를 아직 설치하지 않으셨다면 아래 링크의 포스트를 참고하시기 바랍니다.) 2020.11.12 - [파이썬/시작 - 아나콘다,파이참 설치] - 파이썬 시작하기 1 -.. 2021. 3. 31.
Python openpyxl - 파일생성, 시트명 바꾸기, 탭색 변경 openpyxl 라이브러리를 이용하여 엑셀파일을 만들어서 저장해 보도록 하겠습니다. 전체 코드는 아래와 같습니다. 1 2 3 4 5 6 7 from openpyxl import Workbook wb = Workbook() ws = wb.active ws.title = 'test_sheet' wb.save('sample.xlsx') wb.close() cs openpyxl 모듈에서 Workbook을 불러오고, Workbook() 은 wb 변수에 저장합니다. ws는 활성화 된 시트를 담을 변수입니다. 시트의 이름은 ws.title='OOO'으로 변경합니다. 현 파일 위치에 만들어진 엑셀파일을 'sample.xlsx'라는 이름으로 저장하고, 워크북을 닫아 줍니다. 실행해 보면 아래와 같이 엑셀파일이 만들어 진.. 2021. 3. 17.
openpyxl - 여러 엑셀파일 데이터 가져오기 여러개의 엑셀파일에 있는 데이터를 하나의 엑셀파일로 가져와 보겠습니다. 'Test'라는 이름의 폴더를 만든다음 임의로 엑셀파일을 3개 만들어 보겠습니다. 'Test' 폴더 안에는 각각의 파일에 아래 그림과 같이 글자를 임의로 입력 하였습니다. 전체 코드는 본 포스트의 맨 아래에 있으니 참고하시기 바랍니다. 여러개의 엑셀파일의 데이터를 가져오기 위해서는 총 3개의 모듈이 필요합니다. 'os' 모듈은 정해진 경로의 폴더내에 있는 엑셀파일의 이름을 가져오기 위해 필요하며, openpyxl 패키지의 'Workbook' 과 'load_workbook'은 각각 엑셀파일 생성과 폴더내의 엑셀파일을 열기위해 필요합니다. 폴더의 경로는 'path'라는 변수에 입력합니다. 각 파일의 Worksheet를 'ws'라는 변수에.. 2020. 12. 31.
파이썬으로 주사위 게임 만들기 1 (random 모듈 사용) 파이썬으로 간단한 게임을 만들어 보도록 하겠습니다. 전체 코드는 아래 그림과 같습니다.(혹시 파이썬 파일을 만들줄 모르시거나, 파이참 자체도 설치가 안 되어 있다면, 아래 링크를 클릭하시어 첫 포스트부터 보시기를 권장드립니다.) 2020/12/18 - [파이썬/초등 우리 아이 첫 파이썬] - 초등 우리아이 첫 파이썬 - 시작하기 전에 초등 우리아이 첫 파이썬 - 시작하기 전에 우리 초등학교 4학년 아들과 함께 파이썬을 공부를 시작 하였습니다. 비전공에다 비전문분야 이지만 아들과 좋은 추억을 만들기 위해 한 번 시도 해볼까 합니다. 왜 하필 파이썬일까요? 세상에 dotsnlines.tistory.com 파이참을 열고, 코드 입력창에 아래 그림과 같이 입력합니다. 코드가 너무 간단하죠? 믿기지 않겠지만, 주.. 2020. 12. 26.
PyQt5 - QTableWidget(테이블 위젯) 사용하기 2 QTableWidget을 사용하는 두번째 방법입니다. 이번 코드는 좀 복잡해서 저도 다 이해하지 못했습니다. 대충 이렇구나 이해하면서, 다음부터는 Qt Designer 를 포스트 할까 합니다. QT Designer는 일일이 UI를 다 만들어줄 필요 없이 드레그 앤 드롭으로 작성이 가능하며, 함수만 연결해 주면 됩니다. 제가 워낙 초보라 그것도 이해가 어려워서 일일이 다시 공부하고 있습니다. import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * 필요한 모듈을 불러옵니다. class TestWindow(QMainWindow): def __init__(self): super().__init__() self.setupUI() 윈도우 클래스를 생.. 2020. 12. 14.