안녕하세요? 트리입니다.
주말을 맞아 너무 추운 날씨에 밖으로 나가지는 못하겠고, 게으른 주말을 맞았습니다.
스팀잇에 들어와 글도 읽고 댓글도 달다가 @hellocrypto 님이 올려주신 재미있는 글을 보았습니다.
페이스북의 fbprophet 오픈소스 프로그램을 이용해 스팀의 미래시세를 예측하는 포스팅입니다.
과거 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 를 선택하시면 다음과 같이 스크립트를 입력할 수 있는 창이 하나 나타납니다.
편집이 가능한 스크립트 파일을 여기서 열고, 바로 실행할 수 있게 해주죠.
- R 스크립트 파일 편집기 창: 실행할 명령어를 입력하고 편집할 수 있습니다. 특정 영역만 지정해 실행할 수 있죠.
- R 프로그램 실행 창: 직접 명령어를 입력하면 실행되는 창으로 스크립트 편집기에서 Run을 실행하면 이 창에서 명령이 자동으로 입력되고 실행됩니다.
- 데이터 및 명령 히스토리 창: 임시로 생성된 데이터셋의 그룹을 보여주거나 실행된 명령어 히스토리를 볼 수 있습니다.
- 파일탐색기 및 뷰어 창: 파일을 찾거나 명령을 실행해 그래프가 나타나는 창입니다.
이거 본의 아니게 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)
이 분석에 따르면 주로 일요일과 월요일에 상승 추세가 있어왔고, 수요일과 금요일에 제법 하락하는 패턴이었던 것으로 나타납니다.
자, 그러면 매도시에는 월요일에 매도 하시면 괜찮지 않을까..라고 혼자 중얼거려 봅니다. ㅎ
중간중간 명령어에 대한 설명은 따로 자세히 드리진 않았지만,
이렇게 직접 해보시는 것만으로 이미 데이터 분석 전문가(?)가 된 것 같지 않으세요?!
와......트리님 이걸 직접 포스팅하시다니
진짜 능력자시네요 ㅎㅎ
그나저나 2월말에 7.3달러면 7300원정도되겠군요~~~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
지금 1100원 조금 안되니깐 8천원 어떠세요? ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그럼 그러시죠!ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그 글 저도 봤는데 그 짧은 사이 이 정도 포스팅을 다시 만드시다니~ ㅎㅎ
R 요놈 꽤 만만치 않아서 학교나 학원 강의도 많을 정도인데 잘 쓰시네요.
도움 많이 되었습니다~ 건강 잘 챙기시고요!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
이거 직접 해보고 포스팅까지 정리하는데 시간이 꽤 걸리네요. ㅎㅎ
R은 2년 넘게 안썼던 놈인데, 덕분에 오랜만에 꺼내봤어요. ^^
감사합니다~ 즐거운 주말 되세요! : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
트리님 컴퓨터 전공이신가요 @.@
헤롱헤롱합니다.
스팀달러 파워전환하려고 모으는 중인데
예전의 그때가 아직 안오네요 ㅎㅎㅎ
오기만 간절히 기다리는중!!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
넵넵- 컴퓨터랑 경영을 전공해서 둘 다 깊이가 얕은... -ㅅ-
저도 스팀달러가 한 번 뻥~ 해주길 기다리고 있어요. ㅋㅋ
지난 번 스팀/스달이 1:1일 때 모든 스팀을 스달로 바꿔놨었죠. : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
오! 나중에 이것도 따라해봐야겠습니다.
늘 좋은글 감사합니다 ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
산부인과에서는 R이 필수죠!
(농담입니...;; ㅋㅋㅋ)
감사합니다~!! ㅎㅎ
즐거운 주말 되세요~~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
크 이대로만 되었으면 너무 좋겠네요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
더 올라서 페이스북의 예측치를 뒤엎어 버려야... ㅋㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
잼있게 봤어요 ~ 앞으로도 가끔 분석해주시면 ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
재밌게 봐주셔서 감사합니다. ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
예측뿐만 아니라 R프로그램 설치부터... 친절한 강의 잘 봤습니다.
스달의 4월! 어서오렴!ㅋ
저 스달 너무 비쌀때 샀나봐요ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
R 프로그램 저도 참 오랜만에 띄워놨는데요.
분석용으로 사용하기 참 좋은 툴이죠~ ^^
4월 이전에 이 가격이 와주길 기대합니다. ㅎㅎ
스달아 가즈아~!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
재미있는 분석이네요 :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그쵸? ㅎㅎ
저도 @hellocrypto 님의 포스팅을 보고 급 관심 생겨서 안하던 R까지.. ㅎㅎ
사실 저 데이터는 단순 수치로만 구성되었기 때문에 가격에 영향을 다른 요소들이 배제되었다는 걸 기억해야 겠지만, 재미있게 볼만한 요소이긴 하죠. : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
R 요놈 요물이네요.
한번 해봐야겠네요.
그런데 결론은 최근 몇주간의 가격 변동률이 너무 심해서 예측은 좀 어려울 듯 싶네요.
평균적 증가나 감소가 아니니깐요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
맞습니다-
숫자로만 판단하기 때문에 숫자 외에 가격변동에 영향을 줄 수 있는 요소는 철저히 배제된 결과지요.
그래도 호기심에 한 번 해봤는데 재미있네요. : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
링크하신 포스트 가보도록 하겠습니다.
정리된 자료 잘 보고 가요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다. ㅎ
원문에서도 잘 설명해 주셔서 저도 직접 해보는데 도움이 많이 된 것 같습니다. ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
힘이 솟는 예측이네요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
으라차차차차!! ㅎㅎ
함께 힘내시죠!! : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저도 졸업 논문을 R로 ㅋㅋㅋ 저렇게 흘러갔으면 합니다 @홍보해
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
홍보 감사합니다. ㅎㅎ
R이 꽤나 괜찮은 무료 도구라서 제가 안써본 2년 동안 이렇게까지 패키지들이 많이 늘었네요~ ㅎ
페이스북 관계자들께도 감사드립니다. ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
멋지십니다. 트리님께서 직접 시행해 보시고 올려 주시니, 더욱 믿음이 가는군요. 7.3달러정도면 지금 가격을 유지하거나 지금 가격에서 조금 오르거나겠군요. 예측이 들어맞길 바랍니다^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아, 저기 스팀 7.3 달러는 @hellocrypto 님이 뽑아주신 데이터구요~ ㅎㅎ
사실 스팀은 1년치가 아니라 최초 데이터까지 해서 돌리면 암울한 -_- 결과가 나오더라구요. 두둥~!
근데 어차피 이런 예측 데이터도 통계를 기반으로 하고 있다 보니 outlier 가 나올 수 밖에 없어서..
(사실은 본문을 더 쓰기 힘들어서.. ㅋㅋㅋ)
아무튼..
스팀의 미래는 밝다고 봅니다!! +_+
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
예술분야인 저에게는 너무나 신세계.. 신기해요!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
신기하게 봐주셔서 감사합니다. ㅎㅎ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저에겐조금 어렵지만 정말 유용한 툴이로군요@_@!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
사실 제게도 쉽지는 않..;; ㅋㅋ
그런데 앞으로 이쪽이 꾸준히 발전해 나갈 예정이라..
아예 손 놓고 있기도 뭐하고 해서 끄적거려 봤습니다. ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
R은 공부해보고 싶었는데 너무 어려워서 중도포기한 부끄러운 경험이 있었습니다. 이토록 자세한 설명이 저 같은 사람에게는 큰 도움이 되리라 생각합니다. 감사드리며 팔로우하고 갑니다. 자주 오겠습니다!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다. ^^
R 패키지 자체만 보면 되게 어려워 보이는데, R 스튜디오 같은 툴이 같이 지원되니 조금 더 쉽게 사용할 수 있는 것 같아요~ ㅎㅎ
자주 뵐께요~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
앗 어제랑 그저께 스팀달러 고가 맞추는 이벤트를 봤었는데, 이것을 이런식으로 분석도 가능하군요 ㅎㅎㅎ 역시 마스터리님이셔요!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아 그런 이벤트가 있었군요!
근데 이건 철저하게 과거 데이터를 바탕으로 숫자만으로 예측한 예측치라서 실제랑은 다르기도 하죠. ㅎ
특히나 스팀의 경우에는 급증하는 가입자 수나 SMT 등이 모두 반영된 건 아니니.. : )
재밌게 봐주셔서 감사합니다. ^_^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
대단하시네요.
이제 막 입문한 스팀머입니다. 앞으로 많은 정보 얻고 갈께요~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다- 자주 뵐께용~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
와...!희망과 꿈을 주는결과!!이대로만 흘러간다면~~ㅋㅋ감사히 잘보았습니다 마스터님
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
이대로만 흘러갈까요? ㅋㅋㅋ
실제로는 이것보다 변수가 많으니 그냥 희망섞인 전망으로만 봐주세요~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아니 트리님 이 정체불명의 계산들은 무어인가요 >___<
제게는 엄청난 암호처럼 보여집니다 ㅎㅎ
마지막 해답만 쏙 빼서 알아들어도 되는것 맞지유..? 헤헤 :)
예측 가격을 보니 좋은 소식인것 같아 마냥 기쁘고 갑니다 ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
암호 맞습니다. -ㅅ-
원래 암호 같은 말들로 사람들을 미혹하는 법이죠. ㅋㅋ
근데 그거 아니더라도 스팀은 잘 될 거예용~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저것들에 로그값 씌우고 추세선을 그린다면...?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
최근 급등이 있어서 추세선이 너무 떠버릴 것 같기도 합니다.
상상의 행복회로가 막 불타는.. ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
오옷. 트리님 내일 한번 매도타이밍을 노려봐야겠습니다+_+ 꼭 정확하지 않아도 저렇게 분석해볼 수 있구나 하는 하나의 방법이 있다는 게 신기하네요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그쵸- ㅎㅎ
다양한 방법 중에 정말 숫자만 이용한 예측방법이긴 한데, 재미있죠~ : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
When we can Celebrate your steem it birthday ?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
:) 오 이렇게 분석이 가능하군요.
혹시 시간이 가능하시면 거래물량과 가격변동의 상관관계 이런 부분도 분석해주실 수 있을지요? 간단하게 엑설로 하는 방법이 있을까요?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
지금 말씀하신 상관관계가 거래량-가격변동의 correlation 말씀하시는 거죠?
상관관계를 R에서 뽑아볼 수도 있을 거구요.
엑셀이 더 직관적일 수 있을 것 같습니다.
저기 코인마켓캡의 가격, 거래량을 엑셀로 가져와서 가격의 일일 변동을 전날과 비교해서 비율을 하나 뽑아내고, correl(가격집합, 거래량집합) 으로 하면 바로 Correlation이 나옵니다.
1년치로 SBD에 대해 한번 해보니깐 0.146838 이라고 나오긴 하네요. : )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아 그렇군요.. 그다지 상관관계가 높지는 않군요~ 감사합니다. 몇개의 코인에 대해서 해보아서 다 동일한 결과를 가지는지 보고 싶네요. 감사합니다 :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
코인정보가 엄청난 빅데이터를 제공해주네요. 나중에 트랙잰션 데이터까지 쓰게 된다면 엄청나겠에요. 그것도 엄선된 데이터로요.
잘 보고 갑니다~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그렇죠- 가격에는 다양한 정보들이 녹아 있으니깐요..
물론 그걸로 미래 가격 예측은 제한적이긴 하겠지만, 의미는 있을 것 같아요. ㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit