【確定申告を効率化】Pythonプログラムで仮想通貨収益を自動計算

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • 暗号資産(仮想通貨)の確定申告が必要
  • 暗号資産の収益計算を効率的に行いたい
目次

仮想通貨取引の確定申告を効率化!プログラムで収益計算を自動化

仮想通貨の確定申告に際して、上記のような不満を感じたことはありませんか?

本記事では上記の悩みを解決します。具体的に、プログラミング言語Pythonを用いて仮想通貨取引の収益計算を自動化し、確定申告を手間なく行う方法について解説します。

【参考】会計ソフトを用いた仮想通貨取引の収益計算方法

本記事ではプログラミング言語Pythonを用いた収益計算方法を解説しています。プログラム言語は無料かつ一度構築してしまえば使い勝手が良いのが利点です。一方で、「プログラム言語ってなんか難しそう。」「プログラム環境構築が手間」と感じられる方もいらっしゃるでしょう。

そのような方向けに仮想通貨取引の集計計算に対応したおすすめ会計ソフトも併せて紹介します。使い勝手も良く、特に仮想通貨取引を頻繁に実施される方におすすめです。

おすすめ(1)
おすすめ(2)

暗号資産(仮想通貨)取引での収益計算方法|移動平均法と総平均法

暗号資産(仮想通貨)取引での収益計算は、以下2つの方法が代表的です。

  • 移動平均法
  • 総平均法

Pythonプログラムでの収益計算に際して、これら2つの方法の概要および違いを押さえましょう!

移動平均法

移動平均法とは、仮想通貨の購入度に平均単価を求め、売却時の≈益を算出する方法です。

取引例

以下のビットコイン取引が発生した場合を例とし、移動平均法での具体的な収益計算方法を見ていきましょう。

スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入

計算方法

はじめに、取引毎に下記計算式を用いて、平均単価を算出します。

 平均単価[円/BTC] = その時の合計取引価格[円] ÷ その時の保有総数 [BTC]
  • 【2/12時点】平均単価 = 100[万円] ÷ 2[BTC] = 50 [万円/BTC]
  • 【5/30時点】平均単価 = (100 + 160)[万円] ÷ (2 + 4)[BTC] = 43 [万円/BTC]
スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入
平均単価50[万円/BTC]43[万円/BTC]
2/12. 5/30時点の平均単価算出

続いて、【10/17】売却時に生じた収益を下記計算式で算出します。

 収益価格[円] = 売却価格[円] - (平均単価[円/BTC] × 売却数量[BTC] )
  • 【10/17時点】収益価格 = 180[万円] – ( 43[万円] × 4[BTC] )= 8 [万円]
スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入
平均単価
50[万円/BTC]43[万円/BTC]
収益+ 8[万円]
10/17時点の収益計算
  • 最後に、【12/10時点】の平均単価を算出します。
  • 【12/10時点】平均単価 ={100+160+(-180+8)+200}[万円] ÷(2+4-4+5)[BTC] = 41[万円/BTC]
スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入
平均単価
50[万円/BTC]43[万円/BTC]41[万円/BTC]
収益+ 8[万円]
12/10時点の平均単価算出

このように、移動平均法では仮想通貨購入毎に平均単価を計算し、売却毎に収益を計算します。

総平均法

総平均法とは、基準期間での仮想通貨合計購入金額と合計購入数量から平均単価を求め、収益を計算する方法です。総平均法で基準期間は年度(1年間)が一般的に指定されます。

取引例

総平均法では基準期間という概念が重要となります。例えば、ある年に次のようなビットコイン取引が発生した場合を例とし、収益計算を見ていきましょう。

スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入

計算方法

はじめに、ビットコイン購入時の平均単価を求めます。総平均法における平均単価は次のように計算できます。

 (購入時の)平均単価[円/BTC] = 期間全体の合計購入価格[円] ÷ 期間全体の保有総数 [BTC]
  • (購入時の)平均単価 = (100 + 160 + 200)[万円] ÷ (2 + 4 + 5)[BTC] = 33[万円/BTC]
スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入
平均単価33[万円/BTC]33[万円/BTC]33[万円/BTC]33[万円/BTC]

続いて、対象期間内でビットコインを売却した際に獲得した収益を次のように計算式します。

 収益価格[円] = 売却価格[円] ー(平均単価[円/BTC] × 売却数量[BTC] )
  • 【10/17時点】収益価格 = 180[万円] – ( 33[万円] × 4[BTC] )= 48 [万円]
スクロールできます
2/125/3010/1712/10
取引内容100万円で
2BTC購入
160万で
4BTC購入
180万で
4BTC売却
200万で
5BTC購入
平均単価33[万円/BTC]33[万円/BTC]33[万円/BTC]33[万円/BTC]
収益+48万円

移動平均法と総平均法の違い

移動平均法と総平均法の違いは、仮想通貨の平均単価の計算タイミングです。移動平均法の場合、仮想通貨の購入毎に平均単価を計算しました。一方総平均法は、ある基準期間でまとめて平均単価を計算しました。

移動平均法

メリットデメリット
・実際に得られた収益と近しい金額を算出可能
・年度の途中で収益見積りができる
・仮想通貨購入毎に平均単価の計算が必要
・計算が複雑

総平均法

メリットデメリット
・計算方法が理解しやすい
・急な値動きや購入時期により実際の収益が乖離
・年度が終わらないと収益計算できない

【Python実践】仮想通貨の収益計算

Pythonを用いて仮想通貨の収益計算を行う方法を以下の手順で解説していきます。また、収益計算は「総平均法」をベースに解説します。

  • 【データ準備】仮想通貨取引明細データの準備
  • 【データ準備】仮想通貨取引明細データの加工
  • 【Python準備】Python環境のインストール
  • 【Python準備】Pythonライブラリのインストール
  • 【総平均法】Pythonによる収益計算処理

【事前準備】仮想通貨取引明細データの準備

はじめに、仮想通貨取引を行った暗号資産取引所にログインし、以下のような取引明細データをダウンロードします。すべての暗号資産取引所ではCSVファイル形式の取引明細データがダウンロードできるようになっています。

【例】の取引明細CSVファイルイメージ
【例】の取引明細CSVファイルイメージ

【事前準備】仮想通貨取引明細データの加工

前述でダウンロードした明細ファイルは、暗号資産取引所毎にフォーマットが異なるため、以下のように項目を統一しておく必要があります。

日付取引通貨売買区分数量取引金額[円]
2022/01/01BTC0.4500,000
2022/02/01JPY1.51,500,000
2022/03/01BTC2.53,000,000
・・・・・・・・・・・・・・・
YYYY/MM/DD取引により獲得した通貨を記述買 or 売を記述仮想通貨の取引量仮想通貨売買時の取引金額[円]

ダウンロードした取引明細CSVファイルを上記のように加工したものをPython読込用に利用します。

※本記事では加工後のサンプルの仮想通貨取引明細ファイルも準備しています。まずは後述のPythonプログラムの動作確認を行いたい方はこちらをサンプルファイルを直接ご利用ください。

後述のPythonプログラムは上図に示すように、加工した仮想通貨取引明細ファイルの読込→収益計算→結果出力という順で処理実行していきます。

【Python準備】Python環境のインストール

お手元のPCでPythonが利用できる環境を整えます。Python環境の構築方法はこちらの記事をご覧下さい。

【Python準備】Pythonライブラリのインストール

Pythonプログラミングに際して、データ加工や計算処理全般に便利なライブラリである「Pandas」を利用します。コマンドプロンプト(Windows)またはターミナル(Mac)を開き、以下を実行し、Pandasをインストールしましょう。

pip install pandas

【総平均法】Pythonによる収益計算処理

Pythonプログラムを実行し、「総平均法」による仮想通貨の収益計算を行います。

仮想通貨取引明細ファイルの配置

Pythonプログラム実行前に、前述で加工した仮想通貨取引明細ファイル(CSVファイル)は、Pythonファイルと同じ階層に配置しておきましょう。

Pythonコード

Pythonファイルを作成して以下のコードを記載します。続いてfilename部分に前述の仮想通貨取引明細ファイルのファイル名となるよう修正します。その後、このプログラムを実行しましょう。

import pandas as pd

# 読込ファイル名
filename = "crypto_sample.csv"

# Pandasでデータ読込
df = pd.read_csv(filename)

# 購入したBTCから平均単価を算出
buy_mean_yen = df["取引金額[円]"][df["売買区分"]=="買"].sum() / len(df["取引金額[円]"][df["売買区分"]=="買"])

# 売却したBTCの収益計算[円]
sell_sum_yen = df["取引金額[円]"][df["売買区分"]=="売"].sum()   # 売却金額合計[円]
sell_sum_btc = df["数量"][df["売買区分"]=="売"].sum()          # 取引数量[BTC]
profit       = sell_sum_yen - (buy_mean_yen * sell_sum_btc)  # 収益

# 出力
print(f'通年収益:{profit} 円')

出力イメージ

上記のコードを実行すると、次のような出力結果が得られます。

# 出力イメージ
# 通年収益:63,395 円

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【BitTrade】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【bitFlyer】APIで仮想通貨取引を自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

機械学習やテクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
Python時系列予測モデルの構築機械学習・AI
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次