【更新 2017-09-06】確定申告対策で暗号通貨の取引履歴を作ったついでに、レートを自動取得して損益も表示させてみた(Googleスプレッドシート)

 

こちらのGoogleスプレッドシートをご覧ください。

やったこと

  • ちゃんと記録つけておかないとやばいらしい。

  • というわけで、手数料も含めて完全な記録を作りました。

  • せっかくなので損益計算もしました(苦戦して午前が潰れた)。

  • 書いてたらいつの間にかALISのICOが始まってた…危ない。

作り方

  • 基本的に手入力です。

  • acquisition cost (購入額) (列G) はかけ算で求めると、取引所の表示とズレることがあるので、ズレたら手入力しました。

  • 円建てではなくBTCやETH建てで買った場合は、acquisition cost (購入額) は、その時のレートを確認して適当に手入力しました。

  • コインを売ったときは、acquisition cost (購入額) は売却額ではなく、購入額×売却率です。

    • なぜそんなことをするかというと、売却額をそのまま書くと、LISKのように売却額が購入額を超えた場合、損益を計算するときに購入額がマイナスになって、利益が上がっているのに利益率がマイナスになってしまうからです。

    • たぶん移動平均法というやつになってると思います。

自動計算のやりかた(一番大事なところ)

  • webサイトから勝手に表を読み込んでくれる関数があるんですね!

  • 別のシート(ここではrateという名前のシート)に =IMPORTHTML("https://coinmarketcap.com/","table") と入力すると、勝手に表ができます(ここではA1セルに入力)。

    • このURLだと、時価総額上位100位までしか取得できないんですが、欲張って全てのコインを取得しようとして、 =IMPORTHTML("https://coinmarketcap.com/all/views/all/","table") とすると、「データが多すぎる」とエラーになります。残念。
  • =IMPORTHTML("https://coinmarketcap.com/#JPY","table") と入力してもなぜかUSDで表示されます。

  • そこで、=importhtml("https://stocks.finance.yahoo.co.jp/stocks/history/?code=USDJPY=X", "table") で為替レートを取得しました(ここではK1セルに入力)。

自動計算のやりかた(苦戦したところ)

  • ここからいろいろやる必要があります。

  • Price(ここではD列)にドル記号が含まれていて、文字列になっているので、そのままでは計算できません。

    • =value(replace(D2,1,1,)) のように、replace関数でドル記号を取り除いて、value関数で数値に変換します。

    • replace(D2,1,1,) は、D2セルの1文字目から1文字分を何もないに変換する。ということです。

    • そして、=value(replace(D2,1,1,)) * $O$2 のように為替レートをかけると、日本円のレートが得られます(ここではI列)。

    • 為替レートは指定セルが移動しないように、$O$2のように入力してください。

  • メインのシート(ここではhistoryシート)に戻って、レートをrateシートから取得します。

  • XRPのレートを取得してみましょう(ここではM列)。

    • =sumif(rate!E:E, "*"&L4&"*", rate!I:I)

    • rateシートのE列の中から、historyシートのL4セル(XRPという文字列)を含む行を探して、rateシートのI列(日本円のレート)を合計する。という意味です。

    • 合計しているので、もし"XRP"という文字列を含む別の単位があると、足し算されてしまうのですが…表計算に詳しくないので、もっと良い関数を知っていたら教えてください。

    • 【追記 2017-09-06】vlookup関数が答えでした。rippleのレートが入るM4セルには、次のように書きます。=vlookup(J4, rate!$B:$I, 8, false)

    • 【追記 2017-09-06】これはJ4セルと完全に一致するもの("ripple")を、rateシートのBからI列の中から探して、見つけた行の8列目のセルの内容(日本円に換算したレート。I列ですね。)を表示する。並び替えはされてないよ(false)。という意味です。最後のfalseを省略したりtrueにしたりするとうまくいきません。なぜなんでしょう?

  • あとは利益と利益率に、「表示形式」→「条件付き書式」を設定して、0より大きければ緑、0より小さければ赤になるようにします。

  • 時価総額上位100位までの表示なので、マイナーなコインやまだ上場していないコインは取得できません。紫色になっているのは手動で入力したレートです。

  • holding (所持コイン) (K列) は、sumifを使って計算してます。rippleなら、=sumif(D:D,L4, C:C)

    • D列(単位)に、L4(XRPという文字列)が含まれている行の、C列(コイン数)を合計するという意味です。

課税対象

notes(I列)に"taxable"と書いてある赤いセルが、法定通貨に利確した(課税対象)ことを示しています。法定通貨に替えなければ課税対象にならないらしい(将来的には暗号通貨自体が課税対象になるかもしれない、税務署によって既にそう言われるところもあるらしい)けど、暗号通貨でもっておくの怖いですね。USDTとかどうなんでしょう?

【追記 2017-09-06】

今日(2017-09-06)話題になっていましたが、法定通貨に替えなくても、仮想通貨同士の取引で利益が出たら課税対象になる可能性があるようです。とりあえず法定通貨にした場合、雑所得になることは確定のようです。話題になっていた国税庁のページはこちら。

個人的には、最高に詳細な明細を作っておいて、最大限税金を払ってしまえばいいと思いますが。

自動記録

【追記 2017-09-06】

履歴も自動で作りたいですよね。CoinTrackingというサービスが、海外のかなりの取引所のCSV読み込みに対応しているようです。ただ、問題はあって、

  • 取引所やウォレット間の送金手数料はたぶん記録しない

  • LiquiみたいにCSV出力してくれないところもある

  • 取引件数が増えると有料

という感じで、今の所手動でやっています。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA