스팀달러 가격를 직접 예측해보자!(with R)

in kr •  7 years ago 

dkoi_logo

안녕하세요? 트리입니다.
주말을 맞아 너무 추운 날씨에 밖으로 나가지는 못하겠고, 게으른 주말을 맞았습니다.
스팀잇에 들어와 글도 읽고 댓글도 달다가 @hellocrypto 님이 올려주신 재미있는 글을 보았습니다.

페이스북의 fbprophet 오픈소스 프로그램​을 이용해 스팀의 미래시세를 예측하는 포스팅입니다.
과거 1년치 데이터를 이용해 한달 뒤 스팀의 가격을 예측해 보는 내용입니다.
결론적으로 "2월 28일의 종가는 7.3달러일 것이다."라는 희망적인 메시지를 보내주었지요.


이 추운 날 집에서 해볼 수 있는 재미있는 공부가 될 것 같아 직접 해보기로 했습니다.

@hellocrypto님은 파이썬을 이용해 결과를 보여 주셨는데,
저는 몇 년 전에 잠시 끄적거렸던 R을 이용해 한 번 해보기로 했습니다.
R이 설치도 안되어 있어서 다시 다운로드 받아서 해 보았지요.

프로그램을 잘 모르시는 분들도 직접 해보실 수 있을 정도로 정리해 보겠습니다. : )


1. R 다운로드 & 설치하기

위 경로로 접속하면 다음 화면이 나옵니다.

R_다운로드

여기서 제일 위의 'Download R 3.4.3 for Windows' 링크를 클릭해 'R-3.4.3-win.exe' 파일을 다운로드 받아 설치합니다.

2. R Studio 다운로드 & 설치하기

R Studio는 R의 사용을 쉽게 해주는 툴입니다.
프로젝트로 묶어서 파일을 관리도 해주고, 여러 분할 창으로 한 눈에 R을 쉽게 사용할 수 있게 해줍니다.

R스튜디오_다운로드

여기의 RStudio Desktop Free 버전을 다운로드 받습니다.
저는 윈도우10 사용자이기 때문에 아래의 RStudio 1.1.419 - Windows Vista/7/8/10로 다운로드 받아 설치했습니다.
인스톨러를 통해 설치하시던지 Zip 파일로 받아 압축을 푸시던지 관계없습니다.

3. R 스튜디오 실행하기


R 스튜디오를 실행해서 열면 다음과 비슷한 형태로 열립니다.

R스튜디오초기

File - New Project 를 통해 새로운 프로젝트를 만드시면 프로젝트 단위로 쉽게 관리할 수 있습니다.
위 화면은 제가 'test'라는 이름으로 프로젝트를 만든 겁니다.

그리고 File - New File - R Script 를 선택하시면 다음과 같이 스크립트를 입력할 수 있는 창이 하나 나타납니다.
편집이 가능한 스크립트 파일을 여기서 열고, 바로 실행할 수 있게 해주죠.

R스튜디오준비

  1. R 스크립트 파일 편집기 창: 실행할 명령어를 입력하고 편집할 수 있습니다. 특정 영역만 지정해 실행할 수 있죠.
  2. R 프로그램 실행 창: 직접 명령어를 입력하면 실행되는 창으로 스크립트 편집기에서 Run을 실행하면 이 창에서 명령이 자동으로 입력되고 실행됩니다.
  3. 데이터 및 명령 히스토리 창: 임시로 생성된 데이터셋의 그룹을 보여주거나 실행된 명령어 히스토리를 볼 수 있습니다.
  4. 파일탐색기 및 뷰어 창: 파일을 찾거나 명령을 실행해 그래프가 나타나는 창입니다.

이거 본의 아니게 R 스튜디오 소개 포스팅이 되어가는군요. -ㅅ-

4. 페이스북의 fbprophet 패키지를 다운로드 받습니다.


패키지인스톨

R 프로그램이 좋은 건 패키지를 쉽게 다운로드 받아 사용할 수 있다는 건데요.
2년만에 R을 설치해 봤는데도 잘 되는군요. ㅎㅎ
위에서 소개한 2번 창(R 프로그램 실행 창이죠!)에서 아래의 명령을 입력해 실행합니다.

install.packages('prophet')

위와 같이 입력해 실행하면 fbprophet 패키지가 설치됩니다.
참고로 fbprophet 패키지와 관련된 소개 사이트는 다음과 같습니다.

5. 스팀달러(SBD)의 과거 데이터를 다운로드 받아 준비합니다.


코인마켓캡 사이트에서는 친절하게 일별 데이터를 제공하고 있죠.

다음 링크로 접속해 조회합니다.

https://coinmarketcap.com/currencies/steem-dollars/historical-data/?start=20130428&end=20180127

SBD일별가격

조회한 데이터 중에 일별 데이터를 복사해야 하기 때문에 위 이미지처럼 표의 데이터를 드래그 해서 복사를 합니다.
이걸 엑셀에 가져다 붙여넣고 .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_new

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

와......트리님 이걸 직접 포스팅하시다니
진짜 능력자시네요 ㅎㅎ
그나저나 2월말에 7.3달러면 7300원정도되겠군요~~~

지금 1100원 조금 안되니깐 8천원 어떠세요? ㅋㅋ

그럼 그러시죠!ㅎㅎ

그 글 저도 봤는데 그 짧은 사이 이 정도 포스팅을 다시 만드시다니~ ㅎㅎ
R 요놈 꽤 만만치 않아서 학교나 학원 강의도 많을 정도인데 잘 쓰시네요.
도움 많이 되었습니다~ 건강 잘 챙기시고요!

이거 직접 해보고 포스팅까지 정리하는데 시간이 꽤 걸리네요. ㅎㅎ
R은 2년 넘게 안썼던 놈인데, 덕분에 오랜만에 꺼내봤어요. ^^
감사합니다~ 즐거운 주말 되세요! : )

트리님 컴퓨터 전공이신가요 @.@
헤롱헤롱합니다.
스팀달러 파워전환하려고 모으는 중인데
예전의 그때가 아직 안오네요 ㅎㅎㅎ
오기만 간절히 기다리는중!!!

넵넵- 컴퓨터랑 경영을 전공해서 둘 다 깊이가 얕은... -ㅅ-
저도 스팀달러가 한 번 뻥~ 해주길 기다리고 있어요. ㅋㅋ
지난 번 스팀/스달이 1:1일 때 모든 스팀을 스달로 바꿔놨었죠. : )

오! 나중에 이것도 따라해봐야겠습니다.
늘 좋은글 감사합니다 ^^

산부인과에서는 R이 필수죠!
(농담입니...;; ㅋㅋㅋ)
감사합니다~!! ㅎㅎ

즐거운 주말 되세요~~ : )

크 이대로만 되었으면 너무 좋겠네요

더 올라서 페이스북의 예측치를 뒤엎어 버려야... ㅋㅋㅋ

잼있게 봤어요 ~ 앞으로도 가끔 분석해주시면 ㅎㅎ

재밌게 봐주셔서 감사합니다. ^^

예측뿐만 아니라 R프로그램 설치부터... 친절한 강의 잘 봤습니다.
스달의 4월! 어서오렴!ㅋ
저 스달 너무 비쌀때 샀나봐요ㅋㅋ

R 프로그램 저도 참 오랜만에 띄워놨는데요.
분석용으로 사용하기 참 좋은 툴이죠~ ^^
4월 이전에 이 가격이 와주길 기대합니다. ㅎㅎ
스달아 가즈아~!!

재미있는 분석이네요 :)

그쵸? ㅎㅎ
저도 @hellocrypto 님의 포스팅을 보고 급 관심 생겨서 안하던 R까지.. ㅎㅎ
사실 저 데이터는 단순 수치로만 구성되었기 때문에 가격에 영향을 다른 요소들이 배제되었다는 걸 기억해야 겠지만, 재미있게 볼만한 요소이긴 하죠. : )

R 요놈 요물이네요.
한번 해봐야겠네요.

그런데 결론은 최근 몇주간의 가격 변동률이 너무 심해서 예측은 좀 어려울 듯 싶네요.

평균적 증가나 감소가 아니니깐요

맞습니다-
숫자로만 판단하기 때문에 숫자 외에 가격변동에 영향을 줄 수 있는 요소는 철저히 배제된 결과지요.
그래도 호기심에 한 번 해봤는데 재미있네요. : )

링크하신 포스트 가보도록 하겠습니다.

정리된 자료 잘 보고 가요

감사합니다. ㅎ
원문에서도 잘 설명해 주셔서 저도 직접 해보는데 도움이 많이 된 것 같습니다. ^^

힘이 솟는 예측이네요.

으라차차차차!! ㅎㅎ
함께 힘내시죠!! : )

저도 졸업 논문을 R로 ㅋㅋㅋ 저렇게 흘러갔으면 합니다 @홍보해

홍보 감사합니다. ㅎㅎ
R이 꽤나 괜찮은 무료 도구라서 제가 안써본 2년 동안 이렇게까지 패키지들이 많이 늘었네요~ ㅎ
페이스북 관계자들께도 감사드립니다. ㅋㅋ

@mastertri님 안녕하세요. 별이 입니다. @joeuhw님이 이 글을 너무 좋아하셔서, 저에게 홍보를 부탁 하셨습니다. 이 글은 @krguidedog에 의하여 리스팀 되었으며, 가이드독 서포터들로부터 보팅을 받으셨습니다. 축하드립니다!

멋지십니다. 트리님께서 직접 시행해 보시고 올려 주시니, 더욱 믿음이 가는군요. 7.3달러정도면 지금 가격을 유지하거나 지금 가격에서 조금 오르거나겠군요. 예측이 들어맞길 바랍니다^^

아, 저기 스팀 7.3 달러는 @hellocrypto 님이 뽑아주신 데이터구요~ ㅎㅎ
사실 스팀은 1년치가 아니라 최초 데이터까지 해서 돌리면 암울한 -_- 결과가 나오더라구요. 두둥~!
근데 어차피 이런 예측 데이터도 통계를 기반으로 하고 있다 보니 outlier 가 나올 수 밖에 없어서..
(사실은 본문을 더 쓰기 힘들어서.. ㅋㅋㅋ)

아무튼..
스팀의 미래는 밝다고 봅니다!! +_+

예술분야인 저에게는 너무나 신세계.. 신기해요!

신기하게 봐주셔서 감사합니다. ㅎㅎ : )

저에겐조금 어렵지만 정말 유용한 툴이로군요@_@!

사실 제게도 쉽지는 않..;; ㅋㅋ
그런데 앞으로 이쪽이 꾸준히 발전해 나갈 예정이라..
아예 손 놓고 있기도 뭐하고 해서 끄적거려 봤습니다. ㅎㅎ

R은 공부해보고 싶었는데 너무 어려워서 중도포기한 부끄러운 경험이 있었습니다. 이토록 자세한 설명이 저 같은 사람에게는 큰 도움이 되리라 생각합니다. 감사드리며 팔로우하고 갑니다. 자주 오겠습니다!!

감사합니다. ^^
R 패키지 자체만 보면 되게 어려워 보이는데, R 스튜디오 같은 툴이 같이 지원되니 조금 더 쉽게 사용할 수 있는 것 같아요~ ㅎㅎ
자주 뵐께요~ : )

앗 어제랑 그저께 스팀달러 고가 맞추는 이벤트를 봤었는데, 이것을 이런식으로 분석도 가능하군요 ㅎㅎㅎ 역시 마스터리님이셔요!!

아 그런 이벤트가 있었군요!
근데 이건 철저하게 과거 데이터를 바탕으로 숫자만으로 예측한 예측치라서 실제랑은 다르기도 하죠. ㅎ
특히나 스팀의 경우에는 급증하는 가입자 수나 SMT 등이 모두 반영된 건 아니니.. : )
재밌게 봐주셔서 감사합니다. ^_^

대단하시네요.
이제 막 입문한 스팀머입니다. 앞으로 많은 정보 얻고 갈께요~

감사합니다- 자주 뵐께용~ : )

와...!희망과 꿈을 주는결과!!이대로만 흘러간다면~~ㅋㅋ감사히 잘보았습니다 마스터님

이대로만 흘러갈까요? ㅋㅋㅋ
실제로는 이것보다 변수가 많으니 그냥 희망섞인 전망으로만 봐주세요~ : )

아니 트리님 이 정체불명의 계산들은 무어인가요 >___<
제게는 엄청난 암호처럼 보여집니다 ㅎㅎ
마지막 해답만 쏙 빼서 알아들어도 되는것 맞지유..? 헤헤 :)
예측 가격을 보니 좋은 소식인것 같아 마냥 기쁘고 갑니다 ^^

암호 맞습니다. -ㅅ-
원래 암호 같은 말들로 사람들을 미혹하는 법이죠. ㅋㅋ
근데 그거 아니더라도 스팀은 잘 될 거예용~ : )

저것들에 로그값 씌우고 추세선을 그린다면...?

최근 급등이 있어서 추세선이 너무 떠버릴 것 같기도 합니다.
상상의 행복회로가 막 불타는.. ㅋㅋ

오옷. 트리님 내일 한번 매도타이밍을 노려봐야겠습니다+_+ 꼭 정확하지 않아도 저렇게 분석해볼 수 있구나 하는 하나의 방법이 있다는 게 신기하네요.

그쵸- ㅎㅎ
다양한 방법 중에 정말 숫자만 이용한 예측방법이긴 한데, 재미있죠~ : )

When we can Celebrate your steem it birthday ?

:) 오 이렇게 분석이 가능하군요.
혹시 시간이 가능하시면 거래물량과 가격변동의 상관관계 이런 부분도 분석해주실 수 있을지요? 간단하게 엑설로 하는 방법이 있을까요?

지금 말씀하신 상관관계가 거래량-가격변동의 correlation 말씀하시는 거죠?
상관관계를 R에서 뽑아볼 수도 있을 거구요.
엑셀이 더 직관적일 수 있을 것 같습니다.
저기 코인마켓캡의 가격, 거래량을 엑셀로 가져와서 가격의 일일 변동을 전날과 비교해서 비율을 하나 뽑아내고, correl(가격집합, 거래량집합) 으로 하면 바로 Correlation이 나옵니다.
1년치로 SBD에 대해 한번 해보니깐 0.146838 이라고 나오긴 하네요. : )

  ·  7 years ago (edited)

아 그렇군요.. 그다지 상관관계가 높지는 않군요~ 감사합니다. 몇개의 코인에 대해서 해보아서 다 동일한 결과를 가지는지 보고 싶네요. 감사합니다 :)

코인정보가 엄청난 빅데이터를 제공해주네요. 나중에 트랙잰션 데이터까지 쓰게 된다면 엄청나겠에요. 그것도 엄선된 데이터로요.

잘 보고 갑니다~

그렇죠- 가격에는 다양한 정보들이 녹아 있으니깐요..
물론 그걸로 미래 가격 예측은 제한적이긴 하겠지만, 의미는 있을 것 같아요. ㅎ