こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 暗号資産(仮想通貨)の確定申告が必要
- 暗号資産の収益計算を効率的に行いたい
仮想通貨取引の確定申告を効率化!プログラムで収益計算を自動化
仮想通貨の確定申告に際して、上記のような不満を感じたことはありませんか?
本記事では上記の悩みを解決します。具体的に、プログラミング言語Pythonを用いて仮想通貨取引の収益計算を自動化し、確定申告を手間なく行う方法について解説します。
【参考】会計ソフトを用いた仮想通貨取引の収益計算方法
本記事ではプログラミング言語Pythonを用いた収益計算方法を解説しています。プログラム言語は無料かつ一度構築してしまえば使い勝手が良いのが利点です。一方で、「プログラム言語ってなんか難しそう。」「プログラム環境構築が手間」と感じられる方もいらっしゃるでしょう。
そのような方向けに仮想通貨取引の集計計算に対応したおすすめ会計ソフトも併せて紹介します。使い勝手も良く、特に仮想通貨取引を頻繁に実施される方におすすめです。
暗号資産(仮想通貨)取引での収益計算方法|移動平均法と総平均法
暗号資産(仮想通貨)取引での収益計算は、以下2つの方法が代表的です。
- 移動平均法
- 総平均法
Pythonプログラムでの収益計算に際して、これら2つの方法の概要および違いを押さえましょう!
移動平均法
移動平均法とは、仮想通貨の購入度に平均単価を求め、売却時の≈益を算出する方法です。
取引例
以下のビットコイン取引が発生した場合を例とし、移動平均法での具体的な収益計算方法を見ていきましょう。
2/12 | 5/30 | 10/17 | 12/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/12 | 5/30 | 10/17 | 12/10 | |
---|---|---|---|---|
取引内容 | 100万円で 2BTC購入 | 160万で 4BTC購入 | 180万で 4BTC売却 | 200万で 5BTC購入 |
平均単価 | 50[万円/BTC] | 43[万円/BTC] | – | – |
続いて、【10/17】売却時に生じた収益を下記計算式で算出します。
収益価格[円] = 売却価格[円] - (平均単価[円/BTC] × 売却数量[BTC] )
- 【10/17時点】収益価格 = 180[万円] – ( 43[万円] × 4[BTC] )= 8 [万円]
2/12 | 5/30 | 10/17 | 12/10 | |
---|---|---|---|---|
取引内容 | 100万円で 2BTC購入 | 160万で 4BTC購入 | 180万で 4BTC売却 | 200万で 5BTC購入 |
平均単価 | 50[万円/BTC] | 43[万円/BTC] | – | – |
収益 | – | – | + 8[万円] | – |
- 最後に、【12/10時点】の平均単価を算出します。
- 【12/10時点】平均単価 ={100+160+(-180+8)+200}[万円] ÷(2+4-4+5)[BTC] = 41[万円/BTC]
2/12 | 5/30 | 10/17 | 12/10 | |
---|---|---|---|---|
取引内容 | 100万円で 2BTC購入 | 160万で 4BTC購入 | 180万で 4BTC売却 | 200万で 5BTC購入 |
平均単価 | 50[万円/BTC] | 43[万円/BTC] | – | 41[万円/BTC] |
収益 | – | – | + 8[万円] | – |
このように、移動平均法では仮想通貨購入毎に平均単価を計算し、売却毎に収益を計算します。
総平均法
総平均法とは、基準期間での仮想通貨合計購入金額と合計購入数量から平均単価を求め、収益を計算する方法です。総平均法で基準期間は年度(1年間)が一般的に指定されます。
取引例
総平均法では基準期間という概念が重要となります。例えば、ある年に次のようなビットコイン取引が発生した場合を例とし、収益計算を見ていきましょう。
2/12 | 5/30 | 10/17 | 12/10 | |
---|---|---|---|---|
取引内容 | 100万円で 2BTC購入 | 160万で 4BTC購入 | 180万で 4BTC売却 | 200万で 5BTC購入 |
計算方法
はじめに、ビットコイン購入時の平均単価を求めます。総平均法における平均単価は次のように計算できます。
(購入時の)平均単価[円/BTC] = 期間全体の合計購入価格[円] ÷ 期間全体の保有総数 [BTC]
- (購入時の)平均単価 = (100 + 160 + 200)[万円] ÷ (2 + 4 + 5)[BTC] = 33[万円/BTC]
2/12 | 5/30 | 10/17 | 12/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/12 | 5/30 | 10/17 | 12/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ファイル形式の取引明細データがダウンロードできるようになっています。
【例】Coincheckの取引明細CSVファイルイメージ
【例】GMOコインの取引明細CSVファイルイメージ
【事前準備】仮想通貨取引明細データの加工
前述でダウンロードした明細ファイルは、暗号資産取引所毎にフォーマットが異なるため、以下のように項目を統一しておく必要があります。
日付 | 取引通貨 | 売買区分 | 数量 | 取引金額[円] |
---|---|---|---|---|
2022/01/01 | BTC | 買 | 0.4 | 500,000 |
2022/02/01 | JPY | 売 | 1.5 | 1,500,000 |
2022/03/01 | BTC | 買 | 2.5 | 3,000,000 |
・・・ | ・・・ | ・・・ | ・・・ | ・・・ |
YYYY/MM/DD | 取引により獲得した通貨を記述 | 買 or 売を記述 | 仮想通貨の取引量 | 仮想通貨売買時の取引金額[円] |
ダウンロードした取引明細CSVファイルを上記のように加工したものをPython読込用に利用します。
※本記事では加工後のサンプルの仮想通貨取引明細ファイルも準備しています。まずは後述のPythonプログラムの動作確認を行いたい方はこちらをサンプルファイルを直接ご利用ください。
後述のPythonプログラムは上図に示すように、加工した仮想通貨取引明細ファイルの読込→収益計算→結果出力という順で処理実行していきます。
【Python準備】Python環境のインストール
お手元のPCでPythonが利用できる環境を整えます。Python環境の構築方法はこちらの記事をご覧下さい。
【仮想通貨】Python開発環境の構築してビットコイン自動売買実践#2
ビットコイン自動売買に興味があり体験してみたい方向けに「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 | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら