Spaces:
Sleeping
Sleeping
Joseph Spada
commited on
Commit
·
04f6a57
1
Parent(s):
90c3d4c
cagr revenues functionality
Browse files
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,
|
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) <
|
54 |
data["Average Rate on Federal Debt"],
|
55 |
-
data["Average Rate on Federal Debt"] + (interest_rate_yearly_increase * (data["Year"].astype(int) -
|
56 |
|
57 |
# add a projected revenues column
|
58 |
data["Total Revenues (Projected)"] = np.where(
|
59 |
-
data["Year"].astype(int) <
|
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) <
|
66 |
data["Revenues ex SS OASDI"],
|
67 |
-
data["
|
68 |
|
69 |
# add a projected interest / revenues column
|
70 |
data["Net Interest / Revenues (Projected)"] = np.where(
|
71 |
-
data["Year"].astype(int) <
|
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) <
|
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,
|
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 |
-
|
165 |
-
|
166 |
-
|
167 |
-
step =
|
168 |
-
value =
|
169 |
-
label = "
|
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,
|
|
|
|
|
|
|
|
|
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,
|
178 |
outputs = graph
|
179 |
)
|
180 |
|
181 |
# Set up an action that updates the graph when the revenues slider value changes
|
182 |
-
|
183 |
plot_interest_coverage,
|
184 |
-
inputs = [interest_rate_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 |
|