総平均法に準ずる方法における「実利益≧税法上の利益」の証明
#数学#端数処理#シミュレーター#株式#税金
定義一覧
- pn:株価(約定価格)
- rn:売買株数
- sn=∑rk:約定後保有株数
- bn=pnrn:当日の売買金額
- qn:税法上の平均取得価格
- gn:当日の税法上の利益
特定口座で株式を売買するとき,売却時には「総平均法に準ずる方法」で税法上の利益が計算されます.
本記事では,この計算方法で余計な税金が発生しないことを解説します.
具体的には,
- 実際の利益:全株売却時点での総売却金額-総買付金額
- 税法上の利益:全株売却時点での税法上の利益の和
としたとき,常に「実際の利益≧税法上の利益」となることを数学的に証明します.
記号
ここでは簡単のため,ある株式を1営業日あたり高々1回売買すると仮定します.また手数料は無料とします.
- 取引日1:初めて株を購入した営業日
- 取引日 n (≥2):取引日 n−1 の次に売買があった営業日
とします(売買日のみ注目して番号付け).
また各 n (≥1) に対し,取引日 n における記号を定めます:
- pn :株価(約定価格)
- rn :売買株数( r1>0 ,売却なら rn<0 )
- sn=∑1≤k≤nrk :約定後の保有株数( sn≥0 )
- bn=pnrn :当日の売買金額
- 初日は必ず買い:b1>0
- 売却なら負:bn<0
- qn :約定後の税法上の平均取得価格(計算式は後述)
- gn :当日発生した税法上の利益(計算式は後述)
まとめると「 n 日目に株価 pn で rn 株売買したら,保有株数 sn ,平均取得価格 qn になり, gn 円の税法上の利益が発生した」と言えます.
総平均法に準ずる方法(税法上の平均取得価格・利益の計算)
「総平均法に準ずる方法」による平均取得価格 qn や日次利益 gn は次のように計算されます.
計算例と利益の観察
簡単な例として,5回の売買ですべて売却する場合の計算例を次の表に示します.
| n | pn | rn | sn | bn | qn | gn |
|---|
| 1 | 6 | 2 | 2 | 12 | p1=6 | 0 |
| 2 | 3 | 4 | 6 | 12 | s2q1s1+p2r2=624=4 | 0 |
| 3 | 2 | −3 | 3 | −6 | ceil(q2)=4 | (p3−q3)(−r3)=−6 |
| 4 | 1 | 7 | 10 | 7 | s4q3s3+p4r4=1019=1.9 | 0 |
| 5 | 4 | −10 | 0 | −40 | ceil(q4)=2 | (p5−q5)(−r5)=20 |
この例から実際の利益と税法上の利益を計算します.
-
実際の利益
- 保有株数 sn が 0 になった日までの −bn の和から求められます
(bn は買付で出ていく金額なので −bn は入ってくる金額を表します).
- 例では,−(b1+b2+⋯+b5)=15 円です.
-
税法上の利益
- 保有株数 sn が 0 になった日までの gn の和から求められます
(gn は日次利益を表します).
- 例では,g3+g5=14 円です.
以上より,税法上の利益の方が小さくなりました(切り上げがなければ両者一致).
このことから,株をすべて売却した取引日において,「実際の利益≧税法上の利益」となることが予想できます.
これが成り立てば,実際より多くの税金を取られないことを保証できます.
シミュレーター
総平均法に準ずる方法による利益と実際の利益を比較するためのシミュレーターを作りました.
保有株数が 0 になるまでの取引を自由に入力でき,利益の比較ができます.
総平均法に準ずる方法 シミュレーター
| 番号n | 株価p | 株数r | 保有株数s | 売買金額b | 平均価格q | 税法上利益g | 操作 |
|---|
| 1 | 1 | +10000 | 10000 | 10000 | 1 | 0 | |
| 2 | 2 | +1 | 10001 | 2 | 1.0001 | 0 | |
| 3 | 3 | -1 | 10000 | -3 | 2 | 1 | |
| 4 | 4 | +1 | 10001 | 4 | 2.0002 | 0 | |
| 5 | 5 | -1 | 10000 | -5 | 3 | 2 | |
| 6 | 5 | +1 | 10001 | 5 | 3.0002 | 0 | |
| 7 | 6 | -1 | 10000 | -6 | 4 | 2 | |
| 8 | 6 | -10000 | 0 | -60000 | 4 | 20000 | |
✅ 検証成功:実利益 ≧ 税法上の利益
実際の総損益: 50003 円
税法上の総利益: 20005 円
「実際の利益≧税法上の利益」の証明
先ほどの主張をより厳密に書きます.
各 n (≥2) に対して以下が成り立つ:
- 売買株数列 r1,…,rn−1 と株価列 p1,…,pn が与えられているとし,取引日 n にそれまで保有していた sn−1 株を全売却したと仮定する.
- このとき実際の利益を Fn ,税法上の利益を Gn とすると, Fn≥Gn となる.
証明
(方針:n に関する数学的帰納法)
まず,Fn と Gn は以下のように書けます:
- 実際の利益:Fn=pnsn−1−1≤k≤n−1∑bk
- n−1 日目までに ∑1≤k≤n−1bk 円支出しており,n 日目に pnsn−1 円手元に戻るため
- 税法上の利益:Gn=(pn−ceil(qn−1))sn−1+1≤k≤n−1∑gk
- n−1 日目までに ∑1≤k≤n−1gk 円利益確定しており,n 日目に平均取得価格 ceil(qn−1) 円で sn−1 株売るため
rn=−sn−1 とするのが自然ですが,上記の式は rn を一切用いていません.これは帰納法を使うためです.
もし全売却を rn=−sn−1 と表現すると,帰納法において前日の取引日 n−1 で sn−2 株を全売却する仮定することと rn−1=−sn−2 は同値となり,列 r1,…,rn−1 の一般性を失います.
Fn≥Gn を直接示しても良いですが,ここでは切り上げを無視した場合の平均取得価格 qk′ や日次利益 gk′ を導入します:
- 取引日1: q1′=p1 , g1′=0
- 取引日 k (2≤k≤n−1):
- qk′=⎩⎨⎧skqk−1′sk−1+pkrkqk−1′if rk>0if rk<0
- gk′={0(pk−qk′)⋅(−rk)if rk>0if rk<0
- ⇒ 切り上げを無視した利益: Gn′=(pn−qn−1′)sn−1+∑1≤k≤n−1gk′
切り上げの有無から明らかに qk′≤qk なので, gk′≥gk , Gn′≥Gn となります.
以下では( Fn≥Gn′ よりも強い主張として) Fn=Gn′ を数学的帰納法で示します.
n=2 のとき
s1=r1 , q1′=p1 より,
- F2=p2s1−b1=p2r1−p1r1=(p2−p1)r1
- G2′=(p2−q1′)s1+g1′=(p2−p1)r1
なので, F2=G2′ となり, n=2 のとき主張が成り立ちます.
n≥3 のとき
各 n (≥3) に対し, Fn−1=Gn−1′ が成り立つと仮定します.
最終的には Fn=Gn′ を示しますが,途中で2つの補助的な式を導出します.
[A] n≥3 のとき, Fn=Fn−1+(pn−pn−1)sn−1
FnFn−1=pnsn−1−bn−1−1≤k≤n−2∑bk=(pnsn−1−pn−1rn−1)−1≤k≤n−2∑bk=pn−1sn−2−1≤k≤n−2∑bkより,
Fn−Fn−1=(pnsn−1−pn−1rn−1)−pn−1sn−2=pnsn−1−pn−1(rn−1+sn−2)=pnsn−1−pn−1sn−1=(pn−pn−1)sn−1
[B] n≥3 のとき,Gn′=Gn−1′+(pn−pn−1)sn−1
Gn′Gn−1′Gn′−Gn−1′=(pn−qn−1′)sn−1+gn−1′+1≤k≤n−2∑gk′=(pn−1−qn−2′)sn−2+1≤k≤n−2∑gk′=(pn−qn−1′)sn−1+gn−1′−(pn−1−qn−2′)sn−2です.ここから rn−1 の正負で場合分けします.
rn−1>0 のとき,qn−1′=sn−1qn−2′sn−2+pn−1rn−1,gn−1′=0より,
Gn′−Gn−1′=(pn−sn−1qn−2′sn−2+pn−1rn−1)sn−1+0−(pn−1−qn−2′)sn−2=(pnsn−1−qn−2′sn−2−pn−1rn−1)−pn−1sn−2+qn−2′sn−2=pnsn−1−pn−1(rn−1+sn−2)=pnsn−1−pn−1sn−1=(pn−pn−1)sn−1rn−1<0 のとき,qn−1′=qn−2′,gn−1′=(pn−1−qn−1′)⋅(−rn−1)=−(pn−1−qn−2′)rn−1 より,
Gn′−Gn−1′=(pn−qn−2′)sn−1−(pn−1−qn−2′)rn−1−(pn−1−qn−2′)sn−2=pnsn−1−qn−2′sn−1−pn−1rn−1+qn−2′rn−1−pn−1sn−2+qn−2′sn−2=pnsn−1+qn−2′(−sn−1+rn−1+sn−2)−pn−1(rn−1+sn−2)=pnsn−1−pn−1sn−1=(pn−pn−1)sn−1
最後に,式[A]から式[B]を辺々引くと Fn−Gn′=Fn−1−Gn−1′ が得られますが,
帰納法の仮定からこの右辺は 0 となります.
よって Fn=Gn′ となり,n (≥3) に対する主張も成り立ちます.(証明終了)
補足
本記事では簡単のため,ある株式を1営業日あたり高々1回売買,手数料を無料と仮定しましたが,次のような拡張も考えられます.
その日の約定時刻を問わず,買注文を先,売注文を後に並べ直して処理します(このとき n は取引日でなく処理番号と呼ぶべきでしょう).
例:
- 初日の約定順:a(100株買),b(200株買)
- 次日の約定順:c(300株売),d(400株買)
のとき,処理順序は a( r1=100 ), b( r2=200 ), d( r3=400 ), c( r4=−300 )となります(または b,a,d,c でもよく,計算結果も一致).
参考:https://www.smbcnikko.co.jp/service/tax_sys/qa/index.html#anc-07
取引 n で売買手数料 cn (≥0) が発生するとき,各記号を以下のように拡張すれば良いです
- bn=pnrn+cn
- qn=⎩⎨⎧snqn−1sn−1+pnrn+cnceil(qn−1)if rn>0if rn<0
- gn={0(pn−qn)⋅(−rn)−cnif rn>0if rn<0
※この定義の下では「実際の利益≧税法上の利益」となるかは改めて議論が必要です.
参考:https://www.jtg-sec.co.jp/bluesky_net/tokutei/tokutei7.htm
おわりに
税法上の利益と実際の利益は当然(ほぼ)等しくなるべきですが,今回それが数学的にわかり安心しました.
本記事の証明は帰納法を使った長いものですが,もっと簡単に証明できる可能性もあります.
ご意見いただければ幸いです.ご覧いただきありがとうございました.