레이블이 R인 게시물을 표시합니다. 모든 게시물 표시
레이블이 R인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 5일 수요일

주가 패턴분석 (K-Means Clustering)

혼자 몰래하는 블로그였는데 systrader님(블로그) 페이스북에 포스팅2개가 링크되면서 갑자기 방문객이 늘었다..; 스스로 나중에 보려고 올리는 글들이라 다른 사람들에게 도움이 될 지 모르겠다. 꾸준히 블로그를 올릴만큼 부지런하지는 않으니 곧 다시 나만 하는 블로그가 되겠지.

K-Means Clustering 이라는 비지도 학습(unsupervised learning)을 이용하면 군집 분석을 쉽게 할 수 있다. 정해진 K개 그룹의 중점(centroid)을 구하고 데이터와 거리를 계산해 업데이트 방법으로 원리도 간단하다.

R을 이용해 2007년부터 5일간격으로 삼성전자의 20일 동안 주가를 8개 패턴으로 분류한 결과다. 패턴 8과 같은 경우가 20일 동안 지속적으로 상승하는 유형이고 패턴 2가 반대로 하락하는 유형이다. 빈도수를 보면 8번, 2번, 7번 순으로 많다. 위의 패턴번호를 삼성전자 주가에 표시해 그리면 다음과 같다.


최근엔 지속 상승하는 8번 유형에서 둔화된 7번, 5번 유형으로 변하는걸 볼 수 있다. 

이렇게 구한 패턴유형은 다른 모델의 input feature로 활용할 수 있다. 자신의 트레이딩 규칙, 알고리즘이 어떤 패턴에 잘 맞는지 확인해보는 것도 좋을 듯하다.

다른 분들처럼 본문에 R 코드를 삽입할까 했는데 코드가 너무 간단해 생략...

2016년 11월 1일 화요일

RSelenium 오류

R로 매시간 관심종목의 뉴스와 공시내용을 크롤링해 텔레그램으로 보내주는데
지난 주말부터 갑자기 안되고 있었다.
(사실 안되고 있다는 사실 조차  모르고 있다 오늘 보유종목 LO 공시가 오지 않아 알게된..;)

R code를 보니 RSelenium에서 startserver()를 하는데 크롬이 제대로 열리지 않던 것.
대략 오류메세지가 다음처럼 뜬다.

Warning message:
startServer is deprecated.
Users in future can find the function in file.path(find.package("RSelenium"), "example/serverUtils").
The sourcing/starting of a Selenium Server is a users responsiblity.
Options include manually starting a server see vignette("RSelenium-basics", package = "RSelenium")
and running a docker container see  vignette("RSelenium-docker", package = "RSelenium")

구글링해보니 윈도우 업데이트 때문에 그렇다는 말도 있고 파이어폭스 버전에서 그렇다는 얘기도 있고..(근데 난 크롬을 쓰는데?)

일단 Selenium을 지우고 다시 최신으로 깔아봐도 오류는 그대로.
(예전에 Selenium 설치가 윈도우에서는 잘 안돼서 어떤 꼼수를 썼던 것 같은데 그게 기억나지 않아 이젠 지금처럼 블로그에 남기려함..)

파이어폭스 버전때문에 안되는 사람들은 드라이버를 다운받아 인자로 넘겨주기에 Selenium 사이트에서 최신버전 크롬 드라이버를 다운받고 다음처럼 startserver()에 넘겨줬더니 일단 성공으로 보임.

selServ <- RSelenium::startServer(javaargs = c('-Dwebdriver.chrome.driver="C:\\Windows\\chromedriver.exe"'))

워닝 메세지는 그래도 나오나 크롬은 뜬다. 휴.