In fiscal policy, macroeconomic modeling, and public economics, evaluating the net redistributive effect of a tax-and-transfer system requires measuring how effectively government interventions reduce economic inequality. The Reynolds-Smolensky Index is the standard econometric benchmark for overall fiscal redistribution. Calculated as the difference between the Gini coefficient of pre-tax income ((G_{pre})) and the Concentration Index of post-tax/post-transfer income ((C_{post})), it quantifies vertical equity. In Microsoft Excel, leveraging modern dynamic arrays alongside LAMBDA, SORT, and VSTACK allows analysts to construct self-updating fiscal redistribution dashboards without macro dependencies.
Understanding the Reynolds-Smolensky Formulation
The Reynolds-Smolensky Index ((RS)) is defined mathematically as:
RS = G_{pre} - C_{post}
- (G_{pre}) (Pre-Fiscal Gini): Measures the baseline income disparity across market earnings before tax deductions and welfare transfers.
- (C_{post}) (Post-Fiscal Concentration Index): Measures the distribution of post-tax disposable income when economic units remain strictly sorted by their pre-tax income ranking.
- (RS > 0) (Progressive Redistribution): Fiscal policies reduce overall inequality, shifting resources toward lower-income households.
- (RS = 0) (Neutral Policy): The combined tax and transfer structure exerts zero net influence on relative income shares.
- (RS < 0) (Regressive Policy): Fiscal interventions inadvertently widen economic disparities.
Authoring the Dynamic LAMBDA Fiscal Concentration Engine
To compute concentration indices without cumbersome spreadsheet sort operations, author a reusable LAMBDA formula using LET:
=LAMBDA(pre_income, post_income,
LET(
valid, FILTER(HSTACK(pre_income, post_income), ISNUMBER(pre_income) * (pre_income > 0)),
s, SORT(valid, 1, 1),
y_pre, CHOOSECOLS(s, 1),
y_post, CHOOSECOLS(s, 2),
n, ROWS(s),
ranks, SEQUENCE(n),
weights, 2 * ranks - n - 1,
gini_pre, SUM(weights * y_pre) / (n * SUM(y_pre)),
conc_post, SUM(weights * y_post) / (n * SUM(y_post)),
rs_index, gini_pre - conc_post,
rs_index
)
)
Constructing the Executive Summary Dashboard with VSTACK
Assume pre-tax earnings reside in A2:A40 and final disposable income resides in B2:B40. Construct a comprehensive report table:
=LET(
pre_tax, A2:A40,
post_tax, B2:B40,
valid_data, FILTER(HSTACK(pre_tax, post_tax), ISNUMBER(pre_tax) * (pre_tax > 0)),
sorted_data, SORT(valid_data, 1, 1),
y_pre, CHOOSECOLS(sorted_data, 1),
y_post, CHOOSECOLS(sorted_data, 2),
n_count, ROWS(sorted_data),
r_seq, SEQUENCE(n_count),
w_vec, 2 * r_seq - n_count - 1,
g_pre, SUM(w_vec * y_pre) / (n_count * SUM(y_pre)),
c_post, SUM(w_vec * y_post) / (n_count * SUM(y_post)),
rs_val, g_pre - c_post,
pct_reduction, rs_val / g_pre,
headers, HSTACK("Fiscal Policy Metric", "Index Value", "Policy Impact"),
row1, HSTACK("Pre-Fiscal Market Gini (G_pre)", TEXT(g_pre, "0.0000"), "Baseline Market Disparity"),
row2, HSTACK("Post-Fiscal Concentration (C_post)", TEXT(c_post, "0.0000"), "Disposable Income Distribution"),
row3, HSTACK("Reynolds-Smolensky Index (RS)", TEXT(rs_val, "0.0000"), IF(rs_val > 0.05, "Substantial Redistribution", IF(rs_val > 0, "Moderate Redistribution", "Regressive System"))),
row4, HSTACK("Relative Inequality Reduction", TEXT(pct_reduction, "0.0%"), "Percentage Disparity Offset"),
VSTACK(headers, row1, row2, row3, row4)
)
Key Methodological Strengths
- Preserves Pre-Fiscal Ranking: Strictly computes (C_{post}) against pre-tax order, capturing true vertical equity without conflating reranking effects.
- Single-Cell Dynamic Spill: The formula updates instantly when source numbers are edited, spilling formatted indicators across adjacent columns automatically.
- Modular Portability: Define
CALC_REYNOLDS_SMOLENSKYin Name Manager to enable fiscal analysis teams to evaluate fiscal budgets with zero VBA scripts.