ビットコインと主要なアルトコインの価格に相関関係があるのかを検証する

# ライブラリのインストール
import requests
import pandas as pd
import json

# ビットコイン&アルトコインの価格を取得する
url = 'https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=jpy&days=max'
r = requests.get(url)
r2= json.loads(r.text)
btc = r2['prices']

url2 = 'https://api.coingecko.com/api/v3/coins/ripple/market_chart?vs_currency=jpy&days=max'
r3 = requests.get(url2)
r4 = json.loads(r3.text)
ripple = r4['prices']

url3=('https://api.coingecko.com/api/v3/coins/')+str('ethereum')+('/market_chart?vs_currency=jpy&days=max')
r5=requests.get(url3)
r6=json.loads(r5.text)
eth=r6['prices']

url4=('https://api.coingecko.com/api/v3/coins/')+str('bitcoin-cash')+('/market_chart?vs_currency=jpy&days=max')
r7=requests.get(url4)
r8=json.loads(r7.text)
bch=r8['prices']

今回価格の取得に使ったのはCoingeckoという仮想通貨価格サイトです。APIの使い方については以下の記事で解説しています。

これで、BTC・BCH・ETH・XRPにそれぞれに変数に対応する通貨の日次データが格納されているはずです。一応中身を確認すると以下のようになっているかと思います。

ただこのままだとデータの始め日がコインごとに違うので、揃える必要があります。基本的にビットコインが一番長いので、アルトコイン側の開始日に合わせるようにデータを整理します。

とりあえずリップルの例で行くと、まず2次元配列になっているリストから日付と価格を一次元の変数に再格納します。

##リップルの日付と価格を分離抽出

ripple_date=[]
ripple_price=[]

for i in ripple:
ripple_date.append(i[0])
ripple_price.append(i[1])

len(ripple_date)

これでripple_dateとripple‗priceに日付と価格のデータが格納されます。

##bitcoinの価格データからrippleの稼働日と同じ日のデータを抽出する

bitcoin_dataforxrp=[]
bitcoin_price=[]
bitcoin_date=[]


#ビットコインの価格から比較対象となるXRPのデータがある日のデータを抽出する
for i in btc:
if i[0] in ripple_date:
bitcoin_dateforxrp.append(i)

#その中から(ビットコインの)価格データだけを抽出
for i in bitcoin_dateforxrp:
bitcoin_price.append(i[1])
bitcoin_date.append(i[0])

len(bitcoin_date)

最後のlenでのデータの長さが一致していればXRPに対応するBTCのデータが抽出できたということになります。しかし誤差がでているので今度がこのビットコイン価格データに対応しているXRPの価格データを抽出します。

#ビットコインの価格データを参照して
#それに対応するXRPの価格データだけ抽出する

ripple_dateforbtc=[]
ripple_price=[]

for i in ripple:
if i[0] in bitcoin_date:
ripple_dateforbtc.append(i)
for i in ripple_dateforbtc:
ripple_price.append(i[1])

len(ripple_price)

これで両者のlen()の長さが合致したので、pandasの関数が使えるデータフレームにまとめます。ここで使うのは変化率で価格は要らないのでpct.change()で変化率に計算しなおしたものをデータフレームに格納します。

##データフレームの作成
df = pd.DataFrame({
        'btc' : bitcoin_price,
        'ripple':ripple_price,
    })
df


#CSVを出力する
df.to_csv("btcxrp.csv")

##変化率を計算する
btc_change=df['btc'].pct_change()
ripple_change=df['ripple'].pct_change()

#データフレームを作成する
df = pd.DataFrame({
'btc' : btc_change,
'ripple':ripple_change,
})
df

#データフレームの中身をCSVに出力する
df.to_csv("bitcxrpchange.csv")

これで分析に使うデータは揃ったので実際に分析していきます。

#ライブラリの読み込み
import numpy as np
import seaborn as sns
 %matplotlib inline


#CSVの読み込み
a = pd.read_csv("bitcxrpchange.csv",index_col=0)

#欠損地の削除
b=a.dropna()

 
#データフレームをずらす
btcprice=b['btc'][0:1915]
xrpprice=b['ripple'][1:1916]

#numpy配列に変換
btcprice=btcprice.values
xrpprice = xrpprice.values

#データフレームを結合
df2 = pd.DataFrame({
        'btc' : btcprice,
        'ripple':xrpprice,
    })
df2

 #回帰分析の結果をプロットする
sns.pairplot(df2)

[0:1915] [1:1916]の部分は要はビットコインのn日目のデータとリップルのn+1日が比較対象になるようにデータをずらしているだけです。

そして回帰分析した結果は以下のようになりました。

うーんあんまり相関関係はなさそう・・・。

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->