Assessing multi-period household income vulnerability requires directional transition measures capable of capturing origin-dependent social risk alongside rank-weighted destination deprivation penalties. The Jenkins-Cowell rank mobility framework combines origin status sensitivity with Cowell-style destination penalties and relative population rank weights, penalising downward transitions that trap families in bottom-tier economic brackets. By implementing dynamic LAMBDA and VSTACK algorithms in Microsoft Excel, quantitative researchers can construct real-time Jenkins-Cowell rank downside mobility models without external statistical packages.
Mathematical Foundations of Jenkins-Cowell Rank Downside Mobility
The Jenkins-Cowell rank downside framework incorporates an origin-sensitivity parameter $alpha > 0$ and a destination-aversion parameter $eta > 0$. For an $n imes n$ decile transition matrix $P$ where $P_{ij}$ represents the probability of moving from decile $i$ to decile $j$:
$$JCR_{down} = sum_{i > j} P_{ij} cdot left(rac{i – j}{i} ight)^alpha cdot left[1 – left(rac{j}{n} ight)^eta ight] cdot left(rac{n – j + 1}{n} ight)$$
When all parameters are applied, downward transitions from middle-income deciles into chronic poverty receive compounding ethical penalties on the aggregate mobility index.
Authoring the Dynamic LAMBDA Formula
Create a named formula JCR_COWELL_DOWNSIDE inside Excel’s Name Manager:
=LAMBDA(transition_matrix, alpha_param, beta_param,
LET(
n, ROWS(transition_matrix),
row_seq, SEQUENCE(n, 1, 1, 1),
col_seq, SEQUENCE(1, n, 1, 1),
is_downside, row_seq > col_seq,
rel_drop, IF(is_downside, ((row_seq - col_seq) / row_seq) ^ alpha_param, 0),
poverty_penalty, IF(is_downside, 1 - ((col_seq / n) ^ beta_param), 0),
rank_weight, (n - col_seq + 1) / n,
weighted_loss, IF(is_downside, transition_matrix * rel_drop * poverty_penalty * rank_weight, 0),
jcr_score, SUM(weighted_loss),
jcr_score
)
)
Stacking Multi-Period Longitudinal Results with VSTACK
Consolidate multi-decade panel survey data into an automated summary dashboard using VSTACK:
=LET(
cohort1990, Panel1990[#Data],
cohort2000, Panel2000[#Data],
cohort2010, Panel2010[#Data],
cohort2020, Panel2020[#Data],
alpha, 1.4,
beta, 2.0,
jcr1, JCR_COWELL_DOWNSIDE(cohort1990, alpha, beta),
jcr2, JCR_COWELL_DOWNSIDE(cohort2000, alpha, beta),
jcr3, JCR_COWELL_DOWNSIDE(cohort2010, alpha, beta),
jcr4, JCR_COWELL_DOWNSIDE(cohort2020, alpha, beta),
headers, HSTACK("Observation Window", "Jenkins-Cowell Rank Downside Vulnerability Index"),
r1, HSTACK("1990-2000", jcr1),
r2, HSTACK("2000-2010", jcr2),
r3, HSTACK("2010-2020", jcr3),
r4, HSTACK("2020-2030 (Est)", jcr4),
VSTACK(headers, r1, r2, r3, r4)
)
Sensitivity Testing and Model Verification
Ensure that all transition matrix rows sum to 100%. Adjusting $alpha$ and $eta$ in linked cells allows researchers to stress-test differing degrees of social risk aversion across all stacked cohort comparisons simultaneously.