분류 전체보기
-
[R/Python] 주식 종목 코드 모으기Project/연구 2020. 10. 16. 20:26
요즘 주식 자동매매의 기능 중 하나로 주식종목을 최신화하고 있다. 매일 거래되는 데이터를 분석해서 새롭게 모델링을 하는 게 목적이다보니 매일 종목을 최신화하고 있다. 전체 과정은 ①주식 종목코드 최신화 → ②종목별 주가 데이터 수집 → ③모델링의 과정을 거쳐서 진행하는데, 오늘은 그 첫단계인 주식 종목코드 최신화를 하는 R 스크립트다. 기본적인 구조는 NAVER 금융에서 제공하는 데이터를 크롤링해서 data.table로 정리한다. 정리된 데이터는 종목코드/종목명/시장구분으로 나뉘고 시장구분은 코스피 또는 코스닥을 말한다. 이전에 참고했던 페이지에서는 종목코드에 알파벳이 들어간 경우는 모두 누락되었는데 이 크롤러는 종목코드에 알파벳이 포함되어 있어도 모두 가져온다는 장점이 있다. 특히 코드 작업을 하면서 ..
-
[전략] 볼린저밴드를 활용한 주식 종목 선정Project/전략 2020. 10. 10. 15:24
0. 들어가는 글 추석 연휴동안에 주식 자동매매를 하기 위한 알고리즘을 정비했다. 정확하게는 사고 팔 종목들을 선정하는 방법 중 하나를 우선 만들어뒀고, 10월 6일부터 8일까지 3일동안 테스트를 했다. 공교롭게도(?) 테스트기간 동안 코스피가 상승하던 때라서 사실 이게 좋은 알고리즘일지 아닐지 가늠이 쉽게 안 되기는 한다. 매일 선정한 종목들을 제대로 사고 팔았다면, 매일 1%씩 수익이었을 것이라고 하기는 하는데... 실제 프로그램에서는 다른 조건들을 추가로 넣기도 하고 프로그램이 제때 작동되지 않은 적도 있어서 동일하지는 않다. 아무튼 해당 3일 동안 코스피보다는 많이 오른 상태이니, 더 정밀하게 발전 시키면 좋을 것 같기는 하다. 이번에 짜둔 알고리즘은 볼린저밴드를 활용한 종목 선정 방법이다. 1...
-
[데이터 분석] 회귀분석을 할 때 로그 변환을 하는 이유Data Science/데이터 분석, ML 2020. 10. 8. 20:49
0. 들어가는 글 데이터 분석을 이용한 논문을 보다보면 변수에 로그를 취하는 경우가 종종 있습니다. 미시데이터를 다루는 경우에는 로그임금을, 거시데이터는 로그GDP나 로그인구를 사용하는 경우가 꽤 많아요. 많은 책에서는 로그변환 변수를 해석하는 방법을 따로 소개하기도 합니다. 그만큼 로그변환이 중요한 부분이기는 해요. 하지만 로그변환을 하는 이유에 대해서는 충분히 알려주지는 않습니다. 왠지 치열하게 개고생하고 고민해서 알아내라는 의도이지 않을까 싶습니다. 제 생각에 절대적인 기준이 있는 것 같지는 않아요. 다만 로그 변환이 권장되는 상황에는 변환을 하는 게 좋겠습니다. 이제 서술할 부분은 공인된 지식이라고 보기는 어렵습니다. 강의나 논문 지도를 받으며 알게 된 사실들을 정리했다는 점, 참고해주세요. 1...
-
[R/Python] 일별 주가 데이터 크롤링, 수집한 데이터 나눠서 연산하기Project/연구 2020. 10. 2. 17:09
0. 들어가는 글 코로나19로 인해 귀향을 하지 않으니 서울에서 긴 연휴를 맞게 되었다. 5일의 연휴동안 먹고 자고 하기에도 부족한 시간이지만(?) 기왕이면 생산성있게 보내고자 그 동안 미뤄뒀던 일을 처리하기로 했다. 이름하야 주식 자동거래 알고리즘 짜기(!). 그동안 틈틈히 프로그램 동산님의 유튜브 영상을 보면서 자동거래를 할 수 있는 프로그램은 짜두긴 했다. 생각보다 오래 걸리기는 했는데, 아직 이걸로는 부족하다. 왜냐면 현재까지 짜둔 프로그램은 매수한다/매도한다만 가능하고, 아주 간단한 조건만 넣어둔 상태이다. 말하자면 '무엇을', '얼마에' 사고 파는 조건은 아직 들어가있지 않다. 기왕이면 이 조건을 파이썬 내에 구현시키면 참 좋으련만, 아직 데이터를 분석이나 머신러닝을 적용하는 데에는 R이 더 ..
-
[리뷰] 혼자하는 공부에 푹 빠진 사람들에게Others/Review 2020. 10. 1. 21:13
0. 나는 독학파이다 무언가를 배울 때 가능하면 학원을 가서 배우는 것보다는 혼자 검색하고 책을 보고, 타인을 모방하는 연습을 하는 편이다. 이유는 크게 두 가지였다. 시간과 돈. 학부를 다닐 때에는 그래도 시간적인 여유는 있었지만 일정이 불안정했고, 대학원을 다니던 때에는 시간을 내기가 어려웠다. 그러다보니 늘 내가 원하는 시간에, 적은 시간을 들이고, 가능하면 돈이 안 들면서도 무언가를 배우고 싶었다. 오죽하면 권투를 독학하는 법은 없나 찾아보기도 했다(...). 지금은 경제적인 여유가 생겼고 시간도 안정적이지만, 거꾸로 하고 싶은 게 많아지다보니 독학에 대한 갈증은 여전하다. 게다가 지금은 과거보다 훨씬 더 많은 매체(특히 유튜브)가 있다보니 독학하기 쉬워지기도 했다. 유튜브 같은 경우에는 분야도 ..
-
[부록] 주식의 매매주문 단위, 호가(Tick size)Project/부록 2020. 9. 26. 00:30
0. 들어가는 글 주식의 매매주문 단위, 호가(Tick size)에서 밝힌 것처럼 호가를 이용해 무언가를 해보려고 하기는 하는데 아직 당장은 쓸만한 전략이 떠오르지는 않는다. 그러니 우선은 해둘 수 있는 작업부터 해두려고 하는데, 그 첫번째로 우선 호가를 일반화하려고 한다. 이걸 왜 해두냐면 주가는 정수값을 갖기는 하지만 모든 정수를 취하지는 않는다. 이전 글에서 말했듯이 주식시장에서 이뤄지는 거래가격은 표준화를 해두었기 때문이다. 예를 들어 57905원은 주가로 거래될 수가 없다. 따라서 주식가격은 호가의 합들로 표현하면 실제로 거래되는 주식가격을 표현할 수 있을 것이다. 이 작업을 해두려는 가장 큰 동기는 내가 파이썬도 쓰기는 하지만 주로 R 유저이기 때문이다. 가장 손쉽게(?) 거래가능한 주가를 택..
-
[데이터 분석] 로그변환을 "변화율, 성장률"로 해석하는 이유Data Science/데이터 분석, ML 2020. 9. 18. 16:17
0. 들어가는 글 회귀분석을 다루는 교과 과정이나 시험에서 꼭 빠지지 않는 문제가 있습니다. 바로 최소제곱법으로 추정한 계수의 의미해석입니다. 일반적인 교재에서 따로 한 챕터를 할애하여 계수의 해석을 설명할 만큼, 비중이 꽤 큰 편입니다. 그만큼 설명이 필요하고, 중요하다는 의미겠지요. 그 중에서 특히 로그변환이 들어간 경우, 해석이 참 쉽지 않습니다. 변수에 로그변환을 한 경우는 크게 4가지가 있습니다. 이 4가지 경우에 따라 해석하는 방법부터 정리하면 아래 표와 같습니다. 종속변수 $Y$ 설명변수 $X$ $\hat{\beta}$의 의미 로그변환을 하지 않음 : $Y$ 로그변환을 하지 않음 : $X$ $X$가 1단위 변할 때 $Y$의 변화량 로그변환을 하지 않음 : $Y$ 로그변환을 함 : $lnX$ ..
-
[데이터 분석] 최소제곱법(Ordinary Least Square)을 쓰는 이유Data Science/데이터 분석, ML 2020. 9. 18. 14:52
0. 들어가는 글 미리 밑밥부터 깔겠습니다. 이 포스트에서는 엄밀한 의미에서 최소제곱법을 다루지 않을 겁니다. 사실 엄밀하고 진중하게, 그리고 정확하게 다루는 포스트는 굉장히 많아요. 거기에 굳이 한 포스트 더 거들 필요는 없을 것 같습니다. 여기서는 최소제곱법(OLS라고 부르겠습니다)에 대해 최대한 직관적으로 이해하는 걸 목표로 해볼게요. 1. OLS란 무엇일까 OLS는 오차를 최소로 만드는 추정량을 말합니다. 말이 어렵기는 한데, 아래처럼 생긴 식을 우리는 OLS추정량이라고 부릅니다. $$\hat{\beta} = (X'X)^{-1} (X'Y)$$ 설명을 조금 더 덧붙이자면, 선형식을 추정하는 방법이라고 이해하면 됩니다. 여기서 중요한 키워드는 ①선형식 그리고 ②추정, 이 2가지 입니다. 쉽게 이해하기..