Joseph Spada commited on
Commit
de22604
·
1 Parent(s): 1acd050

ss oasdi revenues slider and functionality

Browse files
Files changed (2) hide show
  1. app.py +52 -16
  2. graph_data.xlsx +0 -0
app.py CHANGED
@@ -23,6 +23,7 @@ data = data[[
23
  "Total Revenues",
24
  "Debt Balance",
25
  "Revenues ex SS OASDI",
 
26
  "Average Rate on Federal Debt",
27
  "GDP",
28
  "Net Interest"
@@ -36,17 +37,24 @@ print(data)
36
  # %%
37
  baseline_interest_rate = 3.64
38
  #baseline_revenues = 15928.73
39
- baseline_cagr_revenues = 4.1
40
- total_revenues_2024 = data.loc[2024, "Total Revenues"]
41
- total_revenues_2055_bl = data.loc[2055, "Total Revenues"]
42
 
43
- def plot_interest_coverage(interest_rate, cagr_revenues):
 
 
 
 
44
 
45
  # calculate the yearly increase in the interest rate based on the projected interest rate in 2054
46
  interest_rate_yearly_increase = (interest_rate - baseline_interest_rate) / (2055 - 2025) / 100
47
  # calculate the yearly increase in revenues based on the annual growth rate through 2055
48
  total_revenues_2055 = total_revenues_2024 * ((1 + (cagr_revenues / 100)) ** (2055 - 2024))
49
  revenues_yearly_increase = (total_revenues_2055 - total_revenues_2055_bl) / (2055 - 2025)
 
 
 
50
 
51
  # add a baseline net interest / revenues column
52
  data["Net Interest / Revenues (Baseline)"] = data["Net Interest"] / data["Total Revenues"]
@@ -55,7 +63,7 @@ def plot_interest_coverage(interest_rate, cagr_revenues):
55
  data["Net Interest / Revenues ex SS OASDI (Baseline)"] = data["Net Interest"] / data["Revenues ex SS OASDI"]
56
 
57
  # add a baseline SS OASDI revenues column
58
- data["SS OASDI Revenues"] = data["Total Revenues"] - data["Revenues ex SS OASDI"]
59
 
60
  # add a projected average rate on federal debt column
61
  data["Average Rate on Federal Debt (Projected)"] = np.where(
@@ -63,19 +71,28 @@ def plot_interest_coverage(interest_rate, cagr_revenues):
63
  data["Average Rate on Federal Debt"],
64
  data["Average Rate on Federal Debt"] + (interest_rate_yearly_increase * (data.index.astype(int) - 2024)))
65
 
66
- # add a projected revenues column
67
- data["Total Revenues (Projected)"] = np.where(
68
- data.index.astype(int) < 2025,
69
- data["Total Revenues"],
70
- data["Total Revenues"] + (revenues_yearly_increase * (data.index.astype(int) - 2024)))
71
-
72
- print(data.loc[2055, "Total Revenues (Projected)"])
73
-
74
  # add a projected revenues ex SS OASDI column
75
  data["Revenues ex SS OASDI (Projected)"] = np.where(
76
  data.index.astype(int) < 2025,
77
  data["Revenues ex SS OASDI"],
78
- data["Total Revenues (Projected)"] - data["SS OASDI Revenues"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
  # add a projected interest / revenues column
81
  data["Net Interest / Revenues (Projected)"] = np.where(
@@ -177,6 +194,9 @@ interest_rate_upperbound = 10
177
  cagr_revenues_lower_bound = 0
178
  cagr_revenues_upper_bound = 8
179
 
 
 
 
180
  with gr.Blocks() as interface:
181
  # Create the image output
182
  graph = gr.Image(type="filepath", label = "Graph", value = plot_interest_coverage(baseline_interest_rate, baseline_cagr_revenues))
@@ -199,6 +219,15 @@ with gr.Blocks() as interface:
199
  label = "Compound Annual Growth Rate of Revenues through 2055"
200
  )
201
 
 
 
 
 
 
 
 
 
 
202
  gr.Markdown('<p style="font-size:11px;">Source: : CBO March 2025, The Long-Term Budget Outlook: 2025 to 2055, author\'s ' \
203
  'calculations from Supplemental Table 1. Scenario of higher interest rate and revenues '
204
  'is author\'s calculations. Historical Social Security OASDI payroll tax revenue from Table 4-3 of the ' \
@@ -208,14 +237,21 @@ with gr.Blocks() as interface:
208
  # Set up an action that updates the graph when the interest rate slider value changes
209
  interest_rate_slider.change(
210
  plot_interest_coverage,
211
- inputs = [interest_rate_slider, cagr_revenues_slider],
212
  outputs = graph
213
  )
214
 
215
  # Set up an action that updates the graph when the revenues slider value changes
216
  cagr_revenues_slider.change(
217
  plot_interest_coverage,
218
- inputs = [interest_rate_slider, cagr_revenues_slider],
 
 
 
 
 
 
 
219
  outputs = graph
220
  )
221
 
 
23
  "Total Revenues",
24
  "Debt Balance",
25
  "Revenues ex SS OASDI",
26
+ "SS OASDI Revenues",
27
  "Average Rate on Federal Debt",
28
  "GDP",
29
  "Net Interest"
 
37
  # %%
38
  baseline_interest_rate = 3.64
39
  #baseline_revenues = 15928.73
40
+ baseline_cagr_revenues = 4.44
41
+ total_revenues_2024 = data.loc[2024, "Revenues ex SS OASDI"]
42
+ total_revenues_2055_bl = data.loc[2055, "Revenues ex SS OASDI"]
43
 
44
+ baseline_cagr_ssoasdi_revenues = 3.62
45
+ ssoasdi_revenues_2024 = data.loc[2024, "SS OASDI Revenues"]
46
+ ssoasdi_revenues_2055_bl = data.loc[2055, "SS OASDI Revenues"]
47
+
48
+ def plot_interest_coverage(interest_rate, cagr_revenues, cagr_ssoasdi_revenues):
49
 
50
  # calculate the yearly increase in the interest rate based on the projected interest rate in 2054
51
  interest_rate_yearly_increase = (interest_rate - baseline_interest_rate) / (2055 - 2025) / 100
52
  # calculate the yearly increase in revenues based on the annual growth rate through 2055
53
  total_revenues_2055 = total_revenues_2024 * ((1 + (cagr_revenues / 100)) ** (2055 - 2024))
54
  revenues_yearly_increase = (total_revenues_2055 - total_revenues_2055_bl) / (2055 - 2025)
55
+ # calculate the yearly increase in ss oasdi revenues based on the annual growth rate through 2055
56
+ ssoasdi_revenues_2055 = ssoasdi_revenues_2024 * ((1 + (cagr_ssoasdi_revenues / 100)) ** (2055 - 2024))
57
+ ssoasdi_revenues_yearly_increase = (ssoasdi_revenues_2055 - ssoasdi_revenues_2055_bl) / (2055 - 2025)
58
 
59
  # add a baseline net interest / revenues column
60
  data["Net Interest / Revenues (Baseline)"] = data["Net Interest"] / data["Total Revenues"]
 
63
  data["Net Interest / Revenues ex SS OASDI (Baseline)"] = data["Net Interest"] / data["Revenues ex SS OASDI"]
64
 
65
  # add a baseline SS OASDI revenues column
66
+ # data["SS OASDI Revenues"] = data["Total Revenues"] - data["Revenues ex SS OASDI"]
67
 
68
  # add a projected average rate on federal debt column
69
  data["Average Rate on Federal Debt (Projected)"] = np.where(
 
71
  data["Average Rate on Federal Debt"],
72
  data["Average Rate on Federal Debt"] + (interest_rate_yearly_increase * (data.index.astype(int) - 2024)))
73
 
 
 
 
 
 
 
 
 
74
  # add a projected revenues ex SS OASDI column
75
  data["Revenues ex SS OASDI (Projected)"] = np.where(
76
  data.index.astype(int) < 2025,
77
  data["Revenues ex SS OASDI"],
78
+ data["Revenues ex SS OASDI"] + (revenues_yearly_increase * (data.index.astype(int) - 2024)))
79
+
80
+ # add a projected SS OASDI revenues column
81
+ data["SS OASDI Revenues (Projected)"] = np.where(
82
+ data.index.astype(int) < 2025,
83
+ data["SS OASDI Revenues"],
84
+ data["SS OASDI Revenues"] + (ssoasdi_revenues_yearly_increase * (data.index.astype(int) - 2024)))
85
+
86
+ # add a projected revenues column
87
+ #data["Total Revenues (Projected)"] = np.where(
88
+ #data.index.astype(int) < 2025,
89
+ #data["Total Revenues"],
90
+ #data["Total Revenues"] + (revenues_yearly_increase * (data.index.astype(int) - 2024)))
91
+
92
+ # add a projected revenues column
93
+ data["Total Revenues (Projected)"] = data["Revenues ex SS OASDI (Projected)"] + data["SS OASDI Revenues (Projected)"]
94
+
95
+ print(data.loc[2055, "Total Revenues (Projected)"])
96
 
97
  # add a projected interest / revenues column
98
  data["Net Interest / Revenues (Projected)"] = np.where(
 
194
  cagr_revenues_lower_bound = 0
195
  cagr_revenues_upper_bound = 8
196
 
197
+ cagr_ssoasdi_revenues_lower_bound = 0
198
+ cagr_ssoasdi_revenues_upper_bound = 8
199
+
200
  with gr.Blocks() as interface:
201
  # Create the image output
202
  graph = gr.Image(type="filepath", label = "Graph", value = plot_interest_coverage(baseline_interest_rate, baseline_cagr_revenues))
 
219
  label = "Compound Annual Growth Rate of Revenues through 2055"
220
  )
221
 
222
+ # Create the slider input below the image for projected revenues
223
+ cagr_ssoasdi_revenues_slider = gr.Slider(
224
+ cagr_ssoasdi_revenues_lower_bound,
225
+ cagr_ssoasdi_revenues_upper_bound,
226
+ step = 0.01,
227
+ value = baseline_cagr_ssoasdi_revenues,
228
+ label = "Compound Annual Growth Rate of Revenues through 2055"
229
+ )
230
+
231
  gr.Markdown('<p style="font-size:11px;">Source: : CBO March 2025, The Long-Term Budget Outlook: 2025 to 2055, author\'s ' \
232
  'calculations from Supplemental Table 1. Scenario of higher interest rate and revenues '
233
  'is author\'s calculations. Historical Social Security OASDI payroll tax revenue from Table 4-3 of the ' \
 
237
  # Set up an action that updates the graph when the interest rate slider value changes
238
  interest_rate_slider.change(
239
  plot_interest_coverage,
240
+ inputs = [interest_rate_slider, cagr_revenues_slider, cagr_ssoasdi_revenues_slider],
241
  outputs = graph
242
  )
243
 
244
  # Set up an action that updates the graph when the revenues slider value changes
245
  cagr_revenues_slider.change(
246
  plot_interest_coverage,
247
+ inputs = [interest_rate_slider, cagr_revenues_slider, cagr_ssoasdi_revenues_slider],
248
+ outputs = graph
249
+ )
250
+
251
+ # Set up an action that updates the graph when the ssoasdi revenues slider value changes
252
+ cagr_ssoasdi_revenues_slider.change(
253
+ plot_interest_coverage,
254
+ inputs = [interest_rate_slider, cagr_revenues_slider, cagr_ssoasdi_revenues_slider],
255
  outputs = graph
256
  )
257
 
graph_data.xlsx CHANGED
Binary files a/graph_data.xlsx and b/graph_data.xlsx differ