전체 글 57

[Python] OpenAPI로 주식 영업일, 휴장일 구하기

이번 포스팅은 주식장의 영업일과 비영업일을 구분하는 방법에 대한 것입니다. 트레이딩캘린더를 데이터베이스로 만들어 놓으면 주식이나 etf의 과거 기간성과를 쉽게 뽑아낼 수 있다는 장점이 있습니다. 휴일정보는 공공데이터포털(https://www.data.go.kr/data/15012690/openapi.do)에서 openapi를 이용하여 뽑아낼 거구요 나머지 일자는 pandas와 datetime을 통해 생성해보겠습니다. 개발에 앞서 미리 위 사이트에서 apikey를 신청해놓으시기 바랍니다. 휴일정보를 데이터프레임으로 반환하기 import requests import datetime as dt from bs4 import BeautifulSoup import pandas as pd from datetime i..

[Python] 데이터프레임 차집합 구하기

데이터프레임을 다루다보면 두 데이터프레임간의 차집합을 구해야 할 때가 있습니다. 예를 들어 데이터베이스 테이블에 존재하는 데이터와 웹에서 크롤링한 데이터간의 차집합을 구해서 비어있는 값을 insert하는 경우가 있겠습니다. 중복키 에러를 피하기 위해서 입니다. 리스트에서는 set이라는 함수가 있어서 차집합을 쉽게 구할 수 있는데, 데이터프레임에서 구현하기엔 쉽지 않더라구요. 데이터프레임의 merge기능을 이용하여 두 데이터 프레임 간 key값을 조인한 뒤, 한쪽에 있는 데이터만 가져와 주면 쉽게 차집합을 구할 수 있습니다. 예제와 함께 진행해보겠습니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt columns =['dat..

[Python] 삼성전자 PER, PBR 웹크롤링

이번 포스팅에서는 주식 종목의 PER, PBR을 웹에서 크롤링하는 법을 알아보겠습니다. 웹크롤링 주의사항 웹크롤링할때는 주의할 점이 몇 가지 있는데, 아래와 같습니다. 1. 반복문 적용시 Sleep을 걸어주어 웹서버에 부하가 걸리지 않도록 해야 함(block 방지) 2. 사전에 허락을 받은 것이 아니라면, 수집한 데이터를 상업용목적으로 쓰지 않아야 한다. 오늘 크롤링할 데이터가 있는 에프엔가이드(http://comp.fnguide.com/)에는 아래와 같은 경고문구가 있으니 참고하세요. 사이트의 웹크롤링 허용 범위를 보려면 홈페이지 url 맨 뒤에 /robots.txt 를 붙여보면 되는데요, 확인 결과 특정 페이지만 네거티브하게 Disallow를 하고 있네요. 자세한 설명은 유대표님이 쓰신 파이썬으로 배..

[Python] 정규표현식(regular expression)

정규표현식(regular expression) 정규표현식은 문자열에 대한 패턴을 분석하는데 쓰이는 문법입니다. 예를 들어서 뉴스를 크롤링할 경우 뉴스 내용과 필요없는 기자의 이메일주소를 삭제하는데 정규표현식이 쓰일 수 있습니다. 정규표현식은 '메타문자' 때문에 헷갈리고 어려운 경우가 많은데요, 메타문자는 문자가 그 뜻이아니라 특별한 용도로 사용되는 문자를 뜻합니다. 정규표현식에서 사용되는 메타문자의 예는 다음과 같습니다. r은 뒤 문자열을 그대로 반환 [ ]는 문자들의 범위 [abc]의 의미는 ‘a,b,c’중 하나의 문자와 매치 [0-5]는 [012345]와 동일한 의미 [0-9] : 모든 숫자 [a-z] : 모든 소문자 [A-Z] : 모든 대문자 [a-zA-Z0-9] : 모든 알파벳 문자 및 숫자 \d..

[AFML] 데이터의 구조(달러바 vs 볼륨바)

이번 포스팅에서는 시간바, 볼륨바, 달러바의 통계적 특성을 알아보도록 하겠습니다. AFML에서 2장에서 중요하게 다루는 것은 시계열 데이터를 이벤트 드리븐 형태로 표현하는 것입니다. 시간바(timebar)는 아래와 같은 이유 때문에 머신러닝 학습에 좋지 않은 편향을 보일 수 있기 때문입니다. (1) 거래량이 적을때는 오버샘플링, 거래량이 클 때는 오버샘플링 (2) 계열상관, 이분산성, 수익률의 비정규성을 보임 우선 1분 단위 삼성전자 데이터로 미리 만들어 놓은 달러바(dollarbar) 볼륨바(volumebar)를 import시켰습니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt columns =['date','time'..

Sysmetic trading 2022.12.16

[주식논문] 주식 수익률의 일 중 주기성 연구

오늘 리뷰할 논문은 주식 수익률의 일 중 주기성이라는 논문인데요, 전일과 당일 동시간대 10분 수익률 간에는 주기적으로 나타나는 패턴이 있다고 주장합니다. 일 중 주식 움직임의 패턴을 찾는 것은 곧바로 수익과 직결되기 때문에 학계, 실무를 막론하고 꾸준히 연구되어 왔습니다. 대표적인 연구내용은 아래와 같습니다. (1) 개장 효과, 폐장 효과 장 초반에는 전일 폐장 이후 쌓였던 정보들이 한 번에 반영되기 때문에 높은 변동성을 보인다. 이후 변동성은 낮아지다가 장 후반에 변동성이 다시 커지는데, 이때는 펀드의 리밸런싱, 데이트레이더의 포지션 청산 등이 이루어지기 때문이다. 일 중 수익률에서도 같은 패턴이 나타난다. (2) 수익률 반전 현상 일 중 30분 단위 수익률에서는 반전 현상이 일어난다. 30분 수익률..

Read 2022.12.04

[주식논문] 오버나잇 퍼즐 전략의 수익성은?

야간(overnight)수익률이 일중(intraday) 수익률보다 높은 현상은 1970년대부터 꾸준히 연구되어 온 주식시장의 이례현상(anomaly) 중 하나입니다. 왜 이런 현상이 발생할까요? 이 논문의 서론에 따르면 주가갭 현상이 일어나는 이유는 다음과 같습니다. (1) 불일치(disaggrement) 가설 전일 폐장 시간부터 당일 개장시간까지 발생한 정보가 한꺼번에 시가에 반영된다. 이때 정보에 부정적인 견해를 가진 투자자는 공매도 제한(short-selling constraint)등으로 인해 공매도가 제한되는 반면, 긍정적인 견해를 가진 투자자는 자유롭게 매수를 할 수 있기 때문에 시가가 높게 체결된다. (2) 과잉반응(overreaction hypothesis) 가설 개장 직전까지 흘러나온 정보..

Read 2022.12.02