Joseph Spada commited on
Commit
04f6a57
·
1 Parent(s): 90c3d4c

cagr revenues functionality

Browse files
Files changed (1) hide show
  1. app.py +36 -24
app.py CHANGED
@@ -33,14 +33,15 @@ print(data)
33
 
34
  # %%
35
  baseline_interest_rate = 3.67
36
- baseline_revenues = 15928.73
 
37
 
38
- def plot_interest_coverage(interest_rate, revenues):
39
 
40
  # calculate the yearly increase in the interest rate based on the projected interest rate in 2054
41
  interest_rate_yearly_increase = (interest_rate - baseline_interest_rate) / (2054 - 2025) / 100
42
  # calculate the yearly increase in revenues based on the projected interest rate in 2054
43
- revenues_yearly_increase = (revenues - baseline_revenues) / (2054 - 2025)
44
 
45
  # add a baseline net interest / revenues column
46
  data["Net Interest / Revenues (Baseline)"] = data["Net Interest"] / data["Total Revenues"]
@@ -48,33 +49,37 @@ def plot_interest_coverage(interest_rate, revenues):
48
  # add a baseline net interest / revenues ex SS OASDI column
49
  data["Net Interest / Revenues ex SS OASDI (Baseline)"] = data["Net Interest"] / data["Revenues ex SS OASDI"]
50
 
 
 
 
51
  # add a projected average rate on federal debt column
52
  data["Average Rate on Federal Debt (Projected)"] = np.where(
53
- data["Year"].astype(int) < 2026,
54
  data["Average Rate on Federal Debt"],
55
- data["Average Rate on Federal Debt"] + (interest_rate_yearly_increase * (data["Year"].astype(int) - 2025)))
56
 
57
  # add a projected revenues column
58
  data["Total Revenues (Projected)"] = np.where(
59
- data["Year"].astype(int) < 2026,
60
  data["Total Revenues"],
61
- data["Total Revenues"] + (revenues_yearly_increase * (data["Year"].astype(int) - 2025)))
 
62
 
63
  # add a projected revenues ex SS OASDI column
64
  data["Revenues ex SS OASDI (Projected)"] = np.where(
65
- data["Year"].astype(int) < 2026,
66
  data["Revenues ex SS OASDI"],
67
- data["Revenues ex SS OASDI"] + (revenues_yearly_increase * (data["Year"].astype(int) - 2025)))
68
 
69
  # add a projected interest / revenues column
70
  data["Net Interest / Revenues (Projected)"] = np.where(
71
- data["Year"].astype(int) < 2026,
72
  data["Net Interest / Revenues (Baseline)"],
73
  data["Average Rate on Federal Debt (Projected)"] * data["Debt Balance"] / data["Total Revenues (Projected)"])
74
 
75
  # add a projected interest / revenues ex SS OASDI column
76
  data["Net Interest / Revenues ex SS OASDI (Projected)"] = np.where(
77
- data["Year"].astype(int) < 2026,
78
  data["Net Interest / Revenues ex SS OASDI (Baseline)"],
79
  data["Average Rate on Federal Debt (Projected)"] * data["Debt Balance"] / data["Revenues ex SS OASDI (Projected)"])
80
 
@@ -144,12 +149,15 @@ def plot_interest_coverage(interest_rate, revenues):
144
  interest_rate_lowerbound = 0
145
  interest_rate_upperbound = 15
146
 
147
- revenues_lower_bound = 10000
148
- revenues_upper_bound = 20000
 
 
 
149
 
150
  with gr.Blocks() as interface:
151
  # Create the image output
152
- graph = gr.Image(type="filepath", label = "Graph", value = plot_interest_coverage(baseline_interest_rate, baseline_revenues))
153
 
154
  # Create the slider input below the image for projected interest rate
155
  interest_rate_slider = gr.Slider(
@@ -161,27 +169,31 @@ with gr.Blocks() as interface:
161
  )
162
 
163
  # Create the slider input below the image for projected revenues
164
- revenues_slider = gr.Slider(
165
- revenues_lower_bound,
166
- revenues_upper_bound,
167
- step = 50,
168
- value = baseline_revenues,
169
- label = "2054 Projected Revenues ($B)"
170
  )
171
 
172
- gr.Markdown('<p style="font-size:11px;">Source: CBO June 2024 An Update to the Budget and Economic Outlook: 2024 to 2034, March 2024 report The Long-Term Budget Outlook: 2024 to 2054, and author\'s calculations. Scenario of higher interest rate is author\'s calculations. Data points for 2035-2054 calculated to build on CBO\'s June 2024 10-year update and be consistent with the March 2024 long-term report. Historical Social Security OASDI payroll tax revenue from Table 4-3 of the SSA\'s Trust Fund Data, and projections from the CBO\'s August 2024 Long Term Projections for Social Security.</p>')
 
 
 
 
173
 
174
  # Set up an action that updates the graph when the interest rate slider value changes
175
  interest_rate_slider.change(
176
  plot_interest_coverage,
177
- inputs = [interest_rate_slider, revenues_slider],
178
  outputs = graph
179
  )
180
 
181
  # Set up an action that updates the graph when the revenues slider value changes
182
- revenues_slider.change(
183
  plot_interest_coverage,
184
- inputs = [interest_rate_slider, revenues_slider],
185
  outputs = graph
186
  )
187
 
 
33
 
34
  # %%
35
  baseline_interest_rate = 3.67
36
+ #baseline_revenues = 15928.73
37
+ baseline_cagr_revenues = 4.02
38
 
39
+ def plot_interest_coverage(interest_rate, cagr_revenues):
40
 
41
  # calculate the yearly increase in the interest rate based on the projected interest rate in 2054
42
  interest_rate_yearly_increase = (interest_rate - baseline_interest_rate) / (2054 - 2025) / 100
43
  # calculate the yearly increase in revenues based on the projected interest rate in 2054
44
+ # revenues_yearly_increase = (revenues - baseline_revenues) / (2054 - 2025)
45
 
46
  # add a baseline net interest / revenues column
47
  data["Net Interest / Revenues (Baseline)"] = data["Net Interest"] / data["Total Revenues"]
 
49
  # add a baseline net interest / revenues ex SS OASDI column
50
  data["Net Interest / Revenues ex SS OASDI (Baseline)"] = data["Net Interest"] / data["Revenues ex SS OASDI"]
51
 
52
+ # add a baseline SS OASDI revenues column
53
+ data["SS OASDI Revenues"] = data["Total Revenues"] - data["Revenues ex SS OASDI"]
54
+
55
  # add a projected average rate on federal debt column
56
  data["Average Rate on Federal Debt (Projected)"] = np.where(
57
+ data["Year"].astype(int) < 2025,
58
  data["Average Rate on Federal Debt"],
59
+ data["Average Rate on Federal Debt"] + (interest_rate_yearly_increase * (data["Year"].astype(int) - 2024)))
60
 
61
  # add a projected revenues column
62
  data["Total Revenues (Projected)"] = np.where(
63
+ data["Year"].astype(int) < 2025,
64
  data["Total Revenues"],
65
+ # data["Total Revenues"] + (revenues_yearly_increase * (data["Year"].astype(int) - 2025)))
66
+ data["Total Revenues"] + (1 + (cagr_revenues / 100) ** (data["Year"].astype(int) - 2024)))
67
 
68
  # add a projected revenues ex SS OASDI column
69
  data["Revenues ex SS OASDI (Projected)"] = np.where(
70
+ data["Year"].astype(int) < 2025,
71
  data["Revenues ex SS OASDI"],
72
+ data["SS OASDI Revenues"] + data["Total Revenues (Projected)"])
73
 
74
  # add a projected interest / revenues column
75
  data["Net Interest / Revenues (Projected)"] = np.where(
76
+ data["Year"].astype(int) < 2025,
77
  data["Net Interest / Revenues (Baseline)"],
78
  data["Average Rate on Federal Debt (Projected)"] * data["Debt Balance"] / data["Total Revenues (Projected)"])
79
 
80
  # add a projected interest / revenues ex SS OASDI column
81
  data["Net Interest / Revenues ex SS OASDI (Projected)"] = np.where(
82
+ data["Year"].astype(int) < 2025,
83
  data["Net Interest / Revenues ex SS OASDI (Baseline)"],
84
  data["Average Rate on Federal Debt (Projected)"] * data["Debt Balance"] / data["Revenues ex SS OASDI (Projected)"])
85
 
 
149
  interest_rate_lowerbound = 0
150
  interest_rate_upperbound = 15
151
 
152
+ # revenues_lower_bound = 10000
153
+ # revenues_upper_bound = 20000
154
+
155
+ cagr_revenues_lower_bound = -3
156
+ cagr_revenues_upper_bound = 8
157
 
158
  with gr.Blocks() as interface:
159
  # Create the image output
160
+ graph = gr.Image(type="filepath", label = "Graph", value = plot_interest_coverage(baseline_interest_rate, baseline_cagr_revenues))
161
 
162
  # Create the slider input below the image for projected interest rate
163
  interest_rate_slider = gr.Slider(
 
169
  )
170
 
171
  # Create the slider input below the image for projected revenues
172
+ cagr_revenues_slider = gr.Slider(
173
+ cagr_revenues_lower_bound,
174
+ cagr_revenues_upper_bound,
175
+ step = 0.01,
176
+ value = baseline_cagr_revenues,
177
+ label = "Revenues Compound Annual Growth Rate through 2054"
178
  )
179
 
180
+ gr.Markdown('<p style="font-size:11px;">Source: CBO June 2024 An Update to the Budget and Economic Outlook: 2024 to 2034, '
181
+ 'March 2024 report The Long-Term Budget Outlook: 2024 to 2054, and author\'s calculations. Scenario of higher interest rate and revenues'
182
+ 'is author\'s calculations. Data points for 2035-2054 calculated to build on CBO\'s June 2024 10-year update and be consistent '
183
+ 'with the March 2024 long-term report. Historical Social Security OASDI payroll tax revenue from Table 4-3 of the SSA\'s '
184
+ 'Trust Fund Data, and projections from the CBO\'s August 2024 Long Term Projections for Social Security.</p>')
185
 
186
  # Set up an action that updates the graph when the interest rate slider value changes
187
  interest_rate_slider.change(
188
  plot_interest_coverage,
189
+ inputs = [interest_rate_slider, cagr_revenues_slider],
190
  outputs = graph
191
  )
192
 
193
  # Set up an action that updates the graph when the revenues slider value changes
194
+ cagr_revenues_slider.change(
195
  plot_interest_coverage,
196
+ inputs = [interest_rate_slider, cagr_revenues_slider],
197
  outputs = graph
198
  )
199