やっていくログ

にんげんをやっていきましょう

cryptactの未分類取引と格闘する

はじめに

cryptactは、仮想通貨取引における煩雑な税金計算をアシストしてくれる無料ツール。各取引所が提供する取引履歴をアップロードしていけば、自動で各年の収支をはじき出してくれる。

ただ、実際には未分類取引、すなわちエラーが発生する場合があり、正確に計算するためには、そうした未分類取引をなるべく解消しなければならない。

以下に、使っていて気付いた留意点を書きとめておく。新たな発見があれば時々更新したい。

 

全体として押さえておくべきこと

・時刻の情報を正確に

計算にあたって、すべてのデータを時系列に並べている。積立やチップで得たコインの取得日時をも正確に記述する必要がある。順番がずれると、コインが足りないとされて未分類取引になってしまう。

また、高頻度系botを回している場合、同じ秒に別種の約定が発生する場合がある。このとき、近くの別の約定もまとめられてしまう場合がある。順番に通貨ペアを渡り歩くような発注で、未分類取引にされてしまう場合は、1秒程度各約定時刻を離して記述しなおすとうまく通ることがある。

 

・データを分割して保管

データのデバッグにあたって、年をまたいでいるデータファイルがある場合、1年ごと、あるいは数か月単位で区切って保管しておくと、どこから未分類取引が生じたのかがわかりやすくなる。アップロードしていくときは、古いものから順に追記していくとよい。

 

Zaif

・コイン積立

2018/11/24現在、cryptactはZaifのコイン積立に対応していないので、カスタムファイルを作って補完しなければならない。カスタムファイルのフォーマットはcryptactのサポートページから手に入る。またコイン積立の履歴はZaifのユーザーページから見ることができるが、csvなどでダウンロードできるわけではないので、手でデータを採取してくるしかない。コイン積立の履歴ページから、excel等にコピペして整形するとよい。

  

・簡単売買

BitFlyerの販売所などの場合、販売所の売買履歴もcsvとして手に入る。しかし、zaifの簡単売買は、簡単売買のページに飛んでそこで履歴を手動で取得してこないといけない。取得した履歴をカスタムファイルに追記すると反映される。

 

Twitterチップ

チャットチップの送受信履歴はcsvでダウンロードできるが、Twitterチップの履歴はそうではないらしい。ソーシャル設定→プロフィールと進んで履歴を取得しないといけない。しかも最新の履歴数件しか表示されていない。Twitter受取チップ総額は表示されているので、一応総額は把握できるが、正確な受取時刻がわからない場合が出てくる。

 

・残額調整履歴

ハッキングを受けたMONAやBCHの返却が11月末ごろから始まった。場合によってはハッキング時の保有コイン数の数割を日本円で返金している模様で、その履歴は残額調整履歴のところに載っている。この分は、コインを売った形とみなして、カスタムデータに記述しておかないと未分類にされてしまう。

 

・信用売買

現物のBTCの板をそのまま利用した信用取引を行うことができる。そこでは、JPY以外にもBTCやXEMといった仮想通貨を証拠金として利用することができる。ポジションを決裁したときには証拠金として預けていた仮想通貨が返金される。もし損失が出たら、まずはJPYから充当されるが、それで足りない場合は証拠金の仮想通貨から補填する。このあたりの処理で、現物の残高がマイナスになると言われる場合がある。これは、複数のポジションを保有しているときに、エントリーの順番と決済の順番が入れ替わると発生する可能性がある。空売りを現物売りと同様に処理しているため現物が実態以上に減っていることになる。仕方がないので、カスタムファイルで、エラーが出る注文群の先頭で現物を補充し、全ポジション決済後にその現物を同値で売ったことにして対処する。

 

csvデータの更新

zaifでは毎日夜にcsvデータが更新される。更新時の1日前の取引までが記載される模様。

↑ 5日に1回くらいしか更新されてないみたい…?

1日1回更新申請が行えるので、前日までの取引は手に入れられる模様(2019/2/16 追記)

 

BitFlyer

・Lightning 取引履歴

Lightningの履歴を普通にダウンロードしてくると、最近の65535件しか記載されていない。仕方がないのでデータ取得の日付範囲を指定して取得する。高頻度系botをやっている人は特に大変だと思う。

データシートにはParent Order, Child Order, Executionsの3種記載されているが、実際に計算の際見ているのはExecutionsの模様。もしノーポジのはずなのにBTC-FXの所有枚数が0になっていない場合は、Executionsの記載の過不足を確認するとよさそう。

取引履歴(4種)を一括でダウンロードできるようになったので、上記問題は解消。

 

bitbank

・取引履歴

デフォルトの取引履歴は直近48時間分から最大500件まで取得可能。それ以前の履歴は "2日(48時間)以前のデータはこちらから検索できます" というところから同様のページに飛べるが、ここでも500件ごとにしか取得できない。API叩いても500件しか取得できない。高頻度系botをやっている人はめちゃくちゃ大変だと思う。

サポートに問い合わせてみたら、1週間くらいで送ってくれるとのことである。

→1週間後くらいに、全取引履歴csvへのリンクを送ってくれた。個別対応するほうがむこうとしてはコストがかからないんでしょうか…

2019年verの取引履歴を出力してもらうときは 30 分程度で送付してくれた。

 

Liquid

・ゼロ数量売買はSelf-matchをチェック

現物取引でゼロ数量売買の未分類エラーが出る場合がある。その場合は、データをチェックし、売買形態がSelf-matchになっている取引を見つける。Self-matchのうち、手数料が発生せず、かつJPYが絡んでいない取引の場合、エラーを返す模様。そうした取引を削除する。

 

・有効桁数の問題

Liquid は他の取引所に比べ各コインの表示桁数が多いので、端数が積もってズレが生じていそう…。

 

海外未対応取引所

・時刻のタイムゾーンに注意

デフォルトで対応している取引所であれば、タイムゾーンの処理は自動で行ってくれる。しかし、まだ対応していない取引所での取引を記録する際には、カスタムファイルを用いる必要がある。ここで、海外取引所では、UTCで時刻を表記している可能性があるので、おそらく日本標準時に合わせたほうがうまくいく。

 

カスタムファイル

・数式を利用した excel シートはたぶんアップできない

excel シートを csv に変換しましょう

 

csvexcel でいじるとエラー吐かれるもの 

 bitbank, Liquid

(excelcsv 出力のデフォルト文字コードは Shift-JIS だが、これらの取引所から出力される csv文字コードUTF-8 であるため。また、UTF-8csv 出力したとしても、最後尾の列に意図せぬ空列が入り込み、エラーが起きる場合がある。このときは VS Code をはじめとするテキストエディタで編集するとよい)