こんにちは、ウチダです。
夫婦で貯金ゼロ・借金400万円から
仮想通貨と株式へ投資をスタートし、
いまでは1500万円を運用しています。
副業は仮想通貨のマイニング企業を立ち上げ、
月5万円の不労所得を得ています。
仮想通貨のマイニングマシンに興味はあるけど、
「収益の計算ってめんどくさそう」
「収益の分析はどうしよう」
と悩んでいませんか?
実はプログラミング言語Pythonを使えば
簡単に分析できるんです。
なぜこんなことが分かるかといえば
私が実際にマイニングレポートを
Pythonで分析しているからです。
この記事ではNiceHashでマイニングした結果を
Pythonで分析する方法を紹介します。
この記事を読み終えると、
仮想通貨のマイニング収益や必要経費を
詳しく分析できるようになります。
目次
マイニングの収益をPythonで分析しょう!収益や必要経費の確認方法

NiceHashではマイニングレポートを
CSVファイル形式で出力できます。
やり方はこちら↓
出力されるデータはこんな感じです。

記録されるデータの内容は、以下のとおりです。
- イベント発生の日時(設定した時間、サーバー時間)
- イベントの内容
- ビットコインのコイン数
- ビットコインのレート
- 日本円での金額
データの最後には以下がまとめられています。
- 出金手数料
- マイニング手数料
- マイニング報酬
- 出金完了額
- マイニング報酬から手数料や出金額を差し引いた金額
これらがビットコインのコイン数、日本円の金額で
表示されています。
ただ、値は分かるのですが、
グラフなどは一切ないため、
分析ができません。
そこで、プログラミング言語Pythonを使って
次の内容を分析します。
- マイニングの収益と必要経費のまとめ
- マイニング報酬の推移
- マイニング利益の推移
- マイニング期間のビットコイン価格の推移
- 手数料の合計金額
それぞれプログラム付きで解説します。
マイニングの分析用データファイルを作成しよう
Pythonで分析しやすいように加工します。
CSVファイルの名前は、mining.csvに変更しました。
#ライブラリのインポート
import pandas as pd
from pylab import mpl, plt
import datetime
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
#CSVファイルの読み込み
data = pd.read_csv('mining.csv')
#リストデータだけを抽出
df = data[:-5]
#マイニング報酬と手数料だけ抽出
re_df = df[(df['Purpose'] == 'Hashpower mining') | (df['Purpose'] == 'Hashpower mining fee')]
re_df = re_df.reset_index() #インデックスの振り直し
#マイニング報酬だけを抽出
rieki_df = df[df['Purpose'] == 'Hashpower mining']
rieki_df = rieki_df.reset_index()
#マイニング手数料だけを抽出
cost_df = df[df['Purpose'] == 'Hashpower mining fee']
cost_df = cost_df.reset_index()
#出金した金額だけを抽出
withdraw_df = df[df['Purpose'] == 'Withdrawal complete']
withdraw_df = withdraw_df.reset_index()
#出金手数料だけを抽出
withdrawfee_df = df[df['Purpose'] == 'Withdrawal fee']
withdrawfee_df = withdrawfee_df.reset_index()
csvファイルをpythonで読み込みました。
準備ができたので分析していきます。
Pythonでマイニングの収益と必要経費をまとめよう
matome = data[-5:]
matome.head()
データの最下部にまとまっているので、
こちらだけを抽出しました。

マイニング報酬が21,569円、
マイニング手数料が432円、
出金手数料が59円かかっていますね。
ここからさらに分析していきます。
pythonでマイニング報酬の推移を分析しよう
#マイニング報酬のみを抽出
rieki_df = re_df[re_df['Purpose'] == 'Hashpower mining']
rieki_df = rieki_df.reset_index() #インデックスの振り直し
#グラフデータの用意
num = rieki_df.index #回数
amount_jpy = rieki_df['Amount (JPY)'] #報酬金額
#グラフの作成と表示
plt.figure(figsize=(20, 10)) #グラフサイズ
plt.plot(num, amount_jpy, lw=2, label = 'amount_jpy', color='b') #グラフデータ
plt.legend(loc=2, fontsize=18) #凡例
plt.xlabel('count', fontsize=18) #横軸のラベル
plt.ylabel('price(JPY)', fontsize=18) #縦軸のラベル
plt.tick_params(labelsize=18) #ラベルの文字サイズ
plt.savefig("mining_profit_count.png") #名前をつけて保存
できあがったグラフがこちら↓

マイニング報酬は4時間に1回
ウォレットに支払われます。
安定しているわけではなく、
上がったり下がったりの繰り返しです。
ちなみに後半は急激に上昇していますが、
これはRTX3060を買い増したためです。
どれぐらい儲けるかは
こちらの記事でまとめています↓
pythonでマイニングの利益をグラフ化しよう
#マイニング報酬と手数料だけ抽出
re_df = df[(df['Purpose'] == 'Hashpower mining') | (df['Purpose'] == 'Hashpower mining fee')]
re_df = re_df.reset_index() #インデックスの振り直し
#マイニング報酬から手数料を差し引いた合計金額
re_df['Profit (JPY)'] = re_df['Amount (JPY)'].cumsum()
#グラフデータの用意
profit = re_df['Profit (JPY)']
re_num = re_df.index #回数
#月末時点での利益の合計金額
print(profit.iloc[-1])
#グラフの作成と表示
plt.figure(figsize=(20, 10))
plt.plot(re_num, profit , lw=2, label = 'profit_jpy', color='b')
plt.legend(loc=2, fontsize=18)
plt.xlabel('count', fontsize=18)
plt.ylabel('price(JPY)', fontsize=18)
plt.tick_params(labelsize=18)
plt.savefig("mining_profit.png")
今回は手数料を差し引いて
マイニング報酬の合計額を表示しています。
できあがったグラフがこちら↓

報酬額は直線状に積み上がっていることが分かります。
毎回のマイニング報酬は変動が激しいですが、
積み上げは安定して儲かると言えますね。
マイニング期間のビットコイン価格の推移を調べよう
#マイニング報酬のデータを抽出
rieki_df = df[df['Purpose'] == 'Hashpower mining']
rieki_df = rieki_df.reset_index()
#グラフデータの用意
num = rieki_df.index #回数
rate = rieki_df['* Exchange rate'] / rieki_df['* Exchange rate'][0] * 100 #マイニングの交換レートの変化率
#グラフの作成と表示
plt.figure(figsize=(20, 10))
plt.plot(num, rate, lw=2, label = 'Exchance rate', color='b')
plt.legend(loc=1, fontsize=18)
plt.xlabel('count', fontsize=18)
plt.ylabel('BTC price change(%)', fontsize=18)
plt.tick_params(labelsize=18)
plt.savefig("BTCexchange_rate.png")
12月1日の最初の価格を基に
ビットコイン価格の変化率を計算しました。
できあがったグラフがこちらです↓

12月は最大で20%も下がりましたね。
個人で投資している分もあるので、
ウチダ家の資産は大ダメージです。
では、ビットコイン価格はマイニング報酬と
相関があるのか?
pythonでさらに分析します。
pythonでビットコイン価格とマイニング報酬の関係を分析しよう
#グラフデータの用意
num = rieki_df.index #回数
rate = rieki_df['* Exchange rate'] / rieki_df['* Exchange rate'][0] * 100 #マイニングの交換レートの変化率
#マイニング報酬の変化率
profit_change = rieki_df['Amount (JPY)'] / rieki_df['Amount (JPY)'][0] * 100
#グラフの作成と表示
plt.figure(figsize=(20, 10))
plt.plot(num[:169], rate[:169], lw=2, label = 'BTC exchance rate', color='b')
plt.plot(num[:169], profit_change[:169], lw=2, label = 'profit change', color='g')
plt.legend(loc=2, fontsize=18)
plt.xlabel('count', fontsize=18)
plt.ylabel('change(%)', fontsize=18)
plt.tick_params(labelsize=18)
plt.savefig("BTCexchange_profitchange.png")
12月1日の最初のマイニング報酬とビットコイン価格を100%として
それぞれ変化率を計算して比較しました。
できあがったグラフがこちらです↓

かなり相関が強いと思います。
マイニング報酬は以下の式で表されます。
マイニングで獲得したコインの数 × コインの価格
マイニングで獲得したコインの数はグラボの性能や
属するプール、マイニングアルゴリズムで変わります。
これらが一定の時、
マイニング報酬に影響するのはコインの価格ですよね。
ビットコイン価格が下がればマイニング報酬も下落するのは
当然の結果だと思います。
pythonで手数料の合計金額を計算しよう
#出金手数料
withdrawfee_df = df[df['Purpose'] == 'Withdrawal fee']
withdraw_fee = withdrawfee_df['Amount (JPY)'].cumsum() #合計金額
#マイニング手数料
miningfee_df = df[df['Purpose'] == 'Hashpower mining fee']
mining_fee = miningfee_df['Amount (JPY)'].cumsum()
#合計の手数料
fee = int(withdraw_fee.iloc[-1] + mining_fee.iloc[-1])
print(fee)
NiceHashでかかる手数料は、
マイニング報酬にかかる2%の手数料と
出金時にかかる手数料です。
これらの合計金額を算出しました。
今回はマイニング報酬21,569円に対して、
手数料は491円でした。
ただ、マイニングの必要経費には
電気代や通信費なども含まれます。
こちらの記事にまとめているのでどうぞ↓
出金のときに手数料がかかるので
出金回数は減らしたほうが良さそうです。
あと、私は法人にして仮想通貨の
マイニングをしていますが、
個人の住宅で法人の事業もしているんですよね。
電気代やスマホ代の請求は個人宛ですが、
商工会議所の人に相談したら
法人の経費にするには名義を変える必要があるとか。
もしくは個人と法人の間で家賃をとる
契約を結ぶか。。
このあたりは税理士への相談が必要のようです。
法人会に相談する流れをつくったので
今後は専門家に相談しながら方針を決めていきたいと
思います。
話がまとまったらブログで紹介します。
このブログでは主に仮想通貨で
お金に働いてもらう方法を紹介しています。
月に1〜2回無料でメッセージを配信して
情報をお届けしているので、
ぜひ友だち追加をお願いします。
ラインの友だち追加はこちら↓

投資の情報って本で読むと難しいですよね。
そんな時はamazonのaudibleを活用するのが
おすすめです。
ナレーターが朗読してくれるので
家事の間に何度も聞いて勉強することができます。
最近は自己啓発や物語だけでなく、
投資本も朗読されているので
めっちゃ勉強になります。
1/11までに登録すれば30日間無料で試せますし、
本も1冊を無料で購入できます。
ぜひこのお得な期間に利用してください↓
ここまで読んでくださり、ありがとうございました。^^