集計のすすめmr-zeirishiここからは、データ合算編です。各取引所ごと損益を計算するのか。それともすべての取引所をまとめて損益を計算するのか。どちらでも良いと思います。どちらでも可能なようにデータの整理をして、項目が合うようにしたのが前回までです。私は、取引所ごと損益の計算をしています。今回は、取引所ごとの集計という流れでいきますが、やり方は変わりません。取引データ、送金データ、受信データなど、整理したデータを1つにまとめます。貼り付けが完了したら、日時で並び替えをして時系列を整えます。これだと、色々な仮想通貨が混同していて集計しづらいです。仮想通貨ごとに分けてあげる必要があります。アルトコインの種類が多いと、人力で分けるのも大変です。自分だけなら多分、頑張って地道に分ける方法を選択したでしょう。複数回やるとか考えちゃったら、効率的ではないです。そんなときには、マクロの出番です。マクロの説明をするほど、出来ませんw独学で何となく記述しているだけなので・・・。一応、どうやって、仮想通貨ごとに分けているかというと、AdvancedFilterを使ってます。lngJlRw)】は、【AdvancedFilter】で抽出するデータの範囲を指定しています。【Action:=】は、抽出する条件に該当した場合に実行される内容です。【xlFilterCopy】は、抽出するデータを新しい場所にコピーします。【criteriarange:=】は、抽出する条件を指定します。【shMarket.Range(“J1:K3”)】は、抽出する条件です。仮想通貨の種類が入っている列は、shJITシートの「mkt1」と「mkt2」です。「J2」に抽出したい仮想通貨の名称「K3」にも同じ仮想通貨の名称を入れると、その条件をもとに抽出してくれます。「K2」に仮想通貨の名称を入力してしまうと、抽出条件が変わってしまいます。「K2」に入力すると「mkt1列」と「mkt2列」に指定した仮想通貨の名称がある場合に抽出する。AND条件になります。「K3」に入力すると「mkt1列」又は[mkt2列」のいずれかに指定した仮想通貨の名称がある場合に抽出する。【CopyToRange:=】は、どこにコピーするのか、コピーする範囲を指定します。lngJlRw)】は、新しいシートのA列からO列にデータを貼り付けます。【Unique:=False】は、重複する行も含めて抽出します。「mkt1」と「mkt2」に同じ仮想通貨の名称が入ることがないようにデータ整理をしているので、「False」にしてますが、「True」にすると重複する行が無視されるようになります。Loopなどを使って、繰り返し処理を実行して、仮想通貨の種類ごとにデータを分けるようにします。集計のすすめmr-zeirishi今回は、Poloniexから他の取引所やウォレットへ送信したデータ整理&受取です。約定履歴と同じ体裁にするために整理をしていきます。ここが一番、面倒な部分になってくると思います。「事由」ですが、とりあえず、ここは任意で良いかと思います。CCに資金移動したとかICOに送金したなどわかる範囲で入力していきます。項目としては非常に重要なのですが、この時点で「単価」入力することができるのは稀なので入力しなくても構わない部分です。「事由」がハッキリわかっていると集計作業は非常に楽になります。あとは、基本的に組み替えをするだけです。手数料に注意するくらいです。mkt2に関しては、送信の場合には、「事由」を入れておきます。ほかのmkt2の情報はなしでおkです。これは、Poloniexで送信された仮想通貨が、他の取引所では、受取ることになった場合に重複しないように後々、利用するための仕様です。それに加えて、日本円換算額はmkt1単価に数値が入らないので0ですが、気にしないでください(現時点で単価を計算することは困難です。約定履歴データなどと合わせたときに計算できるようになります)。基本的にここも後から入力する項目になります。受け取る場合も送信と同様の内容になるので省略します。参考にExcel置いておきます(フルVerじゃない)。集計のすすめmr-zeirishi間隔空いてしまいましたが、第15回をやっていきたいと思います。整理編に関しては、どの取引所もやることは似たような形になるので、Coincheckと今回のPoloniexで終了です。仮想通貨の集計のすすめ~POLONIEX取引データ編~で取引データをダウンロードしました。結果、何も修正を加えていない場合、このような状態になっていると思います。これだと、集計しづらいので、データの組み換えや情報を追加して、整理していきます。整理編は、基本、Excelの勉強の時間です。取引所:約定履歴から。tradeHistory.csvというような名称でダウンロードされています。これを開くと、A~K列に値が入っています。日付は、Coincheckと違ってExcelで日付と認識してもらえるので、そのまま利用することができます。Poloniexは海外の取引所なので、取引をレート換算する必要がでてきます。JPYレートを参照するときに時間も入っていると参照しづらいので、INT関数を使って、時間を取り除きます。あとは、Marketを分けて、それぞれの情報を入れていきます。Marketの/より左側と右側に分ける方法ですが、Left関数を使います。Left関数は、指定したセルの値を左から〇〇文字、取り出すことができる関数です。Left(B2,3)でB2のセルの値3文字を取り出すと、ETHです。常に3文字とは限らないので、FIND関数を併用します。FIND関数は、指定したセルの値の中に検索したい文字列が〇文字目にあるかを調べる関数です。FIND(“/”,B2,1)とした場合、B2で検索した「/」が一番初めに登場するのは、4文字目になります。(一番後ろの1は、検索を開始する位置を指定することができます。今回は左から1文字目から検索するので1となります。)併用するとこんな感じです。LEFT(B2,FIND(“/”,B2,1)-1)FIND関数では、左から数えて空白を含めた文字数4という値が返されます。「/」よりも前の文字をLEFT関数で抽出したいので、4-1=3という値になるようにFIND関数の後ろに-1を付けてあげます。RIGHT関数は、指定したセルの値を右から〇〇文字、取り出すことができる関数です。LEN関数は、指定したセルに含まれる文字列の文字数をカウントします。SUBSTITUTE関数は、指定したセルに含まれる文字列を置換する関数です。Poloniexの取引データの特徴は、手数料がBuyの方からマイナスされることです。D列のTypeに入っているBuy又はSellは、Marketの左側の仮想通貨に関して、購入したのか、売却したのかを表しています。左側の仮想通貨がBuyの時は右側の仮想通貨はSellになります。手数料がどちらの仮想通貨からマイナスされるのか間違えない様に注意してください。計算が大きく変わってきてしまいます。仮想通貨同士の売買の時には、常にどちらかの仮想通貨で所得の計算が行われることになります。Market1で集計、market2で集計とそれぞれ分けて集計可能な状態にしていると後々、楽だと思います。どんな方法でも良いですが、単式で集計しようとするとかなり苦労することになると思います。単式というのは、組み替えをしていない一番初めの状態をここでは指します。参考にExcel置いておきます(フルVerじゃない)。暗号通貨Q&Amr-zeirishi先日、とあるところからの依頼で、仮想通貨の税金レポートをまとめました。そんなことなかったっっ!!まだまだあるよなぁ~、当然だよな~そして、今日、メッセが届きました。「仮想通貨の集計のすすめ」シリーズを始めたのは良いのですが、それほど需要もなさげだった感じもあり、力尽きて更新しなくなってました。いつの間にか1ヶ月も間隔が空いてます。したら、更新まだですかーーーっ、待ってますって、うれしいよねwって事で、拙い説明でも役に立つならやらないとね。確定申告期に入る前に力尽きている場合でない。続き投稿します、たぶん^^それプラス、仮想通貨の税金の質問をゆるく募集しようと思います。質問は参考にさせてもらうだけです。ブログ等で回答をするかも知れませんが、基本的には質問を受け取るだけです。回答が欲しい方は、お問い合わせからお願いします(料金いただきますがw)。良い質問には、お礼にMARUZEMIトークンをプレゼントします(お礼のトークンが欲しい方はCPアドレスを教えてください)。今年の4月から仮想通貨に関する資金決済法がスタートして、トークンとかの扱いがどうなるか様子見していたのですが、個人でなんかやってても大丈夫そうだったので、久しぶりにトークンを配ります。意味はないですが、自分が発行したトークンを持っていてもらうって、なんかちょっとうれしいので。「良い」かどうかの判断は、独断と偏見です。質問少ないと思うので、ブログ等に回答が載るチャンスかもね(笑)質問フォーム↓↓↓https://docs.google.com/forms/d/e/1FAIpQLSdpgWmwnEV2WRIHUHgLLcXwo8PJS3VKUg8NKBLknUaP4C4gyw/viewform?usp=sf_linkビットコインについて国税庁のタックスアンサーがでちゃったよ。BTC(暗号通貨)mr-zeirishi国税庁:タックスアンサーNo1524ビットコインを使用することにより利益が生じた場合の課税関係http://www.nta.go.jp/taxanswer/shotoku/1524.htmでちゃいましたね。これは、現行税制に対しての回答であり、所得税法36条に基づいて課税されるのは、想定していた通りだと思います。・ビットコイン決済、やっぱ課税だよね・仮想通貨同士のトレード、やっぱ課税だよね・所得の区分、やっぱ雑所得だよねということを、改めて確認。税務署によって見解が分かれて、課税の公平性を欠かない様にするために出されたと考えられます。仮想通貨の税制が自体が、これで決まったという話でありません。少なくとも2017年以前の扱いは、現行税制に従うことを決定付けたものにはなるかなと思います。-※一般的な税制改正の流れについて。現在は、各府省庁からの要望を集めている段階です。当面の検討課題や中・長期的な税制調査会などの話し合いが行われ、12月中旬頃までに基本方針を決め、税制改正大綱が与党から政府案として国会に提出されます。その後、翌年1月~3月にかけて審議され、4月から施行されることになります。個人にとって、4月は年度の途中であるため、一般的には、翌年1月から新しい法律に則って所得税を計算することになります(施行された年の1月から適用されることもありますが・・・)。一般的なスケジュールから考えると本年及び翌年は、今回、回答があったタックスアンサー(現行税制)に従って確定申告をする必要があります。(こういう流れなので、9月に国税から取扱いあるって、まぢでー!?って思ってたんです。タックスアンサーについて、まずは、この部分。「ビットコインは、物品の購入等に使用できるものですが、このビットコインを使用することで生じた利益は、所得税の課税対象となります。」お店での物品の購入や寿司、焼き肉などの飲食での支払いなどビットコインを使った場合には、使用した時の価額(物品等の円での価額)と購入した時の価額との差額が利益となります。https://bitpress.jp/column/maruyama/entry-5889.htmlワンチャン期待していた少額決済により生じた利益は課税されないは、もろくも崩れ去りました。普段からビットコインを使っているガチビットコイナーは大変です。A氏は、1BTCを10万円で購入。その後、BTC決済が出来るお店で50万円のモノを1BTC(50万円に値上りした)で購入。この場合、50万円-10万円=40万円がビットコインを使用することで生じた利益となります。逆に10万円で購入した1BTCで、8万円のモノを購入した場合、ビットコインを使用することで生じた損失が2万円ということになります。同じ年に、この2件しか取引がなかった場合には、40万円-2万円=38万円が所得税の課税対象になります。次に注目すべきは、括弧書きの「邦貨又は外貨との相対的な関係により認識される損益」です。このタックスアンサー自体は、ビットコインを使用することにより生じる利益についての内容ですが、この括弧書きの解釈に関しては、「使用」だけではなく「譲渡(売買)」に関しても同様ではないかと考えられます。「使用」と「譲渡」で損益の認識がずれてしまうことは、おかしなことです。売買損益の認識時点については、売買が成立した時点(譲渡した時点)で課税することは、共通認識としてあったと思います。1BTCを10万円で購入して、その後、1BTCを20万円で売却すれば、20万円-10万円=10万円の儲けになり、所得税が課税される。これに関しては、特に異論はなかったと思います。仮想通貨同士の売買になると、途端に売買損益の算出はムズカシイから課税されないという、現行税制においては、根拠もなく(私は、仮想通貨同士の売買が課税されない根拠条文は見つけられていない)、一部の税務署からの回答が一人歩きしているような状況です。今回、その件に関して、間接的に回答をしていると考えられる部分が、「邦貨又は外貨との相対的な関係により認識される損益」になります。A氏は、1BTCを10万円で購入。その後、1BTCで10ETHを購入。その時点で、取引所では、1BTCについて、円(邦貨)で50万円の値がついて売買されている。この場合、ETH購入時、2の時点で、50万円-10万円=40万円が所得として認識されることになります。(ETHの購入価額は、10ETH=50万円となります。)じゃぁ、ETH建は、どうか。ETHに関しても円(邦貨)やドル(外貨)などでトレードされているので、相対的な関係により売買の都度、損益が認識されることになります。現行税制に則った考え方ですね。「ビットコインを使用することにより生ずる利益」について、このような表現が使われており、仮想通貨同士のトレードについて課税するならば、このような表現にはならないのかなぁという、僅かな可能性を残しておきます(個人的には、課税です)。各種所得の基因となる行為に付随して生じる場合を除き、原則として、雑所得に区分されます。」ここは、個人事業主で飲食店等を営んでいる場合に、飲食店等の関係で決済した時には、事業所得で扱ってくださいということで、そのほかは、雑所得の取扱いになります。サラリーマン、パート、アルバイト、学生などは、原則、雑所得です。所得税の計算は、収入の性格によって、「給与所得」や「事業所得」など、10種類の所得に分類されます。分類ごとに計算の方法などが異なることになります。譲渡所得(総合)=収入金額-取得費等-特別控除(50万円)雑所得=収入金額-必要経費と言うように、譲渡所得(譲渡所得の中にも、細かい区分が色々ある)であれば、特別控除が存在します。雑所得には、特別控除は存在しません。その代わり、譲渡所得の取得費等よりも範囲が広い必要経費となっています。雑所得だと、事業所得(青色)のように損失を翌年に繰り越すことが出来ません。株やFXも損失を翌年に繰り越すことが可能です。それは、法律で定められているため、繰り越すことが可能になっています。雑所得(原則)には、損失の繰り越しがありません。事業所得などであれば、事業所得を計算すると損失(マイナス)だった場合には、他の所得(給与所得など)の利益と損失を相殺することが出来ますが、雑所得は、他の所得との相殺は出来ません。同じ雑所得内、例えば、一口馬主(雑所得)で損失がでていて、仮想通貨のトレードで利益がでた場合、一口馬主で生じた損失と相殺することが出来ます。以前に雑所得について書いたような書かなかったような・・・。国税庁HPをご参考に。https://www.nta.go.jp/taxanswer/shotoku/1500.htm今回のタックスアンサーは、現行税制に則ってやるしかないね、というのを中途半端ではあるけれども、示した形になるかと思います。集計のすすめmr-zeirishi今回は、Coincheckから他の取引所やウォレット、決済などで送信したデータ整理です。約定履歴や販売所の売買などと同じ体裁にするために整理をしていきます。日付と日時の抽出の仕方は、第11回を参考にしてください。ここが一番、面倒な部分になってくると思います。「種別」ですが、Coincheckで送信履歴をダウンロードするとすべての仮想通貨の送金データを取得することができますが、初期情報として、BTCの送金なのか、ETHの送金なのかがAddressからしか読み取ることができません。Addressから判別又はCoincheckサイトの送金履歴側では何を送金したか確認できるので、それを見ながら入力することになります。続いて、「事由」ですが、ここは任意で良いかと思います。Zaifに資金移動したとか飲食代で支払ったとかわかる範囲で入力していきます。ここも項目としては非常に重要なのですが、この時点で「単価」入力することができるのは稀なので入力しなくても構わない部分です。「事由」がハッキリわかっていると集計作業は非常に楽になります。あとは、基本的に組み替えをするだけです。手数料に注意するくらいです。mkt2に関しては、送信の場合には、「事由」を入れておきます。ほかのmkt2の情報はなしでおkです。これは、Coincheckで送信された仮想通貨が、他の取引所では、受取ることになった場合に重複しないように後々、利用するための仕様です。それに加えて、日本円換算額はmkt1単価に数値が入らないので0ですが、気にしないでください(現時点で単価を計算することは困難です。約定履歴データなどと合わせたときに計算できるようになります)。基本的にここも後から入力する項目になります。受け取る場合も送信と同様の内容になるので省略します。マイニングなどの事由がある場合には、少々複雑になってきます。今回の目的としては、整理と集計なので所得(儲け)の計算側は一旦、棚上げです。参考にExcel置いておきます(フルVerじゃない)。集計のすすめmr-zeirishi今回は、Coincheck販売所でコインを買った場合のデータ整理です。販売所で購入した場合の取引データを前回の第11回と同じ体裁にするために整理をしていきます。日付と日時の抽出の仕方は、第11回を参考にしてください。http://wp.me/p88T8G-t7ここも大部分は、第11回を参考にしてください。今回のデータ整理で注目するところは、赤枠の単価部分です。mkt1とmkt2共に今回のケースでは日本円換算後の単価になっています。日本円の換算額にしているかというと、確定申告はすべて円建てです。BTC建てで確定申告することは出来ないので、日本円換算をしている流れになります。私としては、仮想通貨同士の売買が課税対象にはならないという見解には疑問がありますので、今回の様に仮想通貨同士の売買であっても所得(儲け)を計算できるように対応しているということです。いって、購入した時点でのBTC価格がいくらなのかは不明です。そこをどうするかというのも選択の余地があると思います。その日の終値なのか、始値なのか・・・、気分によって選ぶのではなく、その日の終値と決めたらずっと継続して、その方法によって換算していくことにします。気分によって選んでいる場合については、税務署側から価格を操作しているというあらぬ疑いをかけられる恐れがあるので、ルールを決めて運用することになります。今回のケースでは、購入した日の平均レートによって換算していく方法を継続します。いうことにして、換算しています。この辺は、取扱いが明確ではないので、日本円換算する必要がないかも知れません。デモね、日本円で購入、BTCでも購入した後に、その仮想通貨の一部を日本円で売却した場合の取得価額の計算どうするんですか?という所を考える必要がでてきます。やってBTC単価をもってくるか、ここからはExcelの勉強です。mkt2単価に購入した日のBTC平均単価の値が入るようにしたい。VLOOKUP関数を利用します。VLOOKUP関数は、指定した範囲から、検索する値と同じ行にある値を返します。今回のケースでは、BTCのレート表から、「日付」をキーにして、BTC単価をもってくるようにします。VLOOKUP(B2,BTC!$A:$B,2,0)B2=「日付」BTC!A:B=BTCシートのA列~B列の範囲で同じ「日付」の行があるか調べます。一致する「日付」があった場合に、その行のうち、B(2)列の値を返します。Coincheck販売所では、「BTC」の場合と「JPY」の場合があるので、VLOOKUP関数だけだと、「JPY」で購入した時もBTCの平均単価の値が入ってしまいます。IF関数を併用します。mkt2の値が「BTC」の場合には、VLOOKUP関数を使用して、それ以外の場合には、JPY単価「1」の値が入るようにします。IF(I2=”BTC”,VLOOKUP($B2,BTC!$A:$B,2,0),1)I2=”BTC”=mkt2がBTCだったときには、VLOOKUP関数を使用する。ない場合は、1という値が入るように分岐するのがIF関数です。これによって、O列に日本円換算額(購入総額)が計算されるので、mkt1単価も日本円換算額÷mkt1数量で日本円の単価を算出することができます。Coincheck販売所で売却する場合も同様なので、そっちの説明は省略します。ところで、各取引所の終値や始値、平均単価を楽に出力できる方法はないでしょうか。おねがい参考にExcel置いておきます(フルVerじゃない)。集計のすすめmr-zeirishiCoincheck取引データ編1と2でダウンロードしました。結果、何も修正を加えていない場合、このような状態になっていると思います。これだと、集計しづらいので、データの組み換えや情報を追加して、整理していきます。Excelの勉強の時間ですね。取引所:約定履歴から。my-complete-orders-2017-08-07.csvというような名称でダウンロードされています。これを開くと、A~G列に値が入っています。完全に好みですが、Dateの値を日付と日時(日付+時間)に変換します。日付と日時に分けるかというと、日付については、仮想通貨同士の売買に関しても課税となった場合に、日付で、その日のレートを参照するときに使用します。現行税制では課税される可能性が高いので、あとで集計できるように日付のみのデータを抽出しています。続いて、日時ですが、これは、並び替えをする時に利用します。他の取引データ、例えば、販売所でBTCを購入した場合の日付については、日時にプラスして「UTC」という値になっています。対して取引所の約定履歴には、日時にプラスして「+0900」という文字列が入っているため、気分的に嫌というだけです(並び替えをする時に多分影響がないと思うので、気分ですね)。やって日付を抽出するか。ここからはExcelの勉強です。Left関数を使います。Left関数は、指定したセルの値を左から〇〇文字、取り出すことができる関数です。Left(A2,10)でA2のセルの値10文字を取り出すと、2017-06-07(10文字)です。09:05:23(空白も入れて19文字)という形になります。日付が2017-6-7というように月や日の前に0が入っていないようなパターンの場合には、FIND関数を併用すると便利です。FIND関数は、指定したセルの値の中に検索したい文字列が〇文字目にあるかを調べる関数です。“,A2,1)とした場合、A2で検索した「空白」が一番初めに登場するのは、11文字目になります。(一番後ろの1は、検索を開始する位置を指定することができます。今回は左から1文字目から検索するので1となります。)FIND関数で取得した文字数をLEFT関数と併用する事により、月や日の前に0が表示されていないパターンにも対応することができます。併用するとこんな感じです。“,A2,1)-1)FIND関数では、左から数えて空白を含めた文字数11という値が返されます。空白よりも前の文字をLEFT関数で抽出したいので、11-1=10という値になるようにFIND関数の後ろに-1を付けてあげます。次に、販売所などと合わせられる様に、組み替えを行います。私は、複式簿記大好きなので、大きく分けて、market1とmarket2という形を設けています。market1がBTCの売却であれば、market2は、日本円の購入というようになります。このような形なのかというと、仮想通貨同士の売買だった時には、仮想通貨それぞれの数量を把握しなければ、残高数量が一致しません。日本円の残高も合わせることが可能です。market1で集計、market2で集計とそれぞれ分けて集計可能な状態にしていると後々、楽だと思います。どんな方法でも良いですが、単式で集計しようとするとかなり苦労することになると思います。単式というのは、組み替えをしていない一番初めの状態をここでは指します。日付は、-から/に更に変換しています。-の状態だと、見た目は日付なのですが、日付と認識してくれないので、DATEVALUE関数を使って、日付の値になるようにします。日時も同様です(+TIMEVALUE関数を使用)。問題は赤枠で囲ってある部分です。この部分に関しては、次回、説明します。日本円の時は単価1円表示しています。他の販売所の取引データや仮想通貨の送受信履歴もA列からO列に組み替えをしてしまえば、集計が容易になります。参考にExcel置いておきます(フルVerじゃない)。集計のすすめmr-zeirishiこちらの動画をご覧ください。夏休みの成果物ですwhttp://mr-zeirishi.com/wp-content/uploads/2017/08/democup.mp4実際には、こんなにうまく集計できないですけど、データを整理することによって、その後の工程がスムーズに行うことが可能になります。ポイントになるのは、受取や送金の部分の情報を補足することが大事です。ダウンロードしたデータを貼り付け。送受信に関して補足事項追加。Excelの数式で体裁整理。取引データ、受取データ、送信データを合算。Excelのマクロ使って、こーゆーの作るのも面白いです。集計のすすめmr-zeirishi2つ目は、Myceliumというスマホのアプリ(Androidです、iOSは知りませんw)を使います。https://wallet.mycelium.com/contact.html私は、前回のBlockchain.infoではなく、こちらを使ってます。MyceliumのICO資金がスペインでのバケーションに使われたらしいですね。historyを選択3ダウンロード先を選ぶ4ダウンロードしたCSVファイルをExcelで開くなぜ、このアプリを利用しているかというと、取引ごとにラベルを付けることができるので、何で受け取ったのか。送金、受信した段階で履歴を残しておくことができるからです。私はハードウェアウォレットはTrezorを利用していますが、Myceliumと連携して使えるので便利。任意のビットコインアドレスも追加することができるので、記録を付けておきたいアドレスに利用する。こんな目的で利用している人がいるのだろうか?wでも、仕事で使うのであれば、記録が付けられるというのは重要だと思います。・任意のアドレスを読み込み、取引ラベルの付け方1Myceliumアプリを起動し、アカウントタブを選択2右上のキーマークを選択3一番下の詳細ボタンを選択4スキャン、クリップボード、その他ハードウェアウォレットを選択(今回は、スキャンでQRコード読み込みの流れ)5アカウントラベルに名称をつけて、OK秘密鍵を所持してないアドレスでも取引タブから取引ラベルを付けることができるので、記録を付けてみてはどうでしょうか。BTC賽銭箱、置いておきます。