記事「年金は、物価と同じだけ上がっているのか?」の数字の計算です。年表の値は厚生労働省の報道発表から読み、Python で積み上げと分け方、月額への当てはめを計算しました。
コードには、厚生労働省の報道発表PDFの原本(この公開には含めていません)を読む部分があります。表は各コードの出力です。「★」の付いた表は、分け方を決める途中の出力です。記事の数字は「引き直し」「1本目」の表のとおりです。
"""#30 空欄3・4:年金額改定の年表の並べと積み上げ。入力=Issue #30 本文の年表(検証官 合格)。金額は raw/ の厚労省 PDF p1 から機械的に読む(外部照合)。"""
import glob, os, re, pypdf
from math import prod
R = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "raw")
# 年度: (物価%, 名目手取り賃金%, 調整率表示%, スライド, 決め手, 改定率 新規%, 改定率 既裁定%)
T = [
("H27", 2.7, 2.3, -0.9, "発動", "賃金(+特例水準の解消▲0.5)", 0.9, 0.9),
("H28", 0.8, -0.2, -0.7, "調整なし", "スライドなし(据え置き)", 0.0, 0.0),
("H29", -0.1, -1.1, -0.5, "調整なし", "物価", -0.1, -0.1),
("H30", 0.5, -0.4, -0.3, "調整なし・繰越▲0.3", "スライドなし(据え置き)", 0.0, 0.0),
("R1", 1.0, 0.6, -0.2, "発動(繰越▲0.3を含め調整)", "賃金", 0.1, 0.1),
("R2", 0.5, 0.3, -0.1, "発動", "賃金", 0.2, 0.2),
("R3", 0.0, -0.1, -0.1, "調整なし・繰越▲0.1", "賃金", -0.1, -0.1),
("R4", -0.2, -0.4, -0.3, "調整なし(繰越▲0.1+当年▲0.2)", "賃金", -0.4, -0.4),
("R5", 2.5, 2.8, -0.3, "発動(繰越▲0.3を含め▲0.6)", "新規=賃金/既裁定=物価", 2.2, 1.9),
("R6", 3.2, 3.1, -0.4, "発動", "賃金", 2.7, 2.7),
("R7", 2.7, 2.3, -0.4, "発動", "賃金", 1.9, 1.9),
("R8", 3.2, 2.1, -0.2, "発動(厚年▲0.1)", "賃金", 1.9, 1.9), # 基礎年金。厚年(報酬比例)は2.0
]
out = []; P = out.append
P("## 1. 年度ごとの表(%)")
P("| 年度 | 物価 | 名目手取り賃金 | 調整率(表示) | スライド | 決め手 | 改定率(新規裁定者) | 改定率(既裁定者) |")
P("|---|---|---|---|---|---|---|---|")
for y, p, w, a, s, d, n, e in T: P(f"| {y} | {p} | {w} | {a} | {s} | {d} | {n} | {e} |")
P("- 発動の年:" + "・".join(y for y, *r in T if r[3].startswith("発動")) + f"({sum(1 for t in T if t[4].startswith('発動'))}回。報道発表 R7 p3「計6回」+R8=7回と一致)")
P("- 決め手の内訳:物価 %d/賃金 %d/新規賃金・既裁定物価 %d/据え置き %d" % tuple(sum(1 for t in T if t[5].startswith(k)) for k in ("物価", "賃金", "新規", "スライドなし")))
P("- R8 は基礎年金 1.9%・厚生年金(報酬比例部分)2.0%。下の積み上げは基礎年金の率(国民年金の満額の月額で照合するため)。")
P("- H27 の改定率 0.9 = 賃金 2.3 − 調整 0.9 − 特例水準の解消 0.5(年金部会資料 p19)。")
# 検算:改定率 ≈ 決め手 − 調整(加算)
P("\n## 検算(表の中の整合)")
chk = {"H27": 2.3 - 0.9 - 0.5, "R1": 0.6 - 0.2 - 0.3, "R2": 0.3 - 0.1, "R5新規": 2.8 - 0.6, "R5既": 2.5 - 0.6, "R6": 3.1 - 0.4, "R7": 2.3 - 0.4, "R8基礎": 2.1 - 0.2}
for k, v in chk.items(): P(f"- {k}: {v:.1f}")
# 積み上げ
def cum(rates): return prod(1 + r / 100 for r in rates)
def rows(sl): return [t for t in T if sl(t[0])]
P("\n## 2. 積み上げ(各年の率を掛け合わせる。%=(積−1)×100)")
def pct(x): return (x - 1) * 100
wins = {"H27〜R8(12年度分)": lambda y: True, "H28〜R8(11年度分)": lambda y: y != "H27"}
P("| 期間 | 物価変動率の累積 | 年金の改定率の累積(新規裁定者) | 年金の改定率の累積(既裁定者) | 新規−物価(pt) | 既裁定−物価(pt) |")
P("|---|---|---|---|---|---|")
res = {}
for nm, f in wins.items():
rr = rows(f)
c_p = cum([t[1] for t in rr]); c_n = cum([t[6] for t in rr]); c_e = cum([t[7] for t in rr])
res[nm] = (c_p, c_n, c_e)
P(f"| {nm} | {pct(c_p):.2f}%({c_p:.4f}倍) | {pct(c_n):.2f}%({c_n:.4f}倍) | {pct(c_e):.2f}%({c_e:.4f}倍) | {pct(c_n)-pct(c_p):.2f} | {pct(c_e)-pct(c_p):.2f} |")
P("- 参考(単純合計、掛け合わせない)H28〜R8:物価 " + f"{sum(t[1] for t in rows(wins['H28〜R8(11年度分)'])):.1f}" + "%、新規 " + f"{sum(t[6] for t in rows(wins['H28〜R8(11年度分)'])):.1f}" + "%、既裁定 " + f"{sum(t[7] for t in rows(wins['H28〜R8(11年度分)'])):.1f}%")
P(f"- R8 が厚生年金(報酬比例部分 2.0%)の場合、H28〜R8 の新規裁定者の累積は {pct(cum([t[6] if t[0]!='R8' else 2.0 for t in rows(wins['H28〜R8(11年度分)'])])):.2f}%(基礎年金 {pct(res['H28〜R8(11年度分)'][1]):.2f}%)")
# 年ごとの累積の並び
P("\n年ごとの累積(H28を起点=1.0000、新規裁定者/既裁定者/物価):")
c = [1, 1, 1]
for t in T[1:]:
c = [c[0] * (1 + t[6] / 100), c[1] * (1 + t[7] / 100), c[2] * (1 + t[1] / 100)]
P(f"- {t[0]}:新規 {c[0]:.4f}/既裁定 {c[1]:.4f}/物価 {c[2]:.4f}")
# 外部照合:国民年金満額の月額
P("\n## 3. 外部照合:厚労省 報道発表 p1 の国民年金(老齢基礎年金 満額1人分)の月額と、改定率の累積")
def amounts(pat):
f = sorted(glob.glob(os.path.join(R, pat)))[0]
t = pypdf.PdfReader(f).pages[0].extract_text().replace(" ", "").replace("\n", "")
i = t.find("満額):1人分)")
nums = re.findall(r"([\d,]{5,7})円", t[i:i + 120])
return [int(x.replace(",", "")) for x in nums[:2]], f
A = {}
for y, pat in [("H28", "mhlw_年金額改定_H28_*"), ("H29", "mhlw_年金額改定_H29_*"), ("H30", "mhlw_年金額改定_H30_*"), ("R1", "mhlw_年金額改定_H31R1_*"), ("R2", "mhlw_年金額改定_R2_*"), ("R3", "mhlw_年金額改定_R3_*"), ("R4", "mhlw_年金額改定_R4_*"), ("R5", "mhlw_年金額改定_R5_*"), ("R6", "mhlw_年金額改定_R6_*"), ("R7", "mhlw_年金額改定_R7_*"), ("R8", "mhlw_令和8年度*")]:
A[y] = amounts(pat)[0]
A["H30"] = (A["H29"][1], A["H30"][0]) # H30 の報道発表は当年度の1列だけ(64,941)。前年度欄は H29 の当年度欄を使う
prev = None
P("| 年度 | 前年度(月額) | 当年度(月額) | 月額の増減率 | 表の改定率(新規) | 差(pt) |")
P("|---|---|---|---|---|---|")
for t in T[1:]:
a0, a1 = A[t[0]]
if a0 is None: continue
g = (a1 / a0 - 1) * 100
P(f"| {t[0]} | {a0:,} | {a1:,} | {g:.3f}% | {t[6]} | {g - t[6]:+.3f} |")
base = A["H28"][0]; end = A["R8"][1]
c_n = res["H28〜R8(11年度分)"][1]
P(f"\n月額のつながり:H27年度の月額 {base:,}円(H28 p1の前年度欄)→ R8年度 {end:,}円 = {(end/base-1)*100:.2f}%(新規裁定者・基礎年金)。改定率の累積(H28〜R8){pct(c_n):.2f}%との差 {((end/base-1)*100 - pct(c_n)):+.2f}pt。")
P(f"既裁定者(H28〜R8)の月額 65,008→70,408 = {(70408/65008-1)*100:.2f}%。改定率の累積(既裁定者){pct(res['H28〜R8(11年度分)'][2]):.2f}%との差 {((70408/65008-1)*100 - pct(res['H28〜R8(11年度分)'][2])):+.2f}pt(R4までは新規と同じ月額)")
P("年度ごとの月額の連鎖(前年度欄=前の年度の当年度欄)が全年で一致するか:" + str(all(A[T[i][0]][0] == A[T[i-1][0]][1] for i in range(2, len(T))) if True else ""))
for y0, y1 in zip([t[0] for t in T[1:-1]], [t[0] for t in T[2:]]):
if A[y1][0] != A[y0][1]: P(f" ・連鎖が切れる:{y0}の当年度欄 {A[y0][1]:,} ≠ {y1}の前年度欄 {A[y1][0]:,}")
# 既裁定:R5 以降の昭和31年4月1日以前生まれの月額(脚注)
P("\n既裁定者の月額(報道発表 p1 の脚注。R5=既裁定者(68歳以上)、R6〜R8=昭和31年4月1日以前生まれ):R4 64,816 → R5 66,050 → R6 67,808 → R7 69,108 → R8 70,408")
ex = [64816, 66050, 67808, 69108, 70408]
P(f"月額の増減率(R4→R8)={(ex[-1]/ex[0]-1)*100:.2f}%。改定率の累積(R5〜R8、既裁定者)={pct(cum([t[7] for t in T[8:]])):.2f}%、(新規裁定者)={pct(cum([t[6] for t in T[8:]])):.2f}%、新規裁定者の月額(64,816→70,608)={(70608/64816-1)*100:.2f}%")
P("年ごとの既裁定者の月額の増減率:" + ", ".join(f"{a}→{b}: {(b/a-1)*100:.2f}%" for a, b in zip(ex, ex[1:])))
print("\n".join(out))
open("out_計算結果_2026-09-30.md", "w").write("\n".join(out))
"""#30 骨格★:(1) H28〜R8 11回の決め手の数 (2) 積み上げの差(改定率の累積 − 物価の累積)を ①物価と使われた賃金の差 ②調整 ③据え置き に分ける。
入力=calc.py と同じ年表(Issue #30 本文の検証官合格の表)。各年の改定率 r = 決め手の率 base − 適用された調整 adj(発動の年)、据え置きの年は r=0。"""
import itertools, os
from math import prod, log
# 年度: (物価p, 賃金w, 決め手(新規), 決め手(既裁定), r新規, r既裁定) %。H28〜R8 のみ(H27 は起点の外)
T = [("H28", 0.8, -0.2, "据", "据", 0.0, 0.0), ("H29", -0.1, -1.1, "物価", "物価", -0.1, -0.1), ("H30", 0.5, -0.4, "据", "据", 0.0, 0.0),
("R1", 1.0, 0.6, "賃金", "賃金", 0.1, 0.1), ("R2", 0.5, 0.3, "賃金", "賃金", 0.2, 0.2), ("R3", 0.0, -0.1, "賃金", "賃金", -0.1, -0.1),
("R4", -0.2, -0.4, "賃金", "賃金", -0.4, -0.4), ("R5", 2.5, 2.8, "賃金", "物価", 2.2, 1.9), ("R6", 3.2, 3.1, "賃金", "賃金", 2.7, 2.7),
("R7", 2.7, 2.3, "賃金", "賃金", 1.9, 1.9), ("R8", 3.2, 2.1, "賃金", "賃金", 1.9, 1.9)]
out = []; P = out.append
P("# #30 骨格★(計算検証役 2026-09-30)")
P("## 1. H28〜R8 の11回の決め手の数(年表の「決め手」欄から数えた)")
for lab, col in (("新規裁定者", 3), ("既裁定者", 4)):
n = {k: [t[0] for t in T if t[col] == k] for k in ("賃金", "物価", "据")}
P(f"- {lab}:賃金 {len(n['賃金'])}({'・'.join(n['賃金'])})/物価 {len(n['物価'])}({'・'.join(n['物価'])})/スライドなし(据え置き){len(n['据'])}({'・'.join(n['据'])})=計 {sum(len(v) for v in n.values())}")
P("- 新規と既裁定で決め手が違うのは R5 だけ(新規=賃金・既裁定=物価)。まとめて書くと:賃金 7/物価 1/R5 は新規=賃金・既裁定=物価/据え置き 2。calc.py の12年度の数(賃金 8・物価 1・R5 1・据え置き 2)から H27(賃金)を外した数と一致")
P("- 発動(調整が掛かった)年:R1・R2・R5・R6・R7・R8 の6回(H27 を含む12年度では7回)")
def stage_rates(t, who):
y, p, w, dn, de, rn, re_ = t; d = dn if who == 0 else de; r = rn if who == 0 else re_
base = w if d == "賃金" else p if d == "物価" else p # 据え置きの年は ① では動かさない
r1 = base # ① 物価→決め手の率
r2 = r if d != "据" else base # ② 調整(発動の年 r=base−adj。調整なしの年は r=base で動かない)
r3 = r # ③ 据え置きの年を 0 に
return p, {"①": base, "②": (r if d != "据" else base), "③": (0.0 if d == "据" else None)}, r, d
def path(who, on):
rates = []
for t in T:
y, p, w, dn, de, rn, re_ = t; d = dn if who == 0 else de; r = rn if who == 0 else re_
base = w if d == "賃金" else p
x = p
if d == "据":
x = 0.0 if "③" in on else p
else:
adj = base - r # 適用された調整(発動でない年は0)
x = (base if "①" in on else p) - (adj if "②" in on else 0.0)
rates.append(x)
return (prod(1 + x / 100 for x in rates) - 1) * 100
for who, lab in ((1, "既裁定者"), (0, "新規裁定者")):
P(f"\n## 2. 差の分け方:{lab}(H28〜R8)")
p_cum = path(who, set()); r_cum = path(who, {"①", "②", "③"})
P(f"物価の累積 {p_cum:.2f}% − 改定率の累積 {r_cum:.2f}% = {p_cum - r_cum:.2f}ポイント(表の丸めの範囲で calc.py と一致)")
P("\n年ごとの分け(%ポイント。各年の 改定率 − 物価 = ① 決め手の率−物価 + ② −調整 + ③ 据え置きで0にした分):")
P("| 年度 | 物価 | 決め手 | 決め手の率 | 適用された調整 | 改定率 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 |"); P("|---|---|---|---|---|---|---|---|---|---|")
for t in T:
y, p, w, dn, de, rn, re_ = t; d = dn if who == 0 else de; r = rn if who == 0 else re_
if d == "据": a = b = 0.0; c = r - p; base = None; adj = None
else:
base = w if d == "賃金" else p; adj = base - r; a = base - p; b = -adj; c = 0.0
P(f"| {y} | {p:+.1f} | {d if d!='据' else 'スライドなし'} | {'' if base is None else f'{base:+.1f}'} | {'' if adj is None else f'{adj:.1f}'} | {r:+.1f} | {a:+.1f} | {b:+.1f} | {c:+.1f} | {a+b+c:+.1f} |")
# 順番別(掛け算の順)
res = {}
for order in itertools.permutations(["①", "②", "③"]):
on = set(); prev = p_cum; contrib = {}
for k in order:
on.add(k); cur = path(who, on); contrib[k] = prev - cur; prev = cur # 積み上げが下がった分(=差に足される分)
res[order] = contrib
P("\n積み上げの差(ポイント)を3つに分けた値。掛け算なので、どれを先に外すかで変わる(6通り):")
P("| 順番 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 |"); P("|---|---|---|---|---|")
for o, c in res.items(): P(f"| {'→'.join(o)} | {c['①']:.2f} | {c['②']:.2f} | {c['③']:.2f} | {sum(c.values()):.2f} |")
for k in ("①", "②", "③"):
v = [c[k] for c in res.values()]; P(f"- {k}:最小 {min(v):.2f}〜最大 {max(v):.2f}(6通りの平均 {sum(v)/6:.2f})")
# 対数での分け(順番によらない)
L = {"①": 0.0, "②": 0.0, "③": 0.0}
for t in T:
y, p, w, dn, de, rn, re_ = t; d = dn if who == 0 else de; r = rn if who == 0 else re_
if d == "据": L["③"] += log((1 + r / 100) / (1 + p / 100))
else:
base = w if d == "賃金" else p
L["①"] += log((1 + base / 100) / (1 + p / 100)); L["②"] += log((1 + r / 100) / (1 + base / 100))
tot = sum(L.values()); gap = p_cum - r_cum
P("\n順番によらない分け方(各年の 改定率÷物価 の対数を①②③に分けて足し、差 %.2f ポイントを対数の比で按分):" % gap)
P("| ①物価と使われた賃金の差 | ②調整 | ③据え置き |"); P("|---|---|---|")
P("| " + " | ".join(f"{gap * L[k] / tot:.2f}({L[k]/tot*100:.0f}%)" for k in ("①", "②", "③")) + " |")
open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "out_骨格★_決め手の数と差の分け方_2026-09-30.md"), "w", encoding="utf-8").write("\n".join(out))
print("\n".join(out))
# ---- ★ 骨格改定1(#issuecomment-5911260282):賃金の積み上げ・賃金<物価の回数・厚生年金(報酬比例)の積み上げ ----
def cum(x): return (prod(1 + v / 100 for v in x) - 1) * 100
W = [t[2] for t in T]; Pp = [t[1] for t in T]
out2 = ["# #30 骨格 改定1 ★(計算検証役 2026-09-30)入力=年表(decompose.py の T)",
f"- 賃金の伸び(名目手取り賃金変動率)の積み上げ H28〜R8:{cum(W):.2f}%({prod(1+v/100 for v in W):.4f}倍)。単純合計 {sum(W):.1f}%。物価の積み上げ {cum(Pp):.2f}%",
f"- 賃金 < 物価の回数:{sum(1 for t in T if t[2] < t[1])}/11(賃金 ≥ 物価:" + "・".join(f"{t[0]}(賃金{t[2]:+.1f}・物価{t[1]:+.1f})" for t in T if t[2] >= t[1]) + ")",
" - 賃金 < 物価の年:" + "・".join(f"{t[0]}" for t in T if t[2] < t[1])]
rn = [t[5] for t in T]; re_ = [t[6] for t in T]
kn = [2.0 if t[0] == "R8" else t[5] for t in T]; ke = [2.0 if t[0] == "R8" else t[6] for t in T]
out2 += ["", "## 厚生年金(報酬比例部分)の改定率の積み上げ H28〜R8(R8 だけ 2.0%、ほかの年は基礎年金と同じ率)",
f"- 1956年4月1日以前に生まれた人(既裁定):{cum(ke):.2f}%(基礎年金の系列 {cum(re_):.2f}%、差 {cum(ke)-cum(re_):+.2f})",
f"- それより後に生まれた人(新規):{cum(kn):.2f}%(基礎年金の系列 {cum(rn):.2f}%、差 {cum(kn)-cum(rn):+.2f})",
f"- 物価の積み上げ {cum(Pp):.2f}%との差(報酬比例):既裁定 {cum(ke)-cum(Pp):+.2f}/新規 {cum(kn)-cum(Pp):+.2f} ポイント(基礎年金は {cum(re_)-cum(Pp):+.2f}/{cum(rn)-cum(Pp):+.2f})",
"- 根拠:報道発表 R8 p1 に『厚生年金(報酬比例部分)が2.0%』(基礎年金は1.9%)。H28・R7 の報道発表は率を1つだけ載せる(R7 p1『1.9%の引上げ』)。**ほかの年(H29〜R6)の報道発表の文言で、厚年と基礎の率が同じかは、私は年表の値を使っており報道発表の本文までは見ていない**(検証官の年表が合格=改定率は年で1つ)"]
open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "out_骨格改定1★_賃金の積み上げ_2026-09-30.md"), "w", encoding="utf-8").write("\n".join(out2))
print("\n".join(out2))
"""#30 懐疑役★2つ(計算検証役 2026-09-30):(1) 2016・2017年度の調整の率を「調整の分」に数える分け方 (2) R3・R4 の賃金に合わせた分の大きさ。
T は decompose.py と同じ年表。各年の差 r−p を ①物価と使われた賃金の差 ②調整 ③据え置き に分け、積み上げは掛け算、順番6通り。"""
import itertools
from math import prod, log
exec(open("decompose.py", encoding="utf-8").read().split("out = []")[0]) # T だけ読む(出力ファイルは書かない)
def comps(t, who, alt):
y, p, w, dn, de, rn, re_ = t; d = dn if who == 0 else de; r = rn if who == 0 else re_
if d == "据":
a, b, c = 0.0, 0.0, r - p
if alt >= 1 and y == "H28": b, c = -0.7, r - p + 0.7 # 物価0.8−調整0.7=0.1 が据え置き、差0.8のうち0.7が調整
else:
base = w if d == "賃金" else p; a, b, c = base - p, -(base - r), 0.0
if alt >= 2 and y == "H29": b, c = -0.5, 0.5 # 決まっていた▲0.5を調整に数え、掛からなかった分を③で戻す
return a, b, c
def cum(x): return (prod(1 + v / 100 for v in x) - 1) * 100
def run(who, alt):
P = [t[1] for t in T]; C = [comps(t, who, alt) for t in T]; pc = cum(P); rc = cum([p + sum(c) for p, c in zip(P, C)])
res = {}
for order in itertools.permutations(range(3)):
on = set(); prev = pc; ct = {}
for k in order:
on.add(k); cur = cum([p + sum(c[j] for j in on) for p, c in zip(P, C)]); ct[k] = prev - cur; prev = cur
res[order] = ct
L = [sum(log(1 + (p + sum(c[:k + 1])) / 100) - log(1 + (p + sum(c[:k])) / 100) for p, c in zip(P, C)) for k in range(3)]
lg = [-(pc - rc) * 0 + (pc - rc) * (-L[k]) / (-sum(L)) for k in range(3)]
return pc, rc, res, lg
for alt, name in ((0, "今の分け方(実際に差し引いた調整だけ)"), (1, "案A:2016年度の▲0.7だけ調整に数える"), (2, "案B:2016年度▲0.7・2017年度▲0.5を調整に数える(2017年度は掛からなかった分を③に戻す)")):
for who, lab in ((1, "既裁定(1956/4/1以前生まれ)"), (0, "新規(それより後)")):
pc, rc, res, lg = run(who, alt)
print(f"\n## {name}/{lab}:物価累積 {pc:.2f}・改定率累積 {rc:.2f}・差 {pc-rc:.2f}")
for k, n in enumerate(("①賃金に合わせた分", "②調整", "③据え置き")):
v = [r[k] for r in res.values()]; print(f" {n}:{min(v):.2f}〜{max(v):.2f}(平均 {sum(v)/6:.2f})/対数按分 {lg[k]:.2f}")
mins = [min(r[k] for r in res.values()) for k in range(3)]; maxs = [max(r[k] for r in res.values()) for k in range(3)]
print(" 順位が6通りすべてで ①>②?", all(r[0] > r[1] for r in res.values()), "/②>①?", all(r[1] > r[0] for r in res.values()), "/6通り中 ①>② の数", sum(r[0] > r[1] for r in res.values()))
# (2) R3・R4 の①(今の分け方)
print("\n## ★2 R3・R4 の賃金に合わせた分(今の分け方。既裁定・新規とも R3・R4 は同じ)")
P = [t[1] for t in T]; C = [comps(t, 1, 0) for t in T]; pc = cum(P)
for order in itertools.permutations(range(3)):
pass
idx = {t[0]: i for i, t in enumerate(T)}
def stack(sel_years, who=1):
# ①のうち選んだ年だけ外したときの積み上げの下がり(他の成分は残したまま/先に外す)
P = [t[1] for t in T]; C = [comps(t, who, 0) for t in T]
base = cum([p + sum(c) for p, c in zip(P, C)])
x = [p + sum(c) - (c[0] if T[i][0] in sel_years else 0) for i, (p, c) in enumerate(zip(P, C))]
return cum(x) - base, base
for ys in (["R3"], ["R4"], ["R3", "R4"]):
d_last, _ = stack(ys) # ①を最後に足す=他が全部ある状態で①を外したときの差は「最後」の寄与
print(f" {'・'.join(ys)}の①を他の成分が全部ある状態で外す(順番で最後に足す場合):{-d_last:+.3f}")
# 順番6通りでの R3+R4 の①の寄与(①全体のうち R3・R4 の分を、各順番で①の寄与を年別に比例配分せず、単独計算)
for order in itertools.permutations(range(3)):
on = [k for k in order[:order.index(0)]]
PP = [t[1] for t in T]; CC = [comps(t, 1, 0) for t in T]
def cc(ex): # 前に足されている成分 on のうえで ① を足す。ex=年集合なら ① をその年だけ入れる
return cum([p + sum(c[j] for j in on) + (c[0] if T[i][0] in ex else 0) for i, (p, c) in enumerate(zip(PP, CC))])
b0 = cc(set())
out = [f"{y}: {b0 - cc({y}):.3f}" for y in ("R3", "R4")] + [f"R3+R4: {b0 - cc({'R3','R4'}):.3f}", f"①全体: {b0 - cc({t[0] for t in T}):.3f}"]
print(" 順番", "→".join("①②③"[k] for k in order), "|", "/".join(out))
"""#30 1本目 骨格 改稿1 本論2の★(計算検証役 2026-10-01):月の差(平均の人=2015年度末 145,305円・既裁定・厚年の割合6割)を3つに分けた円と、11回の回数。
分け方は旧版(alt_decompose.py)と同じ:各年の差 r−p を ①物価と使われた賃金の差 ②調整 ③据え置き に分け、対数の按分で差を3つに。
R8 の率は 厚年の割合6割で 0.4×1.9+0.6×2.0=1.96%(調整の小さい分は②に入る)。alt=0=実際に差し引いた調整だけ、alt=1=2016年度に差し引かれなかった調整0.7も②に数える。"""
src = open("alt_decompose.py", encoding="utf-8").read().split("for alt, name in")[0]
exec(src)
T[:] = [t if t[0] != "R8" else ("R8", t[1], t[2], t[3], t[4], t[5], 1.96) for t in T]
S = 145305
for alt, nm in ((0, "①実際に差し引いた調整だけ"), (1, "②2016年度の調整0.7も数える")):
pc, rc, res, lg = run(1, alt); d = pc - rc; yen = [S * x / 100 for x in lg]
print(f"\n## {nm}:物価累積 {pc:.3f}%・改定率累積 {rc:.3f}%・差 {d:.3f}pt → 月の差 {S*d/100:,.1f}円")
for k, n in enumerate(("①物価と使われた賃金の差", "②調整", "③据え置き")):
v = [r[k] * S / 100 for r in res.values()]
print(f" {n}:{lg[k]:.3f}pt={yen[k]:,.0f}円(順番6通り {min(v):,.0f}〜{max(v):,.0f}円)割合 {lg[k]/d*100:.1f}%")
print(f" 3つの円の和 {sum(yen):,.1f}円/丸めた円の和 {sum(round(x) for x in yen):,}円")
print("\n## 回数(年表・既裁定)")
Y = [("H28",0.8,0.0,-0.2,"据"),("H29",-0.1,-0.1,-1.1,"物価"),("H30",0.5,0.0,-0.4,"据"),("R1",1.0,0.1,0.6,"賃金"),("R2",0.5,0.2,0.3,"賃金"),("R3",0.0,-0.1,-0.1,"賃金"),
("R4",-0.2,-0.4,-0.4,"賃金"),("R5",2.5,1.9,2.8,"物価"),("R6",3.2,2.7,3.1,"賃金"),("R7",2.7,1.9,2.3,"賃金"),("R8",3.2,1.9,2.1,"賃金")]
for k in ("賃金", "物価", "据"): print(f"決め手が{k}:", [y[0] for y in Y if y[4] == k])
print("賃金<物価:", [y[0] for y in Y if y[3] < y[1]], len([y for y in Y if y[3] < y[1]]))
print("改定率(既裁定)<物価:", [y[0] for y in Y if y[2] < y[1]], len([y for y in Y if y[2] < y[1]]), "/等しい:", [y[0] for y in Y if y[2] == y[1]])
print("①が負(使われた賃金が物価より低い)の年:", [y[0] for y in Y if y[4] == "賃金" and y[3] < y[1]])
print("②が効いた年(適用された調整>0):R1・R2・R5・R6・R7・R8(年表の「発動」6回)/③=H28・H30")
"""#30 引き直し・1本目(計算検証役 2026-10-01):起点の額から11回の改定(H28〜R8)の「物価どおり」と「実際」の月額を出す。
年表(物価・決め手・改定率)は calc.py/decompose.py と同じもの(Issue #30 の検証官合格の表)を使うが、積み上げは下で独立に書き直す(年表→掛け合わせ)。"""
from math import prod
# 年度: (物価, 既裁定の改定率, 新規の改定率, 賃金) %
Y = [("H28",0.8,0.0,0.0,-0.2),("H29",-0.1,-0.1,-0.1,-1.1),("H30",0.5,0.0,0.0,-0.4),("R1",1.0,0.1,0.1,0.6),("R2",0.5,0.2,0.2,0.3),("R3",0.0,-0.1,-0.1,-0.1),
("R4",-0.2,-0.4,-0.4,-0.4),("R5",2.5,1.9,2.2,2.8),("R6",3.2,2.7,2.7,3.1),("R7",2.7,1.9,1.9,2.3),("R8",3.2,1.9,1.9,2.1)]
def cum(xs): return prod(1 + x / 100 for x in xs)
CP = cum([y[1] for y in Y])
def chain(who, r8): # who=0 既裁定 / 1 新規。r8=R8 の率(基礎1.9/厚年2.0)
return cum([(y[2 + who] if y[0] != "R8" else r8) for y in Y])
print("物価の累積", round((CP - 1) * 100, 3))
for who, nm in ((0, "既裁定(68歳以上)"), (1, "新規(67歳以下)")):
for r8, lab in ((1.9, "R8=1.9(基礎年金の率)"), (2.0, "R8=2.0(厚年の報酬比例部分の率)")):
print(nm, lab, "累積", round((chain(who, r8) - 1) * 100, 3))
print("既裁定 H28〜R7(R8を除く)", round((cum([y[2] for y in Y[:-1]]) - 1) * 100, 3), "/新規", round((cum([y[3] for y in Y[:-1]]) - 1) * 100, 3))
def amounts(start, who, share): # share=R8 に 2.0 が効く割合(報酬比例の割合。基礎部分は 1.9)
pre = cum([y[2 + who] for y in Y[:-1]])
r8 = pre * (1 + ((1 - share) * 1.9 + share * 2.0) / 100)
prc = CP
return start * prc, start * r8
S = 150289
print("\n## 起点=2015年度に S 円の仮の人(既裁定の率)")
for who, nm in ((0, "既裁定(68歳以上)"), (1, "新規(67歳以下)")):
for share in (0.0, 0.6, 1.0):
pr, ac = amounts(S, who, share)
print(f"{nm} 厚年の割合{share:.0%}:物価どおり {pr:,.0f}/実際 {ac:,.0f}/月の差 {pr-ac:,.0f}/年の差(×12) {(pr-ac)*12:,.0f}")
print("\n## 起点を替えた感度(既裁定・R8 の厚年割合 0%=全部 1.9)")
for nm, s in (("標準的な年金額(夫婦・H27年度)221,507", 221507), ("国民年金の満額(H27年度)65,008", 65008), ("厚年(第1号)平均 150,289", 150289), ("同・男子 169,967", 169967), ("同・女子 111,413", 111413)):
pr, ac = amounts(s, 0, 0.0); print(f"{nm}:物価どおり {pr:,.0f}/実際 {ac:,.0f}/月の差 {pr-ac:,.0f}/年の差 {(pr-ac)*12:,.0f}/実際÷物価どおり {ac/pr:.4f}")
# B:実績に揃える。R6末の平均が S になるよう 2015年度の額を逆算し、R7・R8 を続ける
print("\n## B:R6年度末に S 円(実際の平均)になるよう 2015年度を逆算(既裁定・新規の率の混ぜ方で幅)")
for who, nm in ((0, "既裁定"), (1, "新規")):
f6 = cum([y[2 + who] for y in Y[:-2]]); f8 = cum([y[2 + who] if y[0] != "R8" else 1.9 for y in Y])
s0 = S / f6; p_nominal = s0 * CP; a_now = s0 * f8
print(f"{nm}:2015年度の額 {s0:,.0f}(R6末→R8 の改定率 {(f8/f6-1)*100:.2f}%)/今の実際 {a_now:,.0f}/物価どおり {p_nominal:,.0f}/月の差 {p_nominal-a_now:,.0f}/年の差 {(p_nominal-a_now)*12:,.0f}")
print("\n## 3. 11回のうち 賃金 < 物価 の回(年表)")
miss = [y[0] for y in Y if y[4] < y[1]]; ok = [y[0] for y in Y if y[4] >= y[1]]
print("届かなかった", len(miss), miss, "/届いた(賃金≧物価)", len(ok), ok)
print(" うち 年金の決め手が賃金・物価・据え置き:賃金で下げた", [y[0] for y in Y if y[4] < y[1] and y[0] not in ("H28","H29","H30")], "/物価の年 H29(物価<0・賃金<物価)/据え置き H28・H30(物価>0・賃金<0)")
"""#30 引き直し・1本目 起点を「2015年度末(=平成27年度末)の厚年(第1号)受給権者の平均」に替えた円(計算検証役 2026-10-01)。
起点の額(リサーチャー #issuecomment-5925124094・H27年度 事業の概況 p.9 表8・p.22):全体 145,305/男子 166,120/女子 102,131。年度末=次の H28 改定の前。pension_start_1.py の年表を使う。"""
src = open("pension_start_1.py", encoding="utf-8").read().split("S = 150289")[0]
exec(src)
for nm, s in (("全体", 145305), ("男子", 166120), ("女子", 102131)):
for who, wn in ((0, "既裁定"), (1, "新規")):
for share in (0.0, 0.6, 1.0):
pr, ac = amounts(s, who, share)
print(f"{nm} {wn} 厚年割合{share:.0%}:物価どおり {pr:,.0f}/実際 {ac:,.0f}/月の差 {pr-ac:,.0f}/年の差 {(pr-ac)*12:,.0f}")
# 整合:H27年度末の平均に H28〜R6 の既裁定の率を掛けた額と、実際の R6年度末の平均 150,289(男 169,967/女 111,413)
f6 = cum([y[2] for y in Y[:-2]])
for nm, s, a in (("全体", 145305, 150289), ("男子", 166120, 169967), ("女子", 102131, 111413)):
print(f"{nm}:H27末 {s:,}×H28〜R6の累積 {f6:.4f}={s*f6:,.0f}/実際のR6末 {a:,}/差 {a-s*f6:+,.0f}({(a/(s*f6)-1)*100:+.2f}%)")
## ①実際に差し引いた調整だけ:物価累積 14.938%・改定率累積 8.403%・差 6.535pt → 月の差 9,495.9円 ①物価と使われた賃金の差:2.741pt=3,983円(順番6通り 3,925〜4,051円)割合 41.9% ②調整:2.348pt=3,411円(順番6通り 3,347〜3,466円)割合 35.9% ③据え置き:1.446pt=2,102円(順番6通り 2,054〜2,150円)割合 22.1% 3つの円の和 9,495.9円/丸めた円の和 9,496円 ## ②2016年度の調整0.7も数える:物価累積 14.938%・改定率累積 8.403%・差 6.535pt → 月の差 9,495.9円 ①物価と使われた賃金の差:2.741pt=3,983円(順番6通り 3,925〜4,051円)割合 41.9% ②調整:3.126pt=4,542円(順番6通り 4,473〜4,602円)割合 47.8% ③据え置き:0.668pt=971円(順番6通り 946〜996円)割合 10.2% 3つの円の和 9,495.9円/丸めた円の和 9,496円 ## 回数(年表・既裁定) 決め手が賃金: ['R1', 'R2', 'R3', 'R4', 'R6', 'R7', 'R8'] 決め手が物価: ['H29', 'R5'] 決め手が据: ['H28', 'H30'] 賃金<物価: ['H28', 'H29', 'H30', 'R1', 'R2', 'R3', 'R4', 'R6', 'R7', 'R8'] 10 改定率(既裁定)<物価: ['H28', 'H30', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8'] 10 /等しい: ['H29'] ①が負(使われた賃金が物価より低い)の年: ['R1', 'R2', 'R3', 'R4', 'R6', 'R7', 'R8'] ②が効いた年(適用された調整>0):R1・R2・R5・R6・R7・R8(年表の「発動」6回)/③=H28・H30
物価の累積 14.938 既裁定(68歳以上) R8=1.9(基礎年金の率) 累積 8.339 既裁定(68歳以上) R8=2.0(厚年の報酬比例部分の率) 累積 8.445 新規(67歳以下) R8=1.9(基礎年金の率) 累積 8.658 新規(67歳以下) R8=2.0(厚年の報酬比例部分の率) 累積 8.765 既裁定 H28〜R7(R8を除く) 6.319 /新規 6.632 全体 既裁定 厚年割合0%:物価どおり 167,011/実際 157,422/月の差 9,589/年の差 115,063 全体 既裁定 厚年割合60%:物価どおり 167,011/実際 157,515/月の差 9,496/年の差 113,951 全体 既裁定 厚年割合100%:物価どおり 167,011/実際 157,577/月の差 9,434/年の差 113,210 全体 新規 厚年割合0%:物価どおり 167,011/実際 157,886/月の差 9,125/年の差 109,502 全体 新規 厚年割合60%:物価どおり 167,011/実際 157,979/月の差 9,032/年の差 108,386 全体 新規 厚年割合100%:物価どおり 167,011/実際 158,040/月の差 8,970/年の差 107,643 男子 既裁定 厚年割合0%:物価どおり 190,935/実際 179,973/月の差 10,962/年の差 131,546 男子 既裁定 厚年割合60%:物価どおり 190,935/実際 180,079/月の差 10,856/年の差 130,275 男子 既裁定 厚年割合100%:物価どおり 190,935/実際 180,149/月の差 10,786/年の差 129,427 男子 新規 厚年割合0%:物価どおり 190,935/実際 180,503/月の差 10,432/年の差 125,188 男子 新規 厚年割合60%:物価どおり 190,935/実際 180,609/月の差 10,326/年の差 123,913 男子 新規 厚年割合100%:物価どおり 190,935/実際 180,680/月の差 10,255/年の差 123,062 女子 既裁定 厚年割合0%:物価どおり 117,387/実際 110,648/月の差 6,740/年の差 80,875 女子 既裁定 厚年割合60%:物価どおり 117,387/実際 110,713/月の差 6,674/年の差 80,093 女子 既裁定 厚年割合100%:物価どおり 117,387/実際 110,756/月の差 6,631/年の差 79,572 女子 新規 厚年割合0%:物価どおり 117,387/実際 110,974/月の差 6,414/年の差 76,966 女子 新規 厚年割合60%:物価どおり 117,387/実際 111,039/月の差 6,348/年の差 76,182 女子 新規 厚年割合100%:物価どおり 117,387/実際 111,082/月の差 6,305/年の差 75,659 全体:H27末 145,305×H28〜R6の累積 1.0434=151,606/実際のR6末 150,289/差 -1,317(-0.87%) 男子:H27末 166,120×H28〜R6の累積 1.0434=173,324/実際のR6末 169,967/差 -3,357(-1.94%) 女子:H27末 102,131×H28〜R6の累積 1.0434=106,560/実際のR6末 111,413/差 +4,853(+4.55%)
物価の累積 14.938 既裁定(68歳以上) R8=1.9(基礎年金の率) 累積 8.339 既裁定(68歳以上) R8=2.0(厚年の報酬比例部分の率) 累積 8.445 新規(67歳以下) R8=1.9(基礎年金の率) 累積 8.658 新規(67歳以下) R8=2.0(厚年の報酬比例部分の率) 累積 8.765 既裁定 H28〜R7(R8を除く) 6.319 /新規 6.632 ## 起点=2015年度に S 円の仮の人(既裁定の率) 既裁定(68歳以上) 厚年の割合0%:物価どおり 172,739/実際 162,822/月の差 9,918/年の差(×12) 119,010 既裁定(68歳以上) 厚年の割合60%:物価どおり 172,739/実際 162,918/月の差 9,822/年の差(×12) 117,860 既裁定(68歳以上) 厚年の割合100%:物価どおり 172,739/実際 162,981/月の差 9,758/年の差(×12) 117,093 新規(67歳以下) 厚年の割合0%:物価どおり 172,739/実際 163,301/月の差 9,438/年の差(×12) 113,258 新規(67歳以下) 厚年の割合60%:物価どおり 172,739/実際 163,397/月の差 9,342/年の差(×12) 112,104 新規(67歳以下) 厚年の割合100%:物価どおり 172,739/実際 163,461/月の差 9,278/年の差(×12) 111,335 ## 起点を替えた感度(既裁定・R8 の厚年割合 0%=全部 1.9) 標準的な年金額(夫婦・H27年度)221,507:物価どおり 254,596/実際 239,979/月の差 14,617/年の差 175,406/実際÷物価どおり 0.9426 国民年金の満額(H27年度)65,008:物価どおり 74,719/実際 70,429/月の差 4,290/年の差 51,478/実際÷物価どおり 0.9426 厚年(第1号)平均 150,289:物価どおり 172,739/実際 162,822/月の差 9,918/年の差 119,010/実際÷物価どおり 0.9426 同・男子 169,967:物価どおり 195,357/実際 184,141/月の差 11,216/年の差 134,593/実際÷物価どおり 0.9426 同・女子 111,413:物価どおり 128,056/実際 120,704/月の差 7,352/年の差 88,225/実際÷物価どおり 0.9426 ## B:R6年度末に S 円(実際の平均)になるよう 2015年度を逆算(既裁定・新規の率の混ぜ方で幅) 既裁定:2015年度の額 144,042(R6末→R8 の改定率 3.84%)/今の実際 156,054/物価どおり 165,560/月の差 9,505/年の差 114,064 新規:2015年度の額 143,620(R6末→R8 の改定率 3.84%)/今の実際 156,054/物価どおり 165,074/月の差 9,019/年の差 108,232 ## 3. 11回のうち 賃金 < 物価 の回(年表) 届かなかった 10 ['H28', 'H29', 'H30', 'R1', 'R2', 'R3', 'R4', 'R6', 'R7', 'R8'] /届いた(賃金≧物価) 1 ['R5'] うち 年金の決め手が賃金・物価・据え置き:賃金で下げた ['R1', 'R2', 'R3', 'R4', 'R6', 'R7', 'R8'] /物価の年 H29(物価<0・賃金<物価)/据え置き H28・H30(物価>0・賃金<0)
## 1. 年度ごとの表(%) | 年度 | 物価 | 名目手取り賃金 | 調整率(表示) | スライド | 決め手 | 改定率(新規裁定者) | 改定率(既裁定者) | |---|---|---|---|---|---|---|---| | H27 | 2.7 | 2.3 | -0.9 | 発動 | 賃金(+特例水準の解消▲0.5) | 0.9 | 0.9 | | H28 | 0.8 | -0.2 | -0.7 | 調整なし | スライドなし(据え置き) | 0.0 | 0.0 | | H29 | -0.1 | -1.1 | -0.5 | 調整なし | 物価 | -0.1 | -0.1 | | H30 | 0.5 | -0.4 | -0.3 | 調整なし・繰越▲0.3 | スライドなし(据え置き) | 0.0 | 0.0 | | R1 | 1.0 | 0.6 | -0.2 | 発動(繰越▲0.3を含め調整) | 賃金 | 0.1 | 0.1 | | R2 | 0.5 | 0.3 | -0.1 | 発動 | 賃金 | 0.2 | 0.2 | | R3 | 0.0 | -0.1 | -0.1 | 調整なし・繰越▲0.1 | 賃金 | -0.1 | -0.1 | | R4 | -0.2 | -0.4 | -0.3 | 調整なし(繰越▲0.1+当年▲0.2) | 賃金 | -0.4 | -0.4 | | R5 | 2.5 | 2.8 | -0.3 | 発動(繰越▲0.3を含め▲0.6) | 新規=賃金/既裁定=物価 | 2.2 | 1.9 | | R6 | 3.2 | 3.1 | -0.4 | 発動 | 賃金 | 2.7 | 2.7 | | R7 | 2.7 | 2.3 | -0.4 | 発動 | 賃金 | 1.9 | 1.9 | | R8 | 3.2 | 2.1 | -0.2 | 発動(厚年▲0.1) | 賃金 | 1.9 | 1.9 | - 発動の年:H27・R1・R2・R5・R6・R7・R8(7回。報道発表 R7 p3「計6回」+R8=7回と一致) - 決め手の内訳:物価 1/賃金 8/新規賃金・既裁定物価 1/据え置き 2 - R8 は基礎年金 1.9%・厚生年金(報酬比例部分)2.0%。下の積み上げは基礎年金の率(国民年金の満額の月額で照合するため)。 - H27 の改定率 0.9 = 賃金 2.3 − 調整 0.9 − 特例水準の解消 0.5(年金部会資料 p19)。 ## 検算(表の中の整合) - H27: 0.9 - R1: 0.1 - R2: 0.2 - R5新規: 2.2 - R5既: 1.9 - R6: 2.7 - R7: 1.9 - R8基礎: 1.9 ## 2. 積み上げ(各年の率を掛け合わせる。%=(積−1)×100) | 期間 | 物価変動率の累積 | 年金の改定率の累積(新規裁定者) | 年金の改定率の累積(既裁定者) | 新規−物価(pt) | 既裁定−物価(pt) | |---|---|---|---|---|---| | H27〜R8(12年度分) | 18.04%(1.1804倍) | 9.64%(1.0964倍) | 9.31%(1.0931倍) | -8.41 | -8.73 | | H28〜R8(11年度分) | 14.94%(1.1494倍) | 8.66%(1.0866倍) | 8.34%(1.0834倍) | -6.28 | -6.60 | - 参考(単純合計、掛け合わせない)H28〜R8:物価 14.1%、新規 8.4%、既裁定 8.1% - R8 が厚生年金(報酬比例部分 2.0%)の場合、H28〜R8 の新規裁定者の累積は 8.76%(基礎年金 8.66%) 年ごとの累積(H28を起点=1.0000、新規裁定者/既裁定者/物価): - H28:新規 1.0000/既裁定 1.0000/物価 1.0080 - H29:新規 0.9990/既裁定 0.9990/物価 1.0070 - H30:新規 0.9990/既裁定 0.9990/物価 1.0120 - R1:新規 1.0000/既裁定 1.0000/物価 1.0221 - R2:新規 1.0020/既裁定 1.0020/物価 1.0273 - R3:新規 1.0010/既裁定 1.0010/物価 1.0273 - R4:新規 0.9970/既裁定 0.9970/物価 1.0252 - R5:新規 1.0189/既裁定 1.0159/物価 1.0508 - R6:新規 1.0464/既裁定 1.0434/物価 1.0845 - R7:新規 1.0663/既裁定 1.0632/物価 1.1137 - R8:新規 1.0866/既裁定 1.0834/物価 1.1494 ## 3. 外部照合:厚労省 報道発表 p1 の国民年金(老齢基礎年金 満額1人分)の月額と、改定率の累積 | 年度 | 前年度(月額) | 当年度(月額) | 月額の増減率 | 表の改定率(新規) | 差(pt) | |---|---|---|---|---|---| | H28 | 65,008 | 65,008 | 0.000% | 0.0 | +0.000 | | H29 | 65,008 | 64,941 | -0.103% | -0.1 | -0.003 | | H30 | 64,941 | 64,941 | 0.000% | 0.0 | +0.000 | | R1 | 64,941 | 65,008 | 0.103% | 0.1 | +0.003 | | R2 | 65,008 | 65,141 | 0.205% | 0.2 | +0.005 | | R3 | 65,141 | 65,075 | -0.101% | -0.1 | -0.001 | | R4 | 65,075 | 64,816 | -0.398% | -0.4 | +0.002 | | R5 | 64,816 | 66,250 | 2.212% | 2.2 | +0.012 | | R6 | 66,250 | 68,000 | 2.642% | 2.7 | -0.058 | | R7 | 68,000 | 69,308 | 1.924% | 1.9 | +0.024 | | R8 | 69,308 | 70,608 | 1.876% | 1.9 | -0.024 | 月額のつながり:H27年度の月額 65,008円(H28 p1の前年度欄)→ R8年度 70,608円 = 8.61%(新規裁定者・基礎年金)。改定率の累積(H28〜R8)8.66%との差 -0.04pt。 既裁定者(H28〜R8)の月額 65,008→70,408 = 8.31%。改定率の累積(既裁定者)8.34%との差 -0.03pt(R4までは新規と同じ月額) 年度ごとの月額の連鎖(前年度欄=前の年度の当年度欄)が全年で一致するか:True 既裁定者の月額(報道発表 p1 の脚注。R5=既裁定者(68歳以上)、R6〜R8=昭和31年4月1日以前生まれ):R4 64,816 → R5 66,050 → R6 67,808 → R7 69,108 → R8 70,408 月額の増減率(R4→R8)=8.63%。改定率の累積(R5〜R8、既裁定者)=8.67%、(新規裁定者)=8.99%、新規裁定者の月額(64,816→70,608)=8.94% 年ごとの既裁定者の月額の増減率:64816→66050: 1.90%, 66050→67808: 2.66%, 67808→69108: 1.92%, 69108→70408: 1.88%
# #30 骨格★(計算検証役 2026-09-30) ## 1. H28〜R8 の11回の決め手の数(年表の「決め手」欄から数えた) - 新規裁定者:賃金 8(R1・R2・R3・R4・R5・R6・R7・R8)/物価 1(H29)/スライドなし(据え置き)2(H28・H30)=計 11 - 既裁定者:賃金 7(R1・R2・R3・R4・R6・R7・R8)/物価 2(H29・R5)/スライドなし(据え置き)2(H28・H30)=計 11 - 新規と既裁定で決め手が違うのは R5 だけ(新規=賃金・既裁定=物価)。まとめて書くと:賃金 7/物価 1/R5 は新規=賃金・既裁定=物価/据え置き 2。calc.py の12年度の数(賃金 8・物価 1・R5 1・据え置き 2)から H27(賃金)を外した数と一致 - 発動(調整が掛かった)年:R1・R2・R5・R6・R7・R8 の6回(H27 を含む12年度では7回) ## 2. 差の分け方:既裁定者(H28〜R8) 物価の累積 14.94% − 改定率の累積 8.34% = 6.60ポイント(表の丸めの範囲で calc.py と一致) 年ごとの分け(%ポイント。各年の 改定率 − 物価 = ① 決め手の率−物価 + ② −調整 + ③ 据え置きで0にした分): | 年度 | 物価 | 決め手 | 決め手の率 | 適用された調整 | 改定率 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 | |---|---|---|---|---|---|---|---|---|---| | H28 | +0.8 | スライドなし | | | +0.0 | +0.0 | +0.0 | -0.8 | -0.8 | | H29 | -0.1 | 物価 | -0.1 | 0.0 | -0.1 | +0.0 | -0.0 | +0.0 | +0.0 | | H30 | +0.5 | スライドなし | | | +0.0 | +0.0 | +0.0 | -0.5 | -0.5 | | R1 | +1.0 | 賃金 | +0.6 | 0.5 | +0.1 | -0.4 | -0.5 | +0.0 | -0.9 | | R2 | +0.5 | 賃金 | +0.3 | 0.1 | +0.2 | -0.2 | -0.1 | +0.0 | -0.3 | | R3 | +0.0 | 賃金 | -0.1 | 0.0 | -0.1 | -0.1 | -0.0 | +0.0 | -0.1 | | R4 | -0.2 | 賃金 | -0.4 | 0.0 | -0.4 | -0.2 | -0.0 | +0.0 | -0.2 | | R5 | +2.5 | 物価 | +2.5 | 0.6 | +1.9 | +0.0 | -0.6 | +0.0 | -0.6 | | R6 | +3.2 | 賃金 | +3.1 | 0.4 | +2.7 | -0.1 | -0.4 | +0.0 | -0.5 | | R7 | +2.7 | 賃金 | +2.3 | 0.4 | +1.9 | -0.4 | -0.4 | +0.0 | -0.8 | | R8 | +3.2 | 賃金 | +2.1 | 0.2 | +1.9 | -1.1 | -0.2 | +0.0 | -1.3 | 積み上げの差(ポイント)を3つに分けた値。掛け算なので、どれを先に外すかで変わる(6通り): | 順番 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 | |---|---|---|---|---| | ①→②→③ | 2.79 | 2.40 | 1.41 | 6.60 | | ①→③→② | 2.79 | 2.37 | 1.44 | 6.60 | | ②→①→③ | 2.74 | 2.45 | 1.41 | 6.60 | | ②→③→① | 2.70 | 2.45 | 1.45 | 6.60 | | ③→①→② | 2.75 | 2.37 | 1.48 | 6.60 | | ③→②→① | 2.70 | 2.42 | 1.48 | 6.60 | - ①:最小 2.70〜最大 2.79(6通りの平均 2.74) - ②:最小 2.37〜最大 2.45(6通りの平均 2.41) - ③:最小 1.41〜最大 1.48(6通りの平均 1.45) 順番によらない分け方(各年の 改定率÷物価 の対数を①②③に分けて足し、差 6.60 ポイントを対数の比で按分): | ①物価と使われた賃金の差 | ②調整 | ③据え置き | |---|---|---| | 2.74(42%) | 2.41(37%) | 1.45(22%) | ## 2. 差の分け方:新規裁定者(H28〜R8) 物価の累積 14.94% − 改定率の累積 8.66% = 6.28ポイント(表の丸めの範囲で calc.py と一致) 年ごとの分け(%ポイント。各年の 改定率 − 物価 = ① 決め手の率−物価 + ② −調整 + ③ 据え置きで0にした分): | 年度 | 物価 | 決め手 | 決め手の率 | 適用された調整 | 改定率 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 | |---|---|---|---|---|---|---|---|---|---| | H28 | +0.8 | スライドなし | | | +0.0 | +0.0 | +0.0 | -0.8 | -0.8 | | H29 | -0.1 | 物価 | -0.1 | 0.0 | -0.1 | +0.0 | -0.0 | +0.0 | +0.0 | | H30 | +0.5 | スライドなし | | | +0.0 | +0.0 | +0.0 | -0.5 | -0.5 | | R1 | +1.0 | 賃金 | +0.6 | 0.5 | +0.1 | -0.4 | -0.5 | +0.0 | -0.9 | | R2 | +0.5 | 賃金 | +0.3 | 0.1 | +0.2 | -0.2 | -0.1 | +0.0 | -0.3 | | R3 | +0.0 | 賃金 | -0.1 | 0.0 | -0.1 | -0.1 | -0.0 | +0.0 | -0.1 | | R4 | -0.2 | 賃金 | -0.4 | 0.0 | -0.4 | -0.2 | -0.0 | +0.0 | -0.2 | | R5 | +2.5 | 賃金 | +2.8 | 0.6 | +2.2 | +0.3 | -0.6 | +0.0 | -0.3 | | R6 | +3.2 | 賃金 | +3.1 | 0.4 | +2.7 | -0.1 | -0.4 | +0.0 | -0.5 | | R7 | +2.7 | 賃金 | +2.3 | 0.4 | +1.9 | -0.4 | -0.4 | +0.0 | -0.8 | | R8 | +3.2 | 賃金 | +2.1 | 0.2 | +1.9 | -1.1 | -0.2 | +0.0 | -1.3 | 積み上げの差(ポイント)を3つに分けた値。掛け算なので、どれを先に外すかで変わる(6通り): | 順番 | ①物価と使われた賃金の差 | ②調整 | ③据え置き | 合計 | |---|---|---|---|---| | ①→②→③ | 2.46 | 2.40 | 1.42 | 6.28 | | ①→③→② | 2.46 | 2.37 | 1.45 | 6.28 | | ②→①→③ | 2.41 | 2.45 | 1.42 | 6.28 | | ②→③→① | 2.38 | 2.45 | 1.45 | 6.28 | | ③→①→② | 2.43 | 2.37 | 1.48 | 6.28 | | ③→②→① | 2.38 | 2.42 | 1.48 | 6.28 | - ①:最小 2.38〜最大 2.46(6通りの平均 2.42) - ②:最小 2.37〜最大 2.45(6通りの平均 2.41) - ③:最小 1.42〜最大 1.48(6通りの平均 1.45) 順番によらない分け方(各年の 改定率÷物価 の対数を①②③に分けて足し、差 6.28 ポイントを対数の比で按分): | ①物価と使われた賃金の差 | ②調整 | ③据え置き | |---|---|---| | 2.42(39%) | 2.41(38%) | 1.45(23%) |
# #30 骨格 改定1 ★(計算検証役 2026-09-30)入力=年表(decompose.py の T) - 賃金の伸び(名目手取り賃金変動率)の積み上げ H28〜R8:9.26%(1.0926倍)。単純合計 9.0%。物価の積み上げ 14.94% - 賃金 < 物価の回数:10/11(賃金 ≥ 物価:R5(賃金+2.8・物価+2.5)) - 賃金 < 物価の年:H28・H29・H30・R1・R2・R3・R4・R6・R7・R8 ## 厚生年金(報酬比例部分)の改定率の積み上げ H28〜R8(R8 だけ 2.0%、ほかの年は基礎年金と同じ率) - 1956年4月1日以前に生まれた人(既裁定):8.45%(基礎年金の系列 8.34%、差 +0.11) - それより後に生まれた人(新規):8.76%(基礎年金の系列 8.66%、差 +0.11) - 物価の積み上げ 14.94%との差(報酬比例):既裁定 -6.49/新規 -6.17 ポイント(基礎年金は -6.60/-6.28) - 根拠:報道発表 R8 p1 に『厚生年金(報酬比例部分)が2.0%』(基礎年金は1.9%)。H28・R7 の報道発表は率を1つだけ載せる(R7 p1『1.9%の引上げ』)。**ほかの年(H29〜R6)の報道発表の文言で、厚年と基礎の率が同じかは、私は年表の値を使っており報道発表の本文までは見ていない**(検証官の年表が合格=改定率は年で1つ)