« 砂糖不使用チョコレートの紹介 | トップページ | [SEO] ブログのアーカイブやカテゴリページにnoindexを付与する (JavaScriptでの方法) »

2021年7月 6日 (火)

海外証券会社の税制と確定申告

個人が海外証券会社を利用して上場株式やデリバティブ(先物・オプション・FX・CFD)取引を行った際の税制と確定申告の方法について、ここにまとめます。ここで言う海外証券会社とは、国内で金融庁に登録して営業している業者(金融商品取引業者)以外の業者を指します。Interactive Brokers証券(IB証券)の米国口座、Firstrade証券、海外FX業者などを指し、外資系の国内業者(IB証券の国内口座・サクソバンク証券・IG証券など)は除きます。
まず注意点として、私は税制の素人であるため誤りがあるかもしれず、参考程度にして頂ければと思います。間違いがあればご指摘頂ければと思います。

目次

はじめに

基本的に海外の証券会社は、国内の証券会社よりも税制上不利になります。主な不利点として、損失の次年度への繰り越しが出来ない事などがあります。また、確定申告では株式の取引明細書を作る必要があります。

更にルール上は、証券会社に預け入れた外貨にかかる為替差益を申告する必要もあります。ただし一般的にはこれを自分で計算するのは困難です。殆どの人はこれが出来ているとは思えませんし、少額ならば税務署からの追及も無いだろうと思うところではあります(逆に言えば大金を動かしているのであれば税理士に頼むなどしてしっかりと申告したほうが良いです)。これに関しては国内証券会社を使用した外貨での取引についても同様に自分で計算する必要があるので、海外証券会社特有の問題という訳ではありません。
ただ、証券会社が口座内の全ての現金の動きを記載したレポートを発行しているなら、それを基に申告することが出来るかと思います。この場合の申告方法について、後に記述します。

また、海外証券会社での所得は原則申告が必要ですが、免除規定もあり、「給与等の収入金額が2,000万円以下である給与所得者は、1か所から給与等の支払を受けており、その給与について源泉徴収や年末調整が行われる場合において、給与所得及び退職所得以外の所得金額の合計額が20万円以下であるときは、原則として確定申告を要しない」という規定があります。→No.1900 給与所得者で確定申告が必要な人

まず前提知識として、現物・差金決済の区分と、譲渡所得・雑所得の区分について次に解説します。

現物・差金決済の区分

金融商品は現物取引のものと差金決済取引のものに分かれます。この区分で税の申告方法が変わる部分があります。
現物取引は、金融商品を実際に受け渡しする取引です。購入時と売却時に、金融商品とその代金の受け渡しが発生します。
差金決済取引は、金融商品の受け渡しをせずに、決済時にその取引の損益額のみを受け渡しする取引です。
株式は現物取引となります。マージン口座(現金を借りて取引できる口座)での取引も現物取引です。
オプションとFXは現物取引によるものと、差金決済によるもの両方があります。
米国の株式・指数オプションは現物取引で、米国の先物オプションに関しては分かりません。これは権利行使時に差金決済されるか現物(原資産)の受け渡しが行われるかという問題とは別であり、オプション自身が現物方式か差金決済方式かの話であることに注意してください。
FXに関しては通常FX会社が提供するものは差金決済方式ですが、両替やIB証券のスポットFXなどは現物取引となります。
先物とCFDは差金決済となります。
取引明細書を作成するにあたって、現物取引の場合は購入時・売却時それぞれの代金について記載します。一方で差金決済の場合は、決済時の損益額のみを記載します。取引明細書の詳しい作成方法は後に記述します。
その他にもこの区分が影響する部分がありますが、これも後に記述します。

雑所得・譲渡所得の区分

株式・デリバティブの所得(配当除く)は譲渡所得・雑所得・事業所得のいずれかに分類されます。事業所得は事業規模で行う取引であり、税制上有利なのですが一般の個人には当てはまらないためこの記事では触れません。一般の個人は譲渡所得または雑所得として申告することになります。

譲渡所得・・・資産の譲渡にかかる所得(営利を目的として継続的に行われる取引にあたらない場合)
雑所得・・・営利を目的として継続的に行われる取引にかかる所得(事業規模を除く)、または譲渡所得にあたらない所得(資産の譲渡にあたらない差金決済方式による収入など)

デリバティブ(先物・オプション・FX(差金決済)・CFD)は雑所得(総合課税)となります。
FX(現物取引)は、両替と同じであり、デリバティブではありませんが、これも雑所得(総合課税)となります。
株式の譲渡に関しては、「営利を目的とした継続的な取引」であれば雑所得(分離課税)、そうで無いなら譲渡所得(分離課税)となります。この基準は曖昧ですが、簡便法が示されており、所有期間が一年を超えるものは譲渡所得、一年以下のものは雑所得として良いという通達があります。→通達 株式等の譲渡に係る所得区分
このどちらになるかは特別考えなくても確定申告は行えるのですが、この区分の違いで異なる点もあります。
雑所得では経費として認められる範囲が譲渡所得よりも広く、勉強のための書籍やセミナー代などを算入できる点があります。その他の違いについては後の項目で触れます。
次に、上場株式およびデリバティブの税制をそれぞれ具体的に解説します。

上場株式

・譲渡益は申告分離課税として20%の税率になります(復興特別所得税除く)。
・譲渡損失の次年度以降への繰り越しが出来ません(繰越控除は税制上の「金融商品取引業者等」に限り適用でき、海外証券会社は「金融商品取引業者等」では無いためです)。
・譲渡損益は、国内証券会社で取引した上場株式の譲渡損益と通算ができます。
・配当は、総合課税または申告分離課税で申告できます。申告分離課税として申告することにより、国内証券会社での上場株式の譲渡損失と損益通算できます。申告する上場株式の配当について両方の申告方法を混在させることはできません。
・一方で、海外証券会社での譲渡損失を配当(国内および海外での配当)と損益通算することはできません。
・その他、先物・オプション・FX・CFDなどとは損益通算ができません。
・債券は、「特定公社債」に当てはまるものは税制上上場株式と同じ扱いとなります。海外証券会社で購入できるものは通常これに当てはまると思われます。譲渡・償還による損益は申告分離課税となります。ただし利子は、総合課税が選択できず申告分離課税となります。利子は配当と同じく、国内証券会社での上場株式の譲渡損失と損益通算ができ、逆に海外証券会社での譲渡損失を利子と通算損益することはできません。

参考
No.1463 株式等を譲渡したときの課税(申告分離課税)
No.1474 上場株式等に係る譲渡損失の損益通算及び繰越控除

次に確定申告の方法です。
確定申告では、決済された株式についての取得費と売却代金を申告します。空売りであれば、取得費は決済(買戻し)時の支出額、売却代金は新規建て時の収入金額になります。それぞれの額について、原則として取引日の為替レートにて日本円に換算します。
しかし、株式を雑所得(営利を目的として継続的に行われる取引)として申告する場合であれば、継続適用を条件に「月初または前月末の為替レート」や「一月内の平均レート」などを使用することができます。→通達 法第57条の3《外貨建取引の換算》関係
ただ、エクセル等の表計算ソフトを利用すれば一日ごとの為替レートを自動で適用させる事が出来るので、特別にこのようなレートを使う必要は無いかと思います。
譲渡損益にかかる為替レートは収入についてはTTB、支出についてはTTSを用います。→通達 外貨で表示されている株式等に係る譲渡の対価の額等の邦貨換算
この場合、TTMを用いるより節税になります。この通達の文面では、金融商品取引業者(つまり国内の証券会社)との取引を想定したものであるように見られますが、それに限定したものでは無いように読めますし、税務署に確認した限りでは海外証券会社にも適用できるようです。
配当はTTMを用います。
譲渡損益を算出する際の計算方法として、「総平均法に準ずる方法」を用います。→No.1466 同一銘柄の株式等を2回以上にわたって購入している場合の取得費 一方で、信用取引かつ差金決済の場合については「個別法」を使うという規定もあるのですが、海外口座におけるマージン口座(現金を借りて取引できる口座)での取引は金融商品取引法に規定する「信用取引」には当たらないと思われるため、この規定は適用しないようです。「総平均法に準ずる方法」について詳しくは後述します。

先物・オプション・FX・CFD

・総合課税の雑所得となります。
・損失の次年度への繰り越しが出来ません。
・雑所得(総合課税)以外の所得との損益通算ができません。海外口座での先物・オプション・FX・CFD内では損益通算が可能です。国内口座での先物・オプション・FX(差金決済)・CFDも雑所得ですが申告分離課税となるため、それらとの損益通算は出来ません。株式との損益通算は出来ません。

先物・CFDおよび差金決済のオプション・FX(通常のFX)は、決済損益のみを日本円に換算して記載します。現物取引のオプション(米国上場オプションなど)・FX(両替含む)は、新規建て時の受け渡し金額、決済時の受け渡し金額をそれぞれの時点の為替レートで日本円に換算して記載する必要があります。2つの差額が決済損益となります。
用いる為替レートですが、雑所得を生ずべき業務として申告する場合であれば、原則TTMである一方で継続適用を条件に収入をTTB、支出をTTSとすることができます。→通達 法第57条の3《外貨建取引の換算》関係 これにより節税になりえます。雑所得を生ずべき業務とは、雑所得となる取引かつ、営利を目的として継続的に行われる取引のことで、比較的短期的な取引を行う傾向にある先物・オプション・FX・CFDはこれに該当しやすいと思います。ただ、長期保有しているFX・CFDについては分かりません。また、上場株式の項でも触れましたがこの所得として申告する場合は月初レート等を適用する方法も取ることができます。
これら先物・オプション・FX・CFDについては、取引明細書を提出する必要はありません(保管はしておいた方が良いと思います)。それぞれについて合計損益のみを確定申告書に記載すれば良いと思います。

損益の計算方法としては、現物取引のオプションとFXについては「総平均法に準ずる方法」を用います。→所得税法施行令 第百十八条
この規定では有価証券について「総平均法に準ずる方法」を用いると定めていますが、現物取引のオプションは有価証券に当てはまるようです。また、現物FXについては有価証券ではありませんが、それに準ずる扱いとなるようです。→国税不服審判所 (平成28年6月2日裁決)
先物・CFDおよび差金決済のオプション・FXについては規定がありませんので証券会社のステートメントに従うことになります。

オプションについて、権利行使または割り当てによって原資産の受け渡しが行われるもの(米国上場の株式・先物オプションなど)については、権利行使または割り当ての際はオプション自身に損益は発生せず、オプションを新規建てした際の受け渡し金額(プレミアム+手数料)は、権利行使または割り当てによって取得した原資産ポジションの新規建て金額の中に算入されます。

取引明細書の作成方法

私の方法を紹介します。また、取引明細書のテンプレートファイルも用意しています。
取引明細書の良い作成方法については私も試行錯誤中である上に表計算ソフトも慣れていないため、ベストなアドバイスは出来ないかもしれないことをまずご了承ください。また、私の方法について改善点等あれば教えて頂ければ幸いです。

まず為替レートを入手する必要がありますが、これには「電信売相場、電信買相場及び電信売買相場の仲値については、原則として、その者の主たる取引金融機関のものによることとするが、合理的なものを継続して使用している場合には、これを認める。」という通達があります。→法第57条の3《外貨建取引の換算》関係
主たる取引金融機関が為替レートを公表していれば良いのですが、公表していないことが多い上にデータシートとしてダウンロードできなければ不便です。
私は、三菱UFJの公表している為替レート表を用いるのが良いと思います。→三菱UFJリサーチ&コンサルティング「1990年以降の為替相場」
このページの下部で、年ごとの為替レート表のファイルをダウンロードできます。

この為替レート表を基にエクセル等の表計算ソフトで取引明細を作成します。私は表計算ソフトとして無料のLibre Officeを使用しており、以下それを使用した例も挙げますが概ねエクセルも同じなので参考にできるかと思います。
この為替レート表を、表計算ソフトのファイルにシートとして挿入するか、コピー&ペーストします。取引明細を記載するシートとは別のシートにするのが良いと思います。
基本的には申告する年分の為替レートのみ用意すれば良いと思いますが、もし複数年の為替レートが必要な場合は繋ぎ合わせます。
日付は上から古い順に並べるようにします。vlookup関数(後述)で拾い上げられるようにするためです。複数年の為替レートを繋ぎ合わせる際はもちろん表の途中に余計な行が入らないようにします。
また、この三菱UFJ銀行の為替レート表は、休日の行も含まれており、休日の為替レートが空白になっています。vlookup関数を使用するにはこの空白行を削除する必要があります。
そのためには、フィルター機能を使い、為替レートの列を「空白でない」でソートし、その結果をコピーし貼り付けます。または空白でソートし、空白行を削除します。
Photo_20210708072101

株式の場合は少し厄介な点があり、確定申告では取得費の合計と売却代金の合計をそれぞれ記載しなければならない点です。空売りの場合は、新規建て時は売却代金、決済時は取得費の扱いになりますので、買建てと売建ての両方がある場合は、新規建て金額の合計と決済金額の合計をそれぞれ記載する訳では無いことに注意ください。ただしこの計算は表計算ソフトを用いれば何とかなります。

支出に記載する数値はマイナス、収入に記載する数値はプラスで統一しておくと便利だと思います。以後、これを前提にします。
株式・現物オプション・現物FXは総平均法に準ずる方法、先物・CFD・オプション(差金決済)・FX(差金決済)は証券会社のステートメントに従って計算します。
株式・現物オプション・現物FXについては、新規建て時と決済時の両方について取引を記載します。
私は試作として表計算ソフトで自動的に計算できるものを作成したので、その方法を説明しようと思います。
現物FXに関しては、外貨の為替損益に含まれますので、外貨の為替損益の計算方法で解説します。

私の作成した取引明細のテンプレートファイルは以下です。

ダウンロード - e58f96e5bc95e6988ee7b4b0e99b9be5bda25.ods
ダウンロード - e58f96e5bc95e6988ee7b4b0e99b9be5bda25.xlsx

odsファイルはLibreOffice用、xlsxファイルはExcel用です。
オレンジのセルは数式が入るセルです。数式の入っていない行にはオートフィルで適用できます。
為替レート表のシートには、参考として三菱UFJから取得した為替レート表を貼り付けていますが、ここは必要な期間のものに変えて下さい。vlookup関数内の、為替レート表への参照範囲は必要であれば変えて下さい(後述)。
その他、基本的な利用方法については「利用方法」シートにまとめていますが、詳しくはこの記事での解説を読んで頂ければと思います。

次に、取引明細の作成方法を一から解説します。テンプレートファイルを利用する場合も、次からの解説を読んで内容を理解した上で利用することを薦めます。また、計算の結果、不自然な値が算出されていないかどうかを確認してください。

株式およびオプション(現物取引)の取引明細

ここでは株式およびオプション(現物取引)の取引明細について、私の作成方法を詳しく解説します。配当については、この後の項目で触れます。
株式とオプション(現物取引)は取引明細の仕様は同一ですが、税区分は異なるためシートは分けた方が良いと思います。

ここでは株式を想定した用語を用いますが、現物オプションの場合は「株式」を「オプション」、「株数」を「数量」、「空売り」を「ショート」などに読み替えて下さい。
「総平均法に準ずる方法」について説明します。以下は株式の購入を行う際の説明になりますが、株式の空売りの際は「取得」を「空売り」、「保有株数」を「空売り株数」、「売却」を「買戻し」などに読み替えて下さい。
同一銘柄の株式について、取得した都度、取得金額(円換算額)を足していき、取得金額の合計(円換算額)を算出します。そして「取得金額合計(円)÷保有株数」がその時点での取得単価となります。
そして、株式の売却を行った際に、「売却金額(円)-(売却株数×取得単価)」が決済損益となります。
この取引後の取得金額合計(円)は、「保有株数残り×取得単価」となります。そして新たな取得単価を「取得金額合計(円)÷保有株数」で算出します。
参考ページ:No.1466 同一銘柄の株式等を2回以上にわたって購入している場合の取得費

以下は私の作成したテンプレートの画像です。
2_20210709065101

銘柄ごとに取引をまとめ、その中で取引を時系列に記載します。
空売りと買建ての両建てが可能な証券会社の場合は、空売りと買建ては別銘柄としてまとめます。
列として「銘柄名」「取引日」「数量」「約定代金」「手数料」「約定代金(円)」「手数料(円)」「その他の金額(円)」「合計金額(円)」「数量残」「建て金額残(円)」「平均建て単価(円)」「決済」「建て金額(円)」「決済損益(円)」「備考」というようなものを作っています。
前半の「銘柄名」~「手数料」および「その他の金額(円)」に手動で入力します。それぞれの列について説明します。

銘柄名
参考画像のように、銘柄名はその銘柄の欄の一行目、年度内初めの取引または期首残高(前年から持ち越された分)が記載された行のみに記載するようにしています。同じ銘柄の欄の2行目以降には銘柄名は記載しません。私の数式ではその銘柄の最初の取引または期首残高かを判定するのに、同じ行に銘柄名の記載があるかどうかを判定基準にしているためです。別の判定方法を用いる場合は、この辺りは自由にして良いです。
取引日
西暦を含めて日付を入力します。今年の場合は西暦は省略できます。
数量
買いはプラス、売りはマイナスの符号で取引株数を記載します。新規か決済かで列を分けても良いかと思いましたが、現状では一緒にしています。
約定代金
元々の通貨での約定代金を入力します。収入はプラス、支出はマイナスです。
手数料
元々の通貨での手数料を入力します。支出なのでマイナス表記となります。
約定代金(円)
ここでvlookup関数を使い、「約定代金」を円に直します。以下の数式を入力します。
= 約定代金セル * VLOOKUP(取引日セル, 為替レート表の範囲, 為替レート表内でのTTMまたはTTB/TTS列を示す列番号) 参考画像での行3の約定代金(円)セルの数式は
=$D3*VLOOKUP($B3,$為替レート表.$A$2:$E$500,IF($D3<0,3,4)) となっています。
下線部は為替レート表の範囲です。この例では500行までを指定範囲にしていますが、これは適当に多めを指定範囲にしているだけです。
ここでは「為替レート表」という名称の別シートを参照していますが、この別シート参照の式はLibre Officeのもので、エクセルと異なります。LibreOfficeでは「シート名.セル名」ですが、エクセルでは「シート名!セル名」となります。
為替レート表の指定範囲は以下のようになります。指定範囲の一列目を日付列にし、列項目名は含めません。
Photo_20210511120401

為替レートについてTTMを用いる場合は、TTM列を表す列番号を入力します(上記画像の場合、5)。
TTBおよびTTSを用いる場合は条件式としてIF関数を用います↓
IF(約定代金セル < 0, TTS列の番号 ,TTB列の番号) これで、約定代金が0未満(支出の場合)であればTTS列の番号を示し、そうで無い場合(収入の場合)はTTB列の番号を示します。

ここではvlookup関数で指定している値は3つですが、4つ目の値として検索の型というのがあります。これは省略またはTrueまたは1にします。このようにすれば、参照する取引日が為替レート表に存在しない場合(休日などで)はその直前の日付の為替レートを返してくれます。この方法を利用するには、為替レート表内の日付は上から古い順に並んでいる必要があります。

また、$が前につく列文字・行番号・シート名は絶対参照となり参照先が固定されます。列文字のみ固定しておけば、セルを横に連続適用またはコピー&ペーストしても数式内のセル参照が維持され、縦に連続適用またはコピー&ペーストした際は行番号が追従するため便利です。参照する為替レート表は全固定にします。

私のテンプレートを使用する場合でvlookup関数内の為替レート表範囲を変更する場合は、「検索と置換」機能を利用すると便利です。以下はLibreOfficeのものですがExcelにも同等のものがあります。
2_20210718124201
標準では「$為替レート表.$A$2:$E$500」(エクセルでは「$為替レート表!$A$2:$E$500」)となっていますのでこれを検索し、置換先に新しい範囲を入力します。「すべてのシート」にチェックを入れ、「検索場所」を「数式」にします。置換処理後は正常に置換されているか確認してください。
また、LibreOfficeのバグなのか数式内に「$為替レート表.$A$2:$E$500」と入力してもいつの間にか「$為替レート表.$A$2:$為替レート表.$E$500」のように無駄に長い表記に変わっていることがありましたので、ご注意ください。

手数料(円)
手数料セルの値を日本円に変換します。上記の数式の、約定代金セルの部分を手数料セルに置き換えます。また為替レートについては、約定代金と同時に(合算して?)受け渡しがされる手数料分についての扱いが良く分かりませんので、個人的に合理的だと思うTTMを採用しています。私の参考シート内では行3は以下になっています。
=$E3*VLOOKUP($B3,$為替レート表.$A$2:$E$500,5)
その他の金額(円)
取引金額に算入するその他の金額が発生することがありますので、この項目を設けています。株式ポジションがオプションの権利行使によって取得したものである場合は、当該オプション代金をここに記載します。金利や貸株料については、ここに記載するのではなく別に計算したほうが良いかもしれません。
合計金額(円)
約定代金(円)+手数料(円)+その他の金額(円)を示します。数式はそのまま各セルを足したものです。
数量残
取引後の保有株数を示します。ここから数式が少し複雑になっています。
まず、その銘柄の初めの取引かどうかを同行に銘柄名の記載があるかどうかで判定し、初めの取引で無い場合、一行上の数量残セルと今回取引された数量を足します。初めの取引の場合はそのまま今回取引された数量を数量残とします。
一行上のセル参照についてですが、そのまま指定すると、行の挿入や削除に伴ってセル参照が狂います。なのでそのような操作があっても常に一行上のセルを参照できるようにOFFSET関数を用います。基準セルの一行上のセルを参照する式は以下になります。
OFFSET(基準セル, -1, 0) ここまでが基本なのですが、私の方法ではこれにエラー判定の条件文を加えています。ドテン注文という、一つの買い取引で売り建玉を決済すると同時に新規買建を行ったり、その逆を行ったりするものがあるのですが、このような取引を記載しようとすると、数式がもっと複雑なことになるのでこれを防ぐためにエラー判定の条件文を加えています。ドテン注文がある場合は、決済取引と新規取引に分けて記載します。手数料等も分けます。
数式は以下となります。IF関数では、括弧内(引数)の1番目に「条件判定式」、2番目に「条件がTrueの時に示す値」、3番目に「条件がFalseの時に示す値」を記述します。分かりやすいように数式の一階層目を整形しています。
= IF(
TRIM(銘柄名セル) = "",
IF((数量セル + 一行上の数量残セル) * 数量残の一つ上のセル < 0, "数量エラー", 一行上の数量残セル),
0
) + 数量セル
エラー判定式については、今回の数量残と前回の数量残の符号が逆の場合にエラーにするため、「今回の数量残×前回の数量残<0」の場合にエラーにするようにしました。
私の参考シート内では行3の数量残セルは以下になっています。
=IF(TRIM($A3)="",IF(($C3+OFFSET($J3,-1,0))*OFFSET($J3,-1,0)<0,"数量エラー",OFFSET($J3,-1,0)),0)+$C3
建て金額残(円)
建て金額を合計した残高(円)を示します。「建て金額」とはポジションの取得価格のことであり、新規取引時の「合計金額(円)」になります。つまりこの列では現在保有しているポジションの取得価格合計を示します。
※ポジションとは、株式などを買い(ロング)または空売り(ショート)して未決済のものを言います。株式を購入した場合は単に株式の取得・保有と言えば良いですが、空売りした株式については株式を取得・保有しているとは言えません。しかしポジションという言葉を使えば、空売りしたものについてもポジションを取得・保有していると言えます。
まずその行の取引が新規注文か決済注文かで数式が異なるため、それを判断する条件式を入れています。前回の数量残と今回の取引数量の符号が一致しない時は決済注文だと判断します。そのために、両者を掛け合わせて0以上であれば新規注文だと判断しています。
それ以前に、この行の取引がその銘柄の初めの場合は新規注文になります。
新規取引かつその銘柄の初めの取引の場合は、合計金額(円)が建て金額残(円)となります。
新規取引で前回取引がある場合は、前回の建て金額残(円)+今回の合計金額(円)となります。
決済取引の場合は、平均建て単価×数量残となります。
数式は以下です。
= IF(
TRIM(銘柄名セル) = "",
IF(一行上の数量残セル * 数量セル >= 0, 一行上の建て金額残(円)セル + 合計金額(円)セル, 数量残セル * 平均建て単価セル),
合計金額(円)セル
)
私の例では、以下になります。
=IF(TRIM($A3)="",IF(OFFSET($J3,-1,0)*$C3>=0,OFFSET($K3,-1,0)+$I3,$J3*OFFSET($L3,-1,0)),$I3)
平均建て単価
建て金額残(円)を数量残で割ったものです。取引後の値となります。そのままだと数量残が0の場合はエラーとなるため、数量残が0の場合は0を表示する条件式を入れています。また、株式の取得にかかる平均取得単価の計算時には端数の切り上げをするという通達があるため(1単位当たりの取得価額の端数処理)、ここではINT関数を使用して切り上げを行っています。オプションの場合でもこれを適用して良いかと思います。数式は以下となります。
= IF(
数量残セル = 0,
0,
INT(建て金額残(円)セル / 数量残セル)
)
私の例では以下になります。
=IF($J3=0,0,INT($K3/$J3))
決済
これは分かりやすいように決済取引の場合に○を表示するものです。後ほど集計時に決済取引のみをフィルターで絞り込むのにも使います。数式は以下です。
= IF(
TRIM(銘柄名セル) = "",
IF(一行上の数量残セル * 数量セル >= 0, "", "○"),
""
)
私の例では以下です。
=IF(TRIM($A3)="",IF(OFFSET($J3,-1,0)*$C3>=0,"","○"),"")
建て金額(円)
決済された株式にかかる、建て金額(ポジション取得価格)を示します。決済の場合に「-1×取引数量×取引前の平均建て単価」を示します。数式は以下です。
= IF(決済セル = "○", -数量セル * 一行上の平均建て単価セル, "") この式中の○について、決済セルの○と同じものであることを確認してください。記号と漢数字で異なります。
私の例では以下です。
=IF($M3="○",-$C3*OFFSET($L3,-1,0),"")
決済損益(円)
決済された株式にかかる損益(円)を表示します。決済の場合に合計金額(円)と建て金額(円)を足したものを表示します。数式は以下です。
= IF(決済セル = "○", 合計金額(円)セル + 建て金額(円)セル, "") 私の例では以下です。
=IF($M3="○",$I3+$N3,"")

これで一通りテンプレートは完成しました。もっと良いやり方はあると思いますが、取りあえずはこれで動くと思います。
前半の「銘柄名」~「手数料」および「その他の金額(円)」を手動で入力し、この他の列は自動入力となります。自動入力の列は全ての行にオートフィルで一括適用できます。
しかし期首残高(前年から持ち越された分)がある場合は、その銘柄の初めの行の「数量残」「建て金額残(円)」「平均建て単価(円)」に手動で入力し、そこには数式は入れません。その他の列には入力不要です。

オプションについて、権利行使によって原資産ポジションを取得するタイプのものについて権利行使が行われた際は、オプションの取引明細上では便宜的に約定代金0での決済扱いにし、その決済損益についてはそこから削除して、権利行使によって取得した原資産ポジションの建て金額に算入します。

決済損益合計などを計算する時はSUM関数を使います。「=SUM(合計したいセルの範囲)」で表せます。
株式の場合、所得費の合計と収入金額(売却金額)の合計を確定申告書に記載する必要がありますが、これらはフィルター機能を使って計算できます。
フィルターで「決済セル=○」かつ「合計金額(円)セル>0」で絞って出てきた合計金額(円)と、「決済セル=○」かつ「建て金額(円)セル>0」で絞って出てきた建て金額(円)を足した合計が収入金額合計となります。
取得費についても同じ要領で、「決済セル=○」かつ「合計金額(円)セル<0」で絞って出てきた合計金額(円)と、「決済セル=○」かつ「建て金額(円)セル<0」で絞って出てきた建て金額(円)を足した合計が取得費合計となります。
フィルター機能以外ではSUMIFS関数やDSUM関数でも算出できます。
ただし確定申告書には「譲渡のための委託手数料」を記載する項目があり、つまり売却時の手数料を別に申告するようになっているのですが、空売り取引があるとその計算は複雑なことになってしまうため、この項目は使わないで良いと思います。税額の計算には影響しません。
払った貸株料や金利などは、必要経費として記載します。
確定申告書に記入する際はマイナスの符号は除きます。
オプションの場合は、決済損益を合計したものを雑所得(総合課税)として記載するだけです。

外貨を円貨換算した際は端数が出ますが、確定申告書に記載する数値に端数が出た際は納税者有利という原則に従って、収入の場合は切り捨て、支出の場合は切り上げにします。これは収入をプラス、支出をマイナスとしているのであればINT関数で実現できます。

デリバティブ(差金決済)の取引明細

差金決済方式による先物・オプション・FX・CFDに関しては決済時の取引のみ記載すれば良く、簡単です。
上記、株式およびオプション(現物取引)の取引明細の中の、「銘柄名」~「合計金額(円)」列を転用し、「取引日」の名称を「決済日」、「約定代金」の名称を「決済損益」に直せば良いと思います。そして「合計金額(円)」をSUM関数で合計したものを申告すれば良いと思います。手数料は別に申告することも出来ます。
以下は私のテンプレートの画像です。
Photo_20210710104101

または、証券会社の取引明細をCSVなどでダウンロードし、それを表計算ソフトにコピー&ペーストまたはシートとして挿入し、そこに数式を加えて計算する方法も出来ると思います。

配当の明細

株式の配当に関しては、確定申告では決められた書式に記載することになりますが、そのための元となる明細を作っておくと便利です。
私のテンプレートでは以下になります。
2_20210719022001

「配当額」には現地での源泉徴収税が課される前の配当額を記入します。
「現地源泉徴収税額」は、現地(外国)で課された税額です。
「差引収入額」は、「配当額」から「現地源泉徴収税額」を引いた、手取り収入です。
その後の列ではそれぞれの項目を円に直しています。
また、最後の「差引収入額(円)」はINT関数で納税者有利方向に切り捨てを行っています。
配当を申告する際は、この明細の「銘柄」「差引収入額(円)」を用います。
確定申告書作成コーナーを利用する時は、配当集計フォームにこれらをコピーすることができます。
この明細は外国税額控除に利用することもできます。

外貨の為替損益の計算方法

証券会社に預け入れた外貨について、その外貨の支出を伴う取引(資産の購入・他通貨への転換・決済損・手数料払いなど)を行った時、その時点で為替損益が出たものと認識します。
この計算は複雑なので、一般的にはなるべく外貨の現金を持っておかず、債券ETFや債券などに変えて持っておくほうが良いと言えるかもしれません。MMFがあれば楽なのですが、海外証券会社ではMMFは見かけません。
ただいくら頑張っても完璧に外貨保有をゼロにすることは出来ないので、完璧に申告しようとすれば為替損益の計算は必要になります。
ここで外貨の為替損益の申告方法について解説しますが、私は素人であるためこの記事の内容を鵜呑みにせずご自身でも出来るだけ確認いただければと思います。

この為替損益は雑所得(総合課税)となります。複数通貨を扱っている場合はそれぞれについて計算する必要があります。
計算方法は、株式と同じく「総平均法に準ずる方法」を使用することになるようです。→国税不服審判所 (平成28年6月2日裁決)
計算対象の外貨について、その外貨の収入を伴う取引(資産の売却・円を含めた他通貨からの転換・決済益・配当など)が行われた時、その日の対円為替レート(原則TTM)をその外貨の取得レートとします。
外貨収入がある都度、その日の為替レートでの円換算額を足していき、円換算の残高を算出します。そして「円換算残高÷外貨残高」がその時点での平均取得レートとなります。
そして、その外貨の支出を伴う取引(資産の購入・他通貨への転換・決済損・手数料払いなど)を行った際に、「外貨支出額×(その日の対円為替レート(原則TTM)-平均取得レート)」を為替損益として認識することになります。
この取引後の円換算残高は、「外貨残高×平均取得レート」となります。そして新たな平均取得レートを「円換算残高÷外貨残高」で算出します。
参考サイトとして、外貨預金についての為替損益の計算方法を記したサイトですが挙げておきます。
外貨預金 損益状況(簡易集計) (ソニー銀行)

ここでは証券会社から、口座内の全ての現金の動きを記載したレポートが発行されている場合についての申告方法を記述します。
現物FX取引(通常のFXではなく現金を実際に為替取引するFX)を行っている場合も、このレポートに記載されていることを確認してください。ただし現物FXの手数料(スプレッド以外)が課されている場合、その手数料の損失分を申告するにはここでの為替損益計算ではできませんので、別に行う必要があると思います。用いる為替レートについては原則TTMですが、「営利を目的とした継続的な取引」(単なる両替では無く、FXでの利益を狙ったFX取引であれば、ほとんどこれに当てはまると思いますが)であればTTS、TTBを使用することが出来ると思われます(ただし一応税務署に確認してください)。
ちなみに、国内口座の特定口座内で行う外貨取引の場合は少し計算方法が異なるかもしれず(確かではありませんが)、特定口座内では同日中に同一銘柄の売りと買いが行われた時、常に買いが売りよりも先に行われているとみなすようです。ここでは海外口座についての申告方法になります。

エクセルやLibre Officeなどの表計算ソフトを使用します。私はLibre Officeを使用しており、それを利用した例も挙げますが関数の式などはほとんどエクセルと共通だと思います。
私は海外証券会社としてIB証券を使っていますが、IBでは資金収支報告書をCSVでダウンロードできます。また、Firstrade証券についてはAccount Historyを基にすることが出来るかと思いますが、こちらの場合は余計な項目も含まれているため整理する必要があるかと思いますので少し面倒です。ダウンロードしたファイルは表計算ソフトにシートとして挿入、または内容をコピー&ペーストします。
また、同期間に対応する為替レート表も用意します(休日行は削除)。為替レート表の用意の方法については「取引明細書の作成方法」内で説明しています。

IB証券のファイルでは、「基準通貨サマリ」の行がありますがこちらは他通貨の取引も基準通貨に直して表記しているもので、不要ですので削除します。JPYの行も削除し、USDなど目的の外貨の行のみにします。
このファイルには二種類の日付、報告書基準日と活動日が記載されています。恐らくは活動日が取引日であり、報告書基準日は金額が最終的に決定した日付であるようです。アクティビティステートメントに記載の日付は活動日と一致するようですので、活動日を採用したほうが良いかと思います。
ただし活動日は時系列に並んでいません。時系列に並べ替えるために、フィルターで活動日を昇順にします。それに伴い、「残高」列の値も狂うので、この「残高」列は使用しません。IBのデータにおける借方は支出、貸金は収入です。
活動日が前年の日付になっていることがありますが、これで良いと思います。私が確認した限りでは、当該取引は当年のアクティビティステートメントに前年の日付で記載されていましたのでアクティビティステートメントと整合性を取るなら活動日で良いかと思っています。ただし為替レートは前年分を少し入れる必要があります。
また、日付のセルが日付形式として認識されなかったので、その場合は、追加の列を挿入し、そこに「=DATEVALUE(対象セル)」という数式を入れて日付形式の値を表示させます。
借方・貸金列について、空白セルに見える部分でも半角スペースが入力されていましたので、「検索と置換」などで空白に置き換えます。

FirstradeのAccount Historyについては、これもダウンロードできますがフィルターなどで不要な行を削除する必要があるかと思います。私の場合、「MARK TO MARKET」「XFER CASH TO MARGIN」「XFER MARGIN TO CASH」などのアクティビティが不要そうに思えました。ただ正確なことは分かりません。

厄介な点は、仮に海外口座をマージン口座(現金を借りて取引できる口座)にしている場合、借入が発生して口座内の現金残高がマイナスになることがある点です。その場合、恐らくは、借入部分を除いて計算する必要があるのではないかと思います。
何らかの支出で残高がマイナスになる時、そのマイナス分については、元々保有していた外貨を支出したのではなく、借り入れた外貨で支出を行った部分になります。借入金も現金収入ではありますが、即座に支払いに充てられるため為替損益は0になると思います。
逆に何らかの収入によって残高のマイナス(負債)を解消する時、その収入は即座に負債の支払いに充てられていることになるので、負債の解消に充てられた分の収入については為替損益は0になると思います。ただし、その収入が入金によるものの場合は、その収入にかかる取得レートは以前のものとなるため、為替損益が発生します。このケースには別に対処するとして、基本的には以下のことが言えると思います。
残高がマイナスとなる外貨支出がある時は、残高が0になるまでの支出を支出額として認識し、逆に残高がマイナスの状態からプラスの状態になる外貨収入がある時も、残高がプラスになってからの収入を収入額として認識するべきかもしれません。また、残高がマイナス圏に留まる範囲での現金の動きは無視するべきかもしれません。
そのために、支出と収入については外貨残高がマイナスにある範囲のものを除くように調整し、計算に用いる円換算残高については外貨残高がマイナスの時は0になるように調整する必要があります。

私の作成した計算書のテンプレートも用意しました。

ダウンロード - e782bae69bbfe6908de79b8ae8a888e7ae97e99b9be5bda22.ods
ダウンロード - e782bae69bbfe6908de79b8ae8a888e7ae97e99b9be5bda22.xlsx

odsファイルはLibreOffice用、xlsxファイルはExcel用です。
基本的に、オレンジ色のセルには数式を適用し、白色のセルには手動入力します。
為替レート表は必要な期間のものに変えて下さい。
為替レート表を参照するvlookup関数の内部も必要であれば変えて下さい(後述)。

以下はテンプレートの画像です。参考としてデータを記入してあります。
1600

このテンプレートに、証券会社からの「収入」「支出」のデータを貼り付けるのが早いと思います。複数の外貨がある場合はシートを分けるなどして別個に計算書を作ります。
この計算書の作成方法について一から解説します。テンプレートを利用する場合も、この解説を読んでください。
数式の結果として不自然な値が算出されていないことを確認してください。
外貨の支出はマイナス、収入はプラスで記載されているとします。
上記画像のように初めの行は年初における残高(期首残高)とし、「残高」「残高(円)」「平均取得レート」について手動で入力します。年初に残高が無かった場合、空白または0にします。この下の行から各列へ数式を記入します。
それぞれの列について解説します。
また、マージン口座を使わない場合は複雑な数式は必要ないため、非マージン口座用の計算書の作り方および数式も併記します。ただしテンプレートはマージン口座対応の計算書になっており、非マージン口座でもマージン口座対応の計算書を用いることが出来ます。

通貨
一つのシート内で複数の通貨の計算書を入れる場合はこの列があれば良いと思います。
取引日
証券会社からのデータを貼り付けますが、前述したように日付形式として認識しない場合はDATEVALUE関数で日付形式に直します。
取引内容
証券会社からのデータを貼り付けます。
支出
外貨支出です。証券会社からのデータを貼り付けます。数値がマイナスである必要があります。同じ行の支出セルと収入セルには同時に値は入りません。
また、支出・収入が同じ列に記載されており符号で判断する場合は、支出・収入列の代わりに収支列をつくります。
その場合、以後の数式内の支出セルをIF(収支セル < 0, 収支セル, 0)に置き換え、
収入セルをIF(収支セル >= 0, 収支セル, 0)に置き換えれば良いと思います。
収入
外貨収入です。数値はプラスとなります。その他注意点は上と同じです。
残高
支出または収入の取引後の外貨残高を表します。証券会社からのデータがあればそれを用いることもできますが、数式としては以下になります。
= 一つ上のセル + 支出セル + 収入セル収支列を用いている場合は以下になります。
= 一つ上のセル + 収支セル
支出(調整後)
残高がマイナス圏にある範囲の支出を除いた支出です。残高がマイナスの時のみ、支出セルの値と異なっていることを確認してください。分かりやすいように数式の一階層目を整形しています。
= IF(
残高セル < 0,
IF(残高セル <= 支出セル, 0, 支出セル - 残高セル),
支出セル
)
非マージン口座用・・・この列は作らず、以後、数式内の「支出(調整後)セル」を「支出セル」に置き換えてください。
収入(調整後)
残高がマイナス圏にある範囲の収入を除いた収入です。残高がマイナスの時またはマイナスから回復する時のみ、収入セルの値と異なっていることを確認してください。
= IF(
残高セル < 0,
0,
IF(収入セル > 残高セル, 残高セル, 収入セル)
)
非マージン口座用・・・この列は作らず、以後、数式内の「収入(調整後)セル」を「収入セル」に置き換えてください。
為替レート
取引日の為替レートをvlookup関数で拾い上げます。vlookup関数の説明については、「株式およびオプション(現物取引)の取引明細」内を参照ください。
= VLOOKUP(取引日セル, 為替レート表の範囲, 為替レート表内でのTTMを示す列番号)ただし現物FX取引がある場合で、それについてTTS,TTBを使用する場合は、「取引内容」セルにFX取引を示す文言があることを条件に、「支出」セルがマイナスであればTTS、そうでなければTTBを使うというようにすれば良いと思います。数式では例えば以下のようになります。
= VLOOKUP(
取引日セル,
為替レート表の範囲, 
IF(
COUNTIF(TRIM(取引内容セル), "為替取引からの*") = 0,
TTMの列番号,
IF(支出セル < 0, TTSの列番号, TTBの列番号)
)
)
下線部にFX取引を示す文言を入れます。「*」と「?」のワイルドカードが使用できます。*は0文字以上の任意の文字列、?は任意の1文字を表します。ただしLibreOfficeの場合はツール→オプション→LibreOffice Calc→計算式から、「数式にワイルドカードを使用する」にチェックが入っていることを確認してください。Excelの場合は標準で大丈夫だと思います。私の場合ではテンプレート画像にもあるように「為替取引からの取引通貨レッグ」「為替取引からの手数料」がFX取引に該当しますので、下線部の文言は上記のようになります。
入金分の取得レート
自分で口座に外貨入金したことによる収入の場合、その分を取得した際の為替レートを手動で入力します。それ以外では空白にします。
入金された時点が外貨の取得日(取引日)とはならないため、当日の為替レートが適用できないためです。
収入(調整後)(円)
収入(調整後)を円に直します。「入金分の取得レート」に記載がある場合はそれを用い、それ以外は「為替レート」を用います。
= IF(TRIM(入金分の取得レートセル) = "", 為替レートセル, 入金分の取得レートセル) * 収入(調整後)セル非マージン口座用・・・列名称を「収入(円)」に
残高(円)
収入(調整後)(円)を合計した残高です。取引後の残高となります。
支出の場合は「外貨残高×取引前の平均取得レート」となり、収入の場合は「取引前の残高(円)+収入(調整後)(円)」となります。
また、外貨残高がマイナスの時は0を表すようにします。
= IF(
残高セル < 0,
0,
IF(支出(調整後)セル < 0, 残高セル * 平均取得レート列内の一つ上のセル, 一つ上のセル + 収入(調整後)(円)セル)
)
非マージン口座用・・・= IF(支出セル < 0, 残高セル * 平均取得レート列内の一つ上のセル, 一つ上のセル + 収入(円)セル)
平均取得レート
取引後の平均取得レートを表します。
= 残高(円)セル / 残高セル
入金による負債解消額
自分で口座に外貨入金し、口座のマイナスを解消した際に、そのマイナス解消額を表します。
= IF(TRIM(入金分の取得レートセル)= "", 0, 収入セル - 収入(調整後)セル)非マージン口座用・・・この列は作りません。
負債解消に伴う為替損益(円)
= 入金による負債解消額セル * (為替レートセル - 入金分の取得レートセル)非マージン口座用・・・この列は作りません。
合計損益(円)
= 支出(調整後)セル * (平均取得レート列の一つ上のセル - 為替レートセル) + 負債解消に伴う為替損益(円)非マージン口座用・・・= 支出セル * (平均取得レート列の一つ上のセル - 為替レートセル)列名称を「為替損益(円)」に

外貨を自分で入出金したものについては外貨取引にあたらないため、以下のことを行います。
入金の場合は前述のように、「入金分の取得レート」セルに送金元で取得した際の為替レートを入力します。
出金の場合はその行の「合計損益(円)」セルの値を削除します。そして一行上の「平均取得レート」列の値が、当該出金分の平均取得レートとなりますので、その値を記録しておきます。

「合計損益(円)」をSUM関数で合計したものを雑所得(総合課税)として申告します。年度内最後の取引の行の「残高」「残高(円)」「平均取得レート」の値は翌年の期首残高に記入することになります。

« 砂糖不使用チョコレートの紹介 | トップページ | [SEO] ブログのアーカイブやカテゴリページにnoindexを付与する (JavaScriptでの方法) »

資産運用(投資)」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 砂糖不使用チョコレートの紹介 | トップページ | [SEO] ブログのアーカイブやカテゴリページにnoindexを付与する (JavaScriptでの方法) »