만들기15 파이썬으로 간단한 퀀트투자 백테스트 Tool(BackTester) 만들기 퀀트투자 백테스트를 여러가지로 하고 싶어서 백테스트 툴을 만들었다. 만들게 된 계기는 강환국씨와 닥터퀀트, systrader79, Quant 실전 퀀트투자(홍용찬, 이래미디어) 책을 읽고나서 왠지 간단하게 만들 수 있겠다는 생각이 들어서이다. 당연히 시중에 이렇게 백테스트를 하는 툴이 유료로 존재한다. 사실 사용해 본적은 없다. 돈이 없어서이다.(가난한 40대 가장의 현실이다.) 유로툴처럼 많은 기능이나 정확성 그리고 UI 디자인은 구현할 수 없지만, 나름 비슷하게는 만들 수 있다는 생각이 며칠전부터 들었다. 차차 업데이트를 할 목적으로 우선 간단하게 만들었다. 계략적인 기능은 아래와 같다. 그리고 1년단위로 리밸런싱 하는 조건으로 만들었다. 리밸런싱 기간 조건도 선택을 할 수 있게 기능을 추가할 수 있.. 2023. 10. 14. 파이썬 마법의 공식 - 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. 파이썬으로 여러 폴더 빠르고 쉽게 만들기 컴퓨터로 작업을 하다 보면 수많은 폴더를 만들어야 할 때가 있습니다. 이런일이 반복된다면 파이썬으로 프로그래밍을 해서 업무를 좀 더 효율화 시킬 수 있습니다. 우선 만들 폴더의 명을 엑셀파일에 입력하도록 하겠습니다. C:D 열에 순서를 나타내는 번호와 폴더 이름을 입력했습니다. 주의할 점은 C열에 숫자는 문자입니다. 만약 숫자를 적으면 파이썬 코드에서 문자로 변경해 주어야 합니다. 수십개나 수백개를 하더라도 속도차이는 거의 없습니다. 일단 예시로 5개 폴더만 만들어 보겠습니다. from openpyxl import load_workbook from tkinter import * from tkinter import filedialog import os 모듈은 엑셀을 열어야 하니 openpyxl에서 기존 만.. 2021. 10. 14. (내돈내산) 갤럭시 탭 S7 FE 활용하기 - 일기장 템플릿(양식) 만들기 일기를 쓰기 시작한건 2014년 정도 부터인 것 같습니다. 개인적으로 마이크로소프트의 원노트를 좋아해서, 원노트만 계속 사용하다가 이번에 삼성노트로 갈아타 볼까 하는 생각을 했습니다. 처음 사용하는거라 익숙하지도 않아 불편하지만, 탭을 계속 쓰려면은 아무래도 노트앱이 활용성이 더 좋을 것 같다는 생각이 듭니다. 노트에서 기본으로 제공하는 템플릿이 몇개 있지만, 재미 삼아서 MS Office Power Point로 간단하게 만들어 보았습니다. 파워포인트로 작성을 한 후 PDF로 내보내기를 하면 됩니다. 노트앱에서 상단에 '태블릿 변경'을 누르고 '+' 버튼을 눌러서 만들어진 양식(PDF 형식)을 가져오면 됩니다. 가져온 양식을 선택하면 이렇게 양식이 적용된 것을 확인할 수 있습니다. 저는 달리기를 좋아해서.. 2021. 8. 19. python pandas - 판다스 기본(시리즈, 데이터프레임) 파이썬에서 판다스를 이용하면 활용할 곳이 많이 있습니다. 특히나 데이터분석에 특화되어 있으니, 데이터사이언스 분야에 관심을 가지고 있으시면 배우면 좋을 것 같습니다. 저는 개인적으로 기업의 재무데이터를 분석하기 위해서 공부하고 있는데, 머리가 나빠서 계속 잊어버리네요. 그래서 기록을 남기려고 합니다.(10min pandas를 참고하였습니다.) 우선 판다스는 파이참이나 주피터노트북 둘다 사용이 가능한데, 하나씩 하면서 확인해 보기에는 주피터노트북이 더 좋더라구요. pandas, numpy 라이브러리를 불러옵니다. 넘파이는 Array(배열)을 만들고, 여러 계산 기능때문에 사용하는 것 같아요.(아직 정확히 잘 모릅니다.) 우선 시리즈를 만들어 보겠습니다. 시리즈는 데이터가 한 줄인 것을 말합니다. 결과는 이.. 2021. 5. 25. 파이썬으로 주사위 게임 업그레이드 지난번 만든 주사위 게임이 너무 밋밋하다는 의견이 있었습니다. 그래서 에니메이션 효과를 좀 넣었습니다. 포토스케이프 X를 사용하면 gif 파일을 만들 수 있습니다. 여러 그림을 가지고 마치 움직이는 것 처럼 보이게 할 수 있다는 얘기죠. 프레임 속도를 적당히 조절하고 반복횟수는 3회로 해서 6개의 파일을 만들고, 끝나는 그림은 주사위 1에서 6까지 설정합니다. 파일이름은 dice1.gif ~ dice6.gif 로 정했습니다. qt designer의 ui이도 조금 수정 했습니다. MainWindow를 좀 더 크게 만들고 label은 2개를 나란히 배치하였습니다. 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 .. 2021. 1. 3. 파이썬(Python) - 자동 폴더 만들기(os module) os 모듈을 사용해서 폴더를 만드는 방법입니다. 우선 OS 모듈을 임포트합니다. 파일을 생성할 경로를 'path'라는 변수에 넣어주고, 'os.mkdir'에 만들어진 경로 변수를 넣어줍니다. 폴더가 만들어졌네요. 그럼 폴더를 만들어서 그 안에 또다른 폴더를 넣어볼까요? 'Temp'폴더안에 'temp'라는 폴더를 추가로 경로를 설정했습니다. 지정된 경로를 찾을 수 없다고 하네요. 이때는 'mkdir'이 아니라 'makedirs'를 사용해야 합니다. 'mkdir'은 폴더를 하나만 생성할때 쓰이고, 'makedirs'는 여러개의 폴더를 만드는데 쓰입니다. 코드를 수정해 보겠습니다. 이렇게 'makedirs'만 수정해서 실행해 보겠습니다. 폴더안에 폴더가 생성되었습니다. 코드의 변경없이 한 번 더 실행해 보도록.. 2020. 12. 28. 엑셀 - 자동 목록 쉽게 만들기 (드롭다운, 콤보박스) 엑셀을 사용하다 보면 아래와 같이 클릭하면 목록이 나오는 경우가 있습니다. 이력서 등 여러 엑셀 서식에 이것을 적용하면 상당히 편한 경우가 많습니다. 이번 포스트는 이런 '목록'(드롭다운, 콤보박스)를 만드는 방법에 대해 알아 보도록 하겠습니다. 우선 아래와 같이 임으로 작성해 봅니다. 아침, 점심, 저녁을 각 인원별로 선택하는 목록을 만들까 합니다. 식단 목록을 아래와 같이 빈셀에 입력합니다. 목록(드롭다운)이 들어갈 셀을 선택합니다. 상단의 "데이터" 메뉴를 클릭해서 "데이터 유효성 검사"를 클릭합니다. 아래와 같이 "데이터 유효성 검사(V)"를 선택합니다. "데이터 유효성" 창에서 "제한대상(A)"는 드롭다운 버튼을 클릭해서 "목록"을 선택하고 "원본(S)"은 아까 만든 식단목록을 지정해줍니다. 그.. 2020. 12. 26. 파이썬으로 주사위 게임 만들기 1 (random 모듈 사용) 파이썬으로 간단한 게임을 만들어 보도록 하겠습니다. 전체 코드는 아래 그림과 같습니다.(혹시 파이썬 파일을 만들줄 모르시거나, 파이참 자체도 설치가 안 되어 있다면, 아래 링크를 클릭하시어 첫 포스트부터 보시기를 권장드립니다.) 2020/12/18 - [파이썬/초등 우리 아이 첫 파이썬] - 초등 우리아이 첫 파이썬 - 시작하기 전에 초등 우리아이 첫 파이썬 - 시작하기 전에 우리 초등학교 4학년 아들과 함께 파이썬을 공부를 시작 하였습니다. 비전공에다 비전문분야 이지만 아들과 좋은 추억을 만들기 위해 한 번 시도 해볼까 합니다. 왜 하필 파이썬일까요? 세상에 dotsnlines.tistory.com 파이참을 열고, 코드 입력창에 아래 그림과 같이 입력합니다. 코드가 너무 간단하죠? 믿기지 않겠지만, 주.. 2020. 12. 26. 엑셀 - 차트 그리기, 그래프 그리기 엑셀로 차트 (그래프)를 그리는 방법에 대해 포스트 해 보겠습니다. 위의 그림과 같이 임의로 데이터를 만듭니다. 엑셀 상단의 메뉴에서 '삽입'을 클릭하시고, 오른쪽에 차트 메뉴에서 알맞은 차트를 고릅니다. 차트를 그릴 범위의 데이터를 마우스로 선택한 다음 차트를 선택하면 위의 그림과 같이 차트(그래프)가 만들어 집니다. 상단의 메뉴에서 '색', '디자인' 등을 변경하시면 됩니다. 이번에는 '누적수입'을 이용한 그래프를 그려보겠습니다. 해당 데이터가 들어간 셀을 위의 그림과 같이 마우스로 선택하시고 2차원 꺽은선형 그래프를 선택합니다. '누적수입'만 보이게 하기 위해서 '월별 수입' 곡선을 선택해서 삭제해 줍니다.('Delete' 키를 누르시면 됩니다.) 간단하게 엑셀을 사용하여 차트 (그래프) 그리는 방.. 2020. 12. 23. PyQt5 - (qt designer) 간단한 MainWindow 만들기 qtdesigner를 이용하여 간단한 윈도우창을 만들겠습니다. designer를 실행합니다.(실행파일이 어디있는지 모르시면, 아래 포스트를 참고하세요.) 2020/11/18 - [파이썬/PyQt5] - PyQt5 - qt designer 파일 위치 PyQt5 - qt designer 파일 위치 아나콘다(Anaconda3)를 설치하고 나서 qt designer 위치를 찾느라 헤메었네요. 비전공자에다 40대 아저씨가 코딩을 시작하려고 하니 엄청 힘든점이 많네요. designer 위치는 아래 경로에 있습니다. Anaconda dotsnlines.tistory.com 'Main Window'를 선택한 다음 '생성(R)' 버튼을 클릭합니다. 왼쪽 메뉴에서 'Push Button' 과 'Line Edit'을 Dra.. 2020. 12. 16. PyQt5 - QTableWidget(테이블 위젯) 사용하기 PyQt5를 사용하여 TableWidget을 사용하는 방법입니다. import sys from PyQt5.QtWidgets import * 필요한 모듈을 임포트 합니다. class TestWindow(QMainWindow): def __init__(self): super().__init__() self.setupUI() QMainWindow를 상속받아 TestWindow 클래스를 만듭니다. def setupUI(self): self.setWindowTitle('TestWindow') self.tableWidget = QTableWidget(self) self.tableWidget.resize(400,300) self.tableWidget.setRowCount(2) self.tableWidget.setCo.. 2020. 12. 13. openpyxl - 파이썬으로 엑셀파일 만들기 파이썬으로 엑셀을 다뤄 보겠습니다. 어떤 모듈을 써야하나 검색했는데 'openpyxl'이라는 모듈이 괜찮다고 하더라구요. 단, 이 모듈은 'xls' 즉 2003이하 버전의 엑셀은 호환이 안 된다네요. 우선 모듈을 불러 오겠습니다. import openpyxl 이렇게 적으셔도 되고, 'from openpyxl import Workbook' 이라고 적으셔도 됩니다. wb = openpyxl.Workbook() 엑셀 워크북을 생성해서 'wb'라는 변수에 저장합니다. ws = wb.active 활성화 된 시트를 'ws'라는 변수에 저장합니다. ws['A1'] = 'test' 'A1' 의 셀에 'test'라고 적어보겠습니다. wb.save(r'C:\Users\passi\Desktop\Test.xlsx') 그리고 .. 2020. 12. 8. PyQt5 - Radio Button(라디오 버튼) 만들기 이번 포스트에서는 PyQt5를 이용하여 Radio Button(라디오 버튼)을 만들어 보겠습니다. QRadioButton을 사용하면 되고, 전체 코드는 아래와 같습니다. 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 import sys from PyQt5.QtWidgets import * class TestWindow(QMainWindow): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setWindowTitle('RadioWindow') self.radio1 .. 2020. 12. 7. PyQt5 - QLineEdit 사용하기 PyQt5를 통해 입력창을 만들어 보겠습니다. Visual Basic에서는 InputBox로 썼던걸로 기억하는데, 파이썬은 LineEdit이라고 하네요. 사실 UI를 일일이 코딩해 줄 필요는 없습니다. qtdesigner를 사용하시면, 자동으로 만들어 집니다. 각 개체를 함수와 연결만 하시면 됩니다. 저는 제가 공부하느라 일일이 다 만들어 보고 있습니다. LineEdit은 QLineEdit을 사용하면 됩니다. 전체 코드는 아래와 같습니다. 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 .. 2020. 12. 6. 이전 1 다음