반응형

투자자/알고리즘 8

개발첫걸음_ 파이썬으로 모든 주식종목 차트 업데이트 하기

상장된 모든 종목의 리스트를 만들었고, 차트 불러오는 함수를 설계했다. 이제 첫 단계에서 남은 마지막 작업은 모든 주식종목의 차트를 차례차례 불러들여 파일로 저장하고 업데이트 하는 코드를 만드는 순서다. 오늘 소개할 함수는 두 가지인데, 하나는 최초로 차트를 저장하는 함수이다. 다른 하나는 시간이 지났을 때 차트를 업데이트 해주는 함수다. def chart_save (tgt) : ''' 최초 : 일봉 차트를 csv파일로 저장, tgt=set_tgt()를 먼저 해줘야 함''' for code in list(tgt['code']): df = gen_raw(code) df.to_csv(저장할 경로 + code + '.csv', sep=',', encoding='utf-8') ### 차트는 일단 저장완료 mar..

파이썬으로 비상장법인 가치평가 퀀트전략 구현하기 feat. 상속세 및 증여세법

2021.05.13 - [투자자/투자전략] - 퀀트전략 : 비상장기업 가치평가 공식 적용하기 feat. 상속세 및 증여세법 상속세 및 증여세법이 제안하는 비상장법인의 가치평가 공식을 모든 주식 종목에 적용해보자. 계산 과정에 차트 정보는 전혀 필요하지 않고 대신 정리된 재무 데이터가 필요하다. 아직 전자공시시스템의 자료가 모두 정리되지 않았기 때문에, 우선은 검색 포털이 제공하는 금융 정보라든가 에프엔가이드의 도움에 의존해야만 한다. import urllib.request from bs4 import BeautifulSoup import pandas as pd import time def value(c) : if c[0] != 'A': return 0 url="http://comp.fnguide.com/..

개발첫걸음_ 파이썬에서 모든 주식의 차트데이터 저장하기

지난 포스팅에서 모든 종목의 이름과 코드를 확보해 저장해 두었다. 이 파일을 데이터프레임으로 불러와서, 코드를 하나하나 인자로 넘기면 그걸 받아 해당하는 차트를 만들어주는 함수를 설계해 보자. 이번에도 완성된 최종 코드부터 적어놓고 설명을 이어나가도록 하겠다. from dateutil.parser import parse as p from pandas import Series, DataFrame import win32com.client import pandas as pd import numpy as np instStockChart = win32com.client.Dispatch('CpSysDib.StockChart') tgt = pd.read_excel(경로+파일이름, engine='openpyxl') d..

개발첫걸음_ 모든 종목의 이름과 종목코드 저장하기

대신증권이 제공하는 API와 파이썬을 이용해서, 내가 가장 먼저 한 일은 상장된 모든 종목의 차트를 저장하는 작업이었다. 클래스와 인스턴스에 대해 이해하지 않고 뛰어들었기 때문에 혼란스러운 과정이기도 했다. 대신증권의 API '싸이보스 플러스'에서는 여러 클래스를 제공하는데, 모두 알 필요는 없다. 이 단계에서 필요한 것만 이용하면 된다. 완성된 코드부터 써놓고, 집중력이 남아있다면 설명을 조금 덧붙일까 한다.import win32com.client import pandas as pd import numpy as np instCpStockCode = win32com.client.Dispatch('CpUtil.CpStockCode') instCpCodeMgr = win32com.client.Dispatch..

파이썬_ numpy array에서 문자열 찾아 바꿔넣기

문자열로 채워진 어떤 표가 있다. 이 행렬의 이름을 A라고 하자. 여기서 특정 단어만을 찾아 원하는 다른 단어로 바꿔넣고 싶다면? 가령, 나는 알파벳 b가 포함된 것들을 찾아 모두 x로 바꾸고 싶다. 이 작업에 성공한다면, 재무제표가 담긴 엑셀 파일을 numpy array로 불러왔을 때 다양하게도 못생긴 단어들을 표준적인 모습으로 한꺼번에 바꿔줄 수 있게 된다. 얼른 생각하면, 반복문을 이용해 노가다를 시키는 방법을 떠올려 볼 수 있다. 노가다가 필요한 표가 하나뿐이면 괜찮을 수 있다. 하지만 엑셀파일 수 만 개를 불러와 그 안의 모든 단어를 돌아다녀야 한다면 얘기가 달라진다. 게다가 파이썬에서 행렬을 다루는 기가 막힌 도구를 제공하니까 굳이 그런 원시성에 향수를 느낄 필요는 없다. 엑셀의 IF 함수에는..

코딩근황_ 사업보고서에서 재무제표 엑셀 바로 다운받기

전자공시시스템에서 사업보고서를 열면, 그 단계에서부터 재무제표를 저장하기까지는 다시 여러 과정이 필요하다. 예전에 알아뒀다가 요즘 실행에 옮기고 있는 트릭이 있는데, 사업보고서 화면에서 재무제표를 깔끔한 형태의 엑셀 파일로 다운받을 수 있는 팁이 있다. 사업보고서 오른쪽 위에 보이는 "다운로드" 아이콘을 클릭해 보자. 새로운 창이 열리면서 재무제표 엑셀파일을 다운받을 수 있는 메뉴를 제공해준다. 이 부분을 클릭하면 파일이 컴퓨터에 저장된다. 이 과정을 컴퓨터에게 맡길 수도 있다. 열려 있는 각각의 창이 가리키고 있는 URL을 잘 따라가보면 된다. 마지막 다운로드 팝업창의 소스코드를 보면 최종 URL을 조립하는 공식이 잘 나와있다. 전자공시시스템의 URL에는 공통적인 구조가 있다. 기본 + 기능 + 옵션(..

저장된 재무제표를 읽어오려면 (feat. 문자열 유사성 판단하는 로직)

백테스트 활용에 자유도를 확보하려면 재무데이터는 필수적이다. 이를 위해 내가 활용할 DART는 하루 접근횟수와 자료 조회속도에 제한이 걸려있기 때문에, 이대로는 백테스트가 어렵다. 결국 모든 자료를 저장해두어야 하고, 알맞게 읽어올 수 있어야 한다. 각 종목별로 과거의 모든 재무제표들을 저장하는 작업은 지루하지만 쉽다. 반면에 이걸 읽어오는 부분은 흥미롭지만 어렵다. 앞 단계에서 '일단 저장'에만 몰두했던 덕분인지, 폴더에 남은 자료들의 속내를 들여다 보면 참 가관이다. 예를 들어 당기순이익 계정과목은 기업에 따라 당기순이익, 당기순손익, 당기이익, 당 기 순 이 익 등의 다양한(?) 형태를 띠고 있다. 계정과목 이름이 길어지면 다양성은 훨씬 증가할 수 있다. 세부 계정과목들로 보면, 포함시킨 기업도 있..

코스피 코스닥 백테스트 프로그램 설계지도

백테스트 프로그램을 하나 만들고 있다. 코린이가 혼자 해내기엔 나름 방대한 프로젝트다. 이미 어느 정도 진행은 이루어졌지만, 가는 동안 방향과 위치를 잃어버리지 않도록... 머리 속에만 잠들어 있던 전체 계획을 글과 그림으로 정리해 두는 게 좋겠다. 이 프로그램의 목적은, 매수조건-매도조건-비중관리 등등의 투자전략을 코스피와 코스닥의 과거 데이터에 대입해 시뮬레이션 해보는 것이다. 그러려면 이 프로그램에는 크게 두 가지 기능이 요구된다. ▲모든 종목의 과거 주가를 보유하고 있으면서, 이 데이터에 대한 기술적 분석을 지원하는 여러 보조지표 함수들이 마련되어야 한다. ▲마찬가지로, 모든 종목의 과거 재무정보도 확보되어야 한다. 차트(chart)와 보조지표 함수들은 코딩이 끝났다. 과거 차트 자료는 증권사에서..