스팀달러 가격를 직접 예측해보자!(with R)
kr·@mastertri·
0.000 HBD스팀달러 가격를 직접 예측해보자!(with R)
 안녕하세요? 트리입니다. 주말을 맞아 너무 추운 날씨에 밖으로 나가지는 못하겠고, 게으른 주말을 맞았습니다. 스팀잇에 들어와 글도 읽고 댓글도 달다가 @hellocrypto 님이 올려주신 재미있는 글을 보았습니다. * [[가격예측] 페이스북이 예상하는 2월 스팀 가격은?](https://steemit.com/kr-coin/@hellocrypto/2) 페이스북의 [fbprophet](https://facebook.github.io/prophet/) 오픈소스 프로그램을 이용해 스팀의 미래시세를 예측하는 포스팅입니다. 과거 1년치 데이터를 이용해 한달 뒤 스팀의 가격을 예측해 보는 내용입니다. 결론적으로 "2월 28일의 종가는 7.3달러일 것이다."라는 희망적인 메시지를 보내주었지요. --- 이 추운 날 집에서 해볼 수 있는 재미있는 공부가 될 것 같아 직접 해보기로 했습니다. @hellocrypto님은 파이썬을 이용해 결과를 보여 주셨는데, 저는 몇 년 전에 잠시 끄적거렸던 R을 이용해 한 번 해보기로 했습니다. R이 설치도 안되어 있어서 다시 다운로드 받아서 해 보았지요. 프로그램을 잘 모르시는 분들도 직접 해보실 수 있을 정도로 정리해 보겠습니다. : ) --- ## 1. R 다운로드 & 설치하기 * R 다운로드 경로: https://cran.r-project.org/bin/windows/base/ 위 경로로 접속하면 다음 화면이 나옵니다.  여기서 제일 위의 '**Download R 3.4.3 for Windows**' 링크를 클릭해 '**R-3.4.3-win.exe**' 파일을 다운로드 받아 설치합니다. ## 2. R Studio 다운로드 & 설치하기 * R Studio 다운로드 경로: https://www.rstudio.com/products/rstudio/download/ R Studio는 R의 사용을 쉽게 해주는 툴입니다. 프로젝트로 묶어서 파일을 관리도 해주고, 여러 분할 창으로 한 눈에 R을 쉽게 사용할 수 있게 해줍니다.  여기의 RStudio Desktop Free 버전을 다운로드 받습니다. 저는 윈도우10 사용자이기 때문에 아래의 **RStudio 1.1.419 - Windows Vista/7/8/10**로 다운로드 받아 설치했습니다. 인스톨러를 통해 설치하시던지 Zip 파일로 받아 압축을 푸시던지 관계없습니다. ## 3. R 스튜디오 실행하기 R 스튜디오를 실행해서 열면 다음과 비슷한 형태로 열립니다.  File - New Project 를 통해 새로운 프로젝트를 만드시면 프로젝트 단위로 쉽게 관리할 수 있습니다. 위 화면은 제가 '**test**'라는 이름으로 프로젝트를 만든 겁니다. 그리고 File - New File - R Script 를 선택하시면 다음과 같이 스크립트를 입력할 수 있는 창이 하나 나타납니다. 편집이 가능한 스크립트 파일을 여기서 열고, 바로 실행할 수 있게 해주죠.  1. R 스크립트 파일 편집기 창: 실행할 명령어를 입력하고 편집할 수 있습니다. 특정 영역만 지정해 실행할 수 있죠. 2. R 프로그램 실행 창: 직접 명령어를 입력하면 실행되는 창으로 스크립트 편집기에서 Run을 실행하면 이 창에서 명령이 자동으로 입력되고 실행됩니다. 3. 데이터 및 명령 히스토리 창: 임시로 생성된 데이터셋의 그룹을 보여주거나 실행된 명령어 히스토리를 볼 수 있습니다. 4. 파일탐색기 및 뷰어 창: 파일을 찾거나 명령을 실행해 그래프가 나타나는 창입니다. 이거 본의 아니게 R 스튜디오 소개 포스팅이 되어가는군요. -ㅅ- ## 4. 페이스북의 fbprophet 패키지를 다운로드 받습니다.  R 프로그램이 좋은 건 패키지를 쉽게 다운로드 받아 사용할 수 있다는 건데요. 2년만에 R을 설치해 봤는데도 잘 되는군요. ㅎㅎ 위에서 소개한 2번 창(R 프로그램 실행 창이죠!)에서 아래의 명령을 입력해 실행합니다. `install.packages('prophet')` 위와 같이 입력해 실행하면 fbprophet 패키지가 설치됩니다. 참고로 fbprophet 패키지와 관련된 소개 사이트는 다음과 같습니다. * fbprophet: https://facebook.github.io/prophet/ ## 5. 스팀달러(SBD)의 과거 데이터를 다운로드 받아 준비합니다. 코인마켓캡 사이트에서는 친절하게 일별 데이터를 제공하고 있죠. 다음 링크로 접속해 조회합니다. https://coinmarketcap.com/currencies/steem-dollars/historical-data/?start=20130428&end=20180127  조회한 데이터 중에 일별 데이터를 복사해야 하기 때문에 위 이미지처럼 표의 데이터를 드래그 해서 복사를 합니다. 이걸 엑셀에 가져다 붙여넣고 .csv 파일로 저장하는거죠!  엑셀에다 붙여넣은 뒤 ①날짜표시 방식을 'YYYY-MM-DD'로 바꿔주고 ②날짜와 종가만 남기고 컬럼을 지웁니다. ③날짜 오름차순 정렬을 해서 ④csv 파일 형식으로 저장합니다.  이 csv 파일을 메모장에서 열어서 위와 같이 첫 번째 줄에 컬럼명으로 `"ds","y"` 라고 입력해 주고 저장합니다. (이 부분은 아시는 분들은 바꾸시면 됩니다. 편의를 위해 그냥 이렇게 했습니다.) ## 6. 데이터 로드 및 부분 실행 시켜보기  R 스튜디오가 좋은 게 편집기에서 영역을 지정해 실행시킬 수 있는 점인데요. 위와 같이 영역을 지정하고 **Run** 버튼을 눌러 영역 내에 있는 명령어를 실행할 수 있습니다. `library(prophet)` `library(dplyr)` `df <- read.csv('sbd_data_20180126.csv')` `m <- prophet(df)` `future <- make_future_dataframe(m, periods = 70)` `tail(future)` `forecast <- predict(m, future)` `tail(forecast[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])` 아까 저장한 csv 파일을 읽어오는 거죠. 해당 프로젝트의 디렉토리에 있어야 합니다. 저기 periods = 70 이라고 해 놓은 건 70일 이후의 예상치이므로 여러분들이 임의로 바꿔서 넣으실 수 있습니다. 그러면 다음과 같이 아래쪽 콘솔 창에 나타나게 됩니다.  이 결과에 따르면 2018년 4월 1일의 스팀 달러 가격은 12.22 달러 정도로 예상하고, 낮다면 10.68 이고 높다면 13.82 정도가 될 것으로 예상합니다. ## 7. 그래프로 결과 보기 `plot(m, forecast)` 위 명령어를 실행시키면 다음과 같이 그래프로 예상되는 추세를 확인할 수 있습니다.  그리고 다음 명령어로 조금 더 분석이 가능합니다. `prophet_plot_components(m, forecast)`  이 분석에 따르면 주로 일요일과 월요일에 상승 추세가 있어왔고, 수요일과 금요일에 제법 하락하는 패턴이었던 것으로 나타납니다. 자, 그러면 매도시에는 월요일에 매도 하시면 괜찮지 않을까..라고 혼자 중얼거려 봅니다. ㅎ 중간중간 명령어에 대한 설명은 따로 자세히 드리진 않았지만, 이렇게 직접 해보시는 것만으로 이미 데이터 분석 전문가(?)가 된 것 같지 않으세요?! 
👍 mastertri, lostmine27, stella12, injoy, seunglimdaddy, forhappywomen, chosungyun, leveragetrading, yoon, jyp, jeongwooyu, coffeex, shahbazfayyaz, jomongsil, tabris, gilma, happyberrysboy, pediatrics, codingman, pius.pius, yomancheck, sindoja, ilovemylife, asbear, krguidedog, sjchoi, joeuhw, sederscki, ggokggee, artist-ej, naue1524, girina79, yslee, muwon123, smartcome, conam, nand, card1001, vixima7, rbaggo, inside-design, indygu2015, bryanrhee, danihwang, munhwan, anna2018, harryji, loveis0819, etainclub, isaac.jung, the-oasis, worldjds,