一昨年の2020年に開設したFirstradeの確定申告を今年もやらないといけません。昨年は、Statementの画面から出力したPDFを使って申告をしました。

コピペがかなり面倒ですんなりいってくれないので、今年は別の出力方法で試してみます。1年たつと、前回やった作業をほとんど覚えていない・・・。
データ出力
前回は「Accounts」→「E-Documents」から「Statements」でしたが、今年は「E-Documents」の「Confirmations」か、「Accounts」→「History」を見てみました。「Confirmation」は残高につく利息や配当が表示されないようなので、「History」を使ってみることにしました。2020年の確定申告よりもコピペが断然楽です。
出力データ
Date | Transaction | Quantity | Description | Symbol | AcctType | Price | Amount |
01/05/2021 | Bought | 20 | AMERICAN BATTERY METALS CORPORATION COMMON STOCK INTERNET ORDER UNSOLICITED | ABML | Margin | 0.935 | -18.7 |
S/D: 01/07/2021 | |||||||
01/05/2021 | Bought | 1 | PUT SPY 01/22/21 360 STANDARD & POORS DEPOSITORY INTERNET ORDER UNSOLICITED OPEN CONTRACT | SPY 01/22/2021 Put 360.00 | Margin | 3.7 | -370.04 |
S/D: 01/06/2021 |
こんな感じで出力されました。S/Dは受け渡し日?(Settlement Date?)かなと思います。本来、受渡日での確定申告になるはずですが、特定口座でなければ約定日でも大丈夫そうです。
現実的には為替レートは約定日のものを考えているのですが、どちらにしても確定申告の為替レートはTTS/TTBなので実際と違いますし、どちらでも良いかもしれません。でも、Excelでこの表からS/Dを抜き出して一つのデータにするのは、来年見たときに謎マクロになっていそうなので・・・、約定日でやっていくことにしてS/Dの行は削除していきます。
オプションと株式・その他を分解
Date | Transaction | Quantity | Description | Symbol | AcctType | Price | Amount |
12/11/2020 | Sold | -1 | ISHARES RUSSELL 1000 GROWTH ETF INTERNET ORDER UNSOLICITED PRODUCT DESCRIPTION UNDER SEPARATE COVER SHORT. | IWF | Short | 231.89 | 231.88 |
12/18/2020 | Bought | 3 | WESTERN DIGITAL CORP INTERNET ORDER UNSOLICITED | WDC | Margin | 53.7 | -161.1 |
Date | Transaction | Quantity | Description | Symbol | AcctType | Price | Amount |
12/28/2020 | Sold | -1 | CALL SLV 01/08/21 26 ISHARES SILVER SHARES INTERNET ORDER UNSOLICITED OPEN CONTRACT | SLV 01/08/2021 Call 26.00 | Margin | 0.3 | 29.95 |
12/31/2020 | Bought | 1 | CALL SLV 01/08/21 26 ISHARES SILVER SHARES INTERNET ORDER UNSOLICITED CLOSING CONTRACT | SLV 01/08/2021 Call 26.00 | Margin | 0.14 | -14.04 |
オプションは取引シンボルに日付が入っているので、条件で並べ替えして切り分けました。後で気づいたのですが、確定申告はポジションを建てたときの価格が必要なので、今回のように計算方法をいじった時には、年をまたいで保有しているポジションは立てた時までさかのぼらなくてはいけないので面倒です。もしくは、平均取得価格を計算したものを別で作成して書き込みするかですが、面倒ですね。
株式分割などがあった時には完全に訳が分からなくなるのが間違いないです。毎日ジックリ見ていないとETFなどがいつの間にか分割していたこともあるので、かなり厳しい。
為替レート
為替相場は、UFJ銀行の公開している過去レートを利用します。下の方の年を選ぶところで該当年を選ぶとEXCELファイルでダウンロードできます。
日本の休日の取引などは、前営業日のものをコピーします。
Firstradeは米ドルのみで取引されているので楽です。
2020年 | 米ドル(USD) | |||
DATE | 曜 | TTS | TTB | TTM |
1月1日 | 水 | |||
1月2日 | 木 | |||
1月3日 | 金 | |||
1月4日 | 土 | |||
1月5日 | 日 | |||
1月6日 | 月 | 109.11 | 107.11 | 108.11 |
1月7日 | 火 | 109.44 | 107.44 | 108.44 |
1月8日 | 水 | 108.83 | 106.83 | 107.83 |
1月9日 | 木 | 110.24 | 108.24 | 109.24 |
いったん、横に=IF(ISBLANK(C3), F2, C3))のようなセルを作って、空欄をなくしておきます。その後関数を除去するかそのままにして計算を続けていきます。Firstradeは為替が一種類だけなのでこれでいいですが、Interactive Brokerの場合は別のシートを作って最後に関数除去が良いと思います。(ついでに、JPY相場=常に1を作っておくと便利ですが確定申告にはいらないかも?)
使用するレートは、購入時TTS、売却時TTBで小数点以下は切り捨てです。
平均取得単価の計算
買い増し、売り増しをしている間は気にしなくても大丈夫ですが、いったんポジションを一部手仕舞いすると、いったん平均取得単価を計算してその後は(実際に支払った額ではなく)その計算値を使用して計算することになります。
平均取得単価を求める場合は除算後、1円未満を切り捨てします。
なので、保有していたポジションが取引で増えたのか減ったのかを見ながら計算しなくてはいけません。
こんな感じで判定して平均取得価格を計算するかどうか確認していきます。(実際の計算には使わないかも)
=IF(ABS(L15)-ABS(K15)=0,"不明", IF(ABS(L15)-ABS(K15)>0,"建て増し","手仕舞い"))
ポジションが増えている限りは、取得価格をひたすら足してポジション数で割れば平均価格が出せるので、ポジションが減った場合に、「前回までの取得価格合計をポジション数で割って1円未満を切り上げたもの」をその後の平均取得価格として利用することになります。
取得単価(円)(小数点切上げ)=「取得費」÷「数量」
取得単価の計算式
取得単価(円)の丸め
為替レート
外貨
決済1.約定金額(円貨)=約定金額(外貨)×為替レート
小数点
切捨て国内約定日の当社適用TTSレート
2.取得費(円)=約定金額(円貨)+国内手数料(円)+消費税(円)
3.取得単価(円)=取得費(円)÷数量
小数点
切上げ円貨
決済1.約定金額(円貨)=約定金額(外貨)×為替レート
小数点
切捨て国内約定日の適用レート
2.取得費(円)=約定金額(円貨)+国内手数料(円)+消費税(円)
3.取得単価(円)=取得費(円)÷数量
小数点
切上げ
各取引ごとには1円未満切り捨てをするようなので、取引ごとに計算した数値を買い増しで足していき、手じまい時には「平均取得価格」(小数点切上げ)を出してからポジション数をかけて、損益計算し、残ったポジションは「平均取得価格」×残ポジション数で積んでいくようにします。
取引の計算手順2
日付を関数で文字列から日付値に変えてあげる項目を作り、
Date | Date | Transaction | Quantity | Description | Symbol | AcctType | Price | Amount | 前残量 | 今回残量 | 変化 | 為替 | 今回価格 | 今回単価 | 前回取得価格 | 取得価格合計 | 平均取得価格 | ||
0 | 12/29/2020 | 2020/12/29 | Bought | 20 | AMERICAN BATTERY METALS CORPORATION COMMON STOCK INTERNET ORDER UNSOLICITED | ABML | Margin | 1.41 | -28.2 | 0 | 20 | 建て増し | 104.82 | -2955 | -147 | 0 | -2955 | -148 | FALSE |
1 | 01/05/2021 | 2021/1/5 | Bought | 20 | AMERICAN BATTERY METALS CORPORATION COMMON STOCK INTERNET ORDER UNSOLICITED | ABML | Margin | 0.935 | -18.7 | 20 | 40 | 建て増し | 104.15 | -1947 | -97 | -2955 | -4902 | -123 | FALSE |
3 | 01/05/2021 | 2021/1/5 | Bought | 10 | AMERICAN BATTERY METALS CORPORATION COMMON STOCK INTERNET ORDER UNSOLICITED | ABML | Margin | 0.83 | -8.3 | 40 | 50 | 建て増し | 104.15 | -864 | -86 | -1947 | -5766 | -116 | FALSE |
49 | 01/28/2021 | 2021/1/28 | Sold | -50 | AMERICAN BATTERY METALS CORPORATION COMMON STOCK INTERNET ORDER UNSOLICITED | ABML | Margin | 3.09 | 154.49 | 50 | 0 | 手仕舞い | 103.27 | 15954 | 319 | -864 | 0 | -116 | 10150 |
154 | 03/15/2021 | 2021/3/15 | Bought | 5 | AMEREN CORP INTERNET ORDER UNSOLICITED | AEE | Margin | 78.6893 | -393.45 | 0 | 5 | 建て増し | 110.06 | -43303 | -8660 | 0 | -43303 | -8661 | FALSE |
206 | 05/26/2021 | 2021/5/26 | Sold | -5 | AMEREN CORP INTERNET ORDER UNSOLICITED | AEE | Margin | 83.7007 | 418.49 | 5 | 0 | 手仕舞い | 107.75 | 45092 | 9018 | -43303 | 0 | -8661 | 1785 |
こんな感じで出来上がりました。オプションも取引額を基にして作成しているため、問題なく計算できそうです。
今回価格、として今回の取引額を記載します。=ROUNDDOWN(N15*J15,0)
今回の取引単価も毎回計算しておきます。=ROUNDDOWN(O15/ABS(E15),0)
前回取得価格は必要ないですが、計算されていると別銘柄かどうかが見やすいので計算しておきます。=IF(K15=0, 0,O14)
取得価格合計として、今回の取引で手仕舞いだった場合には前回計算した取引単価(今回のも同じになるので同じでもいいかも)に残る価格をかけておきます。そうでない場合には今回と前回の取引価格合計を合算します。=IF(K15=0,O15,IF(ABS(L15)-ABS(K15)>0,O15+R14,S14*L15))
平均取得価格は、今回の取引価格合計を残ったポジション数で割りますが、前回よりもポジションが減少した場合(手仕舞いしている際)には前回の計算のまま維持します。=IF(ABS(L15)-ABS(K15)>0, ROUNDUP(R15/ABS(L15),0), S14)
最後の損益計算は、絶対値だけを用いると配当や信用取引利息がおかしなことになりそうなので、前に計算した取引種別を参照します。=IF(M15=”手仕舞い”, (P15+S15)*ABS(E15))
コメント