雑所得と税率との関係
雑所得から税率を計算する計算式って、複雑ですよね
直感ではいくらか分からないし、説明するチャートもネット上にはどこにも無い
無かったら作っちゃえということで作ってみました
特にビットコインの利益とか雑所得でしょ
この前のYoutubeの動画で(2、3回前か?)、Dan Takahashiがビットコインは必ずこれから10倍になるとコイン価格の過去チャートを出して力説していましたが、税金気になりますよね
日本ではまだ、ETFは承認されてないし(申請されてるのかさえ知りませんが)
所得税 max45%(累進課税), 住民税 10% とか言われますが、累進だったら利益いくらで何%になるのと調べたのですが、チャートはネット上に見つかりません。探し方悪かったのか。
出てくるのは、複雑な計算式のみ
じゃあ、作っちゃえとゴニョゴニョやった結果を張り出しますね
横軸は利益(100万円〜100億、対数表示)、縦軸は税率(所得税+住民税)となります
あと、ここで言う利益とは、他の雑所得収入との合計なので、その点も注意してください。
あくまでも目安に
大きな額を売却する時は税理士さんに相談したほうが良いかと思います
あと申告しないで見つかった場合、追徴で5%〜20%上乗せされるようなので、注意しましょう
またチャートでは100万からとしていますが、10万でも(千円以上だったら)税率15%(所得税 5%, 住民税 10%)です
あと、このプログラムで使用しているチャートのライブラリは日本語を受け付けないので英語表記で書きました
結論:
インデックス投資もそうですが、一度に下ろすな、必要分だけ利確しろということですね
ビットコインからイーサリアムに乗り換えるときもそうです
一度売却しちゃうので、この税率が適用されます
最後に:
普段はFACEBOOKで活動しています
毎日の米国インデックス指数の市場結果とか、気になる内容を発信しています
こちらもよろしくお願いします
毎日記事を書いてるFACEBOOKのグループ:
★FIREを目指す人達の為の投資コミュニティー 代替投資/現代ART/海外積立FUND/現物投資/株式投資/NFT/不動産投資/海外移住
import numpy as np
import matplotlib.pyplot as plt
# 利益額の範囲(100万円から10億円)
profits = np.logspace(6, 10, num=500) # 対数スケールでの利益額
# 累進課税に基づいた所得税率計算の関数
def calculate_income_tax_rate(profit):
tax_brackets = [
(1950000, 0.05),
(3300000, 0.10),
(6950000, 0.20),
(9000000, 0.23),
(18000000, 0.33),
(40000000, 0.40),
(float('inf'), 0.45)
]
income_tax = 0
previous_limit = 0
for limit, rate in tax_brackets:
if profit <= limit:
income_tax += (profit - previous_limit) * rate
break
else:
income_tax += (limit - previous_limit) * rate
previous_limit = limit
return income_tax / profit
# 税率計算
income_tax_rates = np.array([calculate_income_tax_rate(profit) for profit in profits])
resident_tax_rate = 0.10 # 一律10%
# 合計税率
total_tax_rates = (income_tax_rates + resident_tax_rate) * 100 # パーセント表示に変換
# プロット
plt.figure(figsize=(10, 6))
plt.plot(profits, total_tax_rates, label='Income tax + inhabitant tax rate', color='b')
plt.xscale('log')
plt.xlabel('Profit (yen)')
plt.ylabel('Tax rate (%)')
plt.title('Change in tax rate on the amount of profit on miscellaneous income')
plt.grid(True, which="both", ls="--")
# x軸の目盛りを設定(対数軸の場合の主要目盛り)
ticks = [1e6, 1e7, 1e8, 1e9, 1e10]
tick_labels = ['1M', '10M', '100M', '1B', '10B']
plt.xticks(ticks, tick_labels)
# 目盛りラベルのフォーマット設定
plt.gca().get_xaxis().set_major_formatter(plt.FuncFormatter(lambda x, _: '{:,.0f}'.format(x)))
plt.legend()
plt.show()