Modern Matthew Effect

Capital Lock-In, Declining Mobility and Social Welfare

Author

gitSAM

Published

March 28, 2025

Abstract
돈도 많은 애들 중에서도, 작년에 돈 제일 많이 벌었던 애들이 다음 달에 또 벌 확률이 높았다

1 Introduction

This report extends my empirical findings from the ME5 PRIOR research portfolios (of Fama and French) into a broader philosophical and socioeconomic interpretation. I draw connections between large-cap momentum dynamics in capital markets and foundational ideas from ethics, social choice theory, and political philosophy.

The core phenomenon observed—persistent outperformance among firms that are already the largest and most successful—bears striking resemblance to the biblical and sociological concept of the Matthew Effect:

“For to every one who has, more will be given…” — Matthew 25:29

In financial markets, this is not merely a parable—it is measurable, structural, and persistent. It reveals that what appears to be a free, fair, and competitive economy may in fact be a self-reinforcing regime of privilege, cloaked under the language of freedom, equality, fairness, and consent—the founding pillars of liberal democracy.

2 Structural Inequality at the Firm level

My analysis of the ME5 PRIOR portfolios revealed the following:

  • Even within the top 20% of firms by market capitalization (ME5), those that performed best in the prior 11 months (PRIOR5) tend to continue outperforming in the subsequent period.
  • This effect is particularly strong post-2010, aligning with macroeconomic changes such as quantitative easing, the rise of passive investing, and capital concentration.
  • This implies a reinforcing feedback loop: prior success draws more capital, more capital enables further success, and performance becomes increasingly decoupled from diversification.

The analogy to social mobility is immediate: those who have, get more—not just relatively, but absolutely and increasingly.

3 The Matthew Effect at the Household Level

If capital lock-in dynamics operate not only at the firm level but also across households—a plausible and empirically supported assumption—the implications are far-reaching:

  • Wealthy households benefit disproportionately from capital gains and passive income
  • Lower- and middle-income households rely predominantly on labor income, with limited upside
  • The result is a declining probability of upward mobility, and increasing wealth stratification

This structure undermines the ideal of a meritocratic liberal democracy where opportunity is equitably distributed and fairness is institutionalized. In reality, the capital system begins to resemble a rigged equilibrium, where the initial balance is illusionary—a symbolic counterweight with no real effect.

4 The Philosophical Lens: Arrow, Spinoza, and Pascal

Arrow’s utilitarian social welfare framework assumes at least some degree of fairness and fluidity among agents. But in a setting of structural inequality and declining mobility:

  • The expected utility of society does not necessarily increase, even if total capital grows
  • The bottom half of society may experience static or declining utility, overwhelmed by the persistent rise of the elite

From a Spinozist viewpoint, this is a failure of a rational, self-sustaining society—it lacks balance and cohesion. For Pascal, it raises the existential irony of a system designed for all, yet serving few.

And if we apply Rawls’ difference principle, we see an institutional failure to justify inequality based on benefit to the least advantaged. Liberal democracy, viewed from the perspective of financial capitalism, begins to fracture: the ideals of liberty, fairness, and equality become ceremonial rather than structural.

5 Toward a New Interpretation of Market Performance

In light of this, the ME5 PRIOR5 outperformance is no longer just a quantitative anomaly or a smart strategy. It is a signal—a structural symptom of capitalistic reinforcement, not unlike a planetary orbit deepening into a gravity well.

Thus, our empirical findings do more than guide portfolio construction. They challenge how we: - Model efficiency in capital markets - Measure welfare in society - Justify inequality under modern capitalism

6 Conclusion

The Matthew Effect is not just a biblical principle—it is a lived, structural condition of our financial and social reality.

The capital markets amplify this dynamic, and unless counterbalanced by social, policy, or philosophical intervention, it threatens not only equity, but long-term stability and collective welfare.

7 Appendix: ME5 PRIOR Portfolios

In this report, I examined the persistence of momentum within the top market-cap group (ME5) using the Fama-French 25 Portfolios sorted by size and prior return. Specifically, I analyzed how the performance of five portfolios (PRIOR1 to PRIOR5), sorted by prior 11-month returns within the ME5 group, has evolved between two distinct market regimes: pre-2010 and post-2010.

The results are striking.

Even among the largest companies (top 20% by market cap), those that performed best over the prior year continued to outperform in the next month—both in the pre and post-2010 market regime.

What initially seemed like a behavioral or statistical curiosity turns out to reflect a deeper transformation of the market’s internal structure—a transformation where capital flows, visibility, and narrative dominance now reinforce past winners among the already-rich. In this setting, the language of freedom, fairness, and opportunity—so essential to liberal democracy—becomes less about equal access and more about locked-in advantage. The market becomes a mirror, not of fair competition, but of Matthew Effect dynamics, where “to those who have, more shall be given.”

For risk-aware investors engaged in short-term, monthly rebalancing, the implications are concrete:

  • PRIOR3 offers exceptional consistency with lower volatility and downside exposure
  • PRIOR5 delivers superior absolute return with tolerable risk
  • Both are based on highly liquid, mega-cap stocks, making them operationally feasible and institutionally scalable

In short: Even among the richest firms, past winners tend to keep winning.
Momentum is no longer a temporary anomaly. It is part of the architecture.

This realization challenges equilibrium-based pricing models and calls into question our normative assumptions about economic fairness. If capital accumulates in a non-reverting way among the already-powerful, mobility collapses—and with it, the utilitarian social welfare that undergirds Arrow’s idealized world of dynamic fairness. What remains is a hollow pendulum: a financial system that swings, but never truly balances.

7.1 Methodology

We compute a comprehensive set of performance metrics (e.g., annualized return, Sharpe, Sortino, Calmar, Omega, expected CRRA utility) for each ME5 PRIOR portfolio across two structural periods:

  • Pre-2010: January 1996 to December 2009
  • Post-2010: January 2010 to December 2023

All returns are monthly and expressed as decimals (net of compounding). Metrics are calculated for value-weighted portfolios of NYSE-listed firms within ME5, using prior 11-month cumulative returns (excluding the most recent month) to define momentum quintiles.

7.2 Empirical Summary and Interpretation

  • Pre-2010:
    • PRIOR5 was most effective for risk-adjusted returns (e.g. Sharpe , Sortino)
    • PRIOR4 had higher return, but more volatility and negative skew
    • PRIOR1 severely underperformed (negative average return, deep drawdowns)
  • Post-2010:
    • Momentum dominance continued
    • PRIOR4 exhibits top raw returns and Sortino.
    • Both dominate the risk-return landscape with resilience and predictability

The market is no longer cyclical, but directional; no longer egalitarian, but reinforcing. Passive capital flows, QE-induced yield suppression, and index-based exposure collectively sustain a regime where “winners win more, losers lag longer.” If the ideal of equal opportunity was once the balancing pendulum of a free market society, the modern financial system now swings in only one direction.

7.3 ME5 PRIOR Performance Comparison

Code
import pandas as pd
import numpy as np
import os

# 1. 경로 및 기간 설정
DATA_PATH = "../data/25_Portfolios_ME_Prior_12_2.csv"
start_date = '1996-01-01'
end_date = '2023-12-31'

# 2. CSV 파일 로드
# FF 데이터는 상단 설명이 유동적이므로, 실제 데이터 헤더(SMALL LoPRIOR 등)가 있는 줄을 찾습니다.
# 보통 'Average Value Weighted Returns' 이후 첫 번째 빈 줄 다음에 데이터가 시작됩니다.
# 여기서는 안정성을 위해 skiprows 대신 전처리 로직을 사용합니다.
with open(DATA_PATH, 'r') as f:
    lines = f.readlines()

# 데이터가 시작되는 헤더 행 인덱스 찾기
start_idx = 0
for i, line in enumerate(lines):
    if "Average Value Weighted Returns -- Monthly" in line:
        start_idx = i + 1
        break

# 3. 데이터프레임 생성 및 정제
# skiprows를 통해 월별 데이터 시작점부터 읽어들임
df_raw = pd.read_csv(DATA_PATH, skiprows=start_idx)
df_raw.rename(columns={df_raw.columns[0]: 'Date'}, inplace=True)

# 데이터 정제 로직
# - Date가 6자리 숫자(YYYYMM)인 행만 필터링 (하단 텍스트 및 연간 데이터 자동 제거)
df_raw['Date'] = df_raw['Date'].astype(str).str.strip()
ff_df = (
    df_raw[df_raw['Date'].str.isdigit() & (df_raw['Date'].str.len() == 6)].copy()
    # 결측치 처리 (-99.99, -999를 NaN으로 변환)
    .replace([-99.99, -999, "-99.99", "-999"], np.nan)
    # 수치 데이터 변환 및 수익률 정규화 (Percentage to Decimal)
    .apply(lambda x: pd.to_numeric(x, errors='coerce') if x.name != 'Date' else x)
    .assign(
        # 날짜를 Datetime 객체로 변환 후 월말 기준으로 조정
        date_dt=lambda x: pd.to_datetime(x['Date'], format='%Y%m'),
        date=lambda x: x['date_dt'].dt.to_period('M').dt.to_timestamp('M')
    )
)

# 수익률 컬럼만 100으로 나눔 (Date 관련 컬럼 제외)
cols_to_div = [c for c in ff_df.columns if c not in ['Date', 'date_dt', 'date']]
ff_df[cols_to_div] = ff_df[cols_to_div] / 100

# 4. 최종 필터링 및 정리
ff_df = (
    ff_df
    .query("date >= @start_date and date <= @end_date")
    .drop(columns=['Date', 'date_dt'])
    .set_index('date')
)
Code
from scipy.stats import skew, kurtosis

# Define evaluation functions
p = 0.005 # 0.5% 월간 수익률 threshold
eta = 3 # CRRA risk-aversion parameter

# (2) Extract ME5 PRIOR portfolios and convert to net return
me5_prior = pd.DataFrame({
    'PRIOR1': ff_df['BIG LoPRIOR'],
    'PRIOR2': ff_df['ME5 PRIOR2'],
    'PRIOR3': ff_df['ME5 PRIOR3'],
    'PRIOR4': ff_df['ME5 PRIOR4'],
    'PRIOR5': ff_df['BIG HiPRIOR'],
}) / 100  # convert % to net return

# me5_prior.index = me5_prior.index.to_timestamp()

# (3) Split: pre-2010 vs post-2010
split_date = pd.to_datetime("2010-01-01")
me5_prior_pre = me5_prior[me5_prior.index < split_date]
me5_prior_post = me5_prior[me5_prior.index >= split_date]

# (4) Metric definitions
def annualized_return(r): return (1 + r).prod()**(12 / len(r)) - 1
def annualized_volatility(r): return r.std() * np.sqrt(12)
def sharpe_ratio(r): return (r.mean() / r.std()) * np.sqrt(12)
def sortino_ratio(r): return (r.mean() / r[r < 0].std()) * np.sqrt(12)
def omega_ratio(r, threshold=p):
    gains = r[r > threshold] - threshold
    losses = threshold - r[r < threshold]
    return gains.sum() / losses.sum() if losses.sum() > 0 else np.nan
def max_drawdown(r):
    cum = (1 + r).cumprod()
    peak = cum.cummax()
    dd = (cum - peak) / peak
    return dd.min()
def calmar_ratio(r):
    ar = annualized_return(r)
    mdd = max_drawdown(r)
    return ar / abs(mdd) if mdd < 0 else np.nan
def expected_crra(r, eta=eta):
    x = 1 + r
    util = (x**(1 - eta) - 1) / (1 - eta)
    return util.mean()
def fisher_skewness(r): return skew(r, bias=False)
def excess_kurtosis(r): return kurtosis(r, fisher=True, bias=False)

metrics = {
    "Annualized Return": annualized_return,
    "Annualized Volatility": annualized_volatility,
    "Sharpe Ratio": sharpe_ratio,
    "Sortino Ratio": sortino_ratio,
    "Omega Ratio": omega_ratio,
    "Calmar Ratio": calmar_ratio,
    "Expected CRRA": expected_crra,
    "Fisher Skewness": fisher_skewness,
    "Excess Kurtosis": excess_kurtosis
}

# (5) Evaluate for each period
def evaluate_metrics(df):
    return pd.DataFrame({
        port: {name: func(df[port]) for name, func in metrics.items()}
        for port in df.columns
    }).T

result_pre = evaluate_metrics(me5_prior_pre)
result_post = evaluate_metrics(me5_prior_post)

7.3.1 Performance Metrics for ME5 PRIOR Portfolios

Performance Metrics (Pre-2010)
Annualized Return Annualized Volatility Sharpe Ratio Sortino Ratio Omega Ratio Calmar Ratio Expected CRRA Fisher Skewness Excess Kurtosis
PRIOR1 7.8213 3.1831 1.3566 647.5066 78.4751 12.3992 0.0710 2.6710 6.4006
PRIOR2 10.7733 3.7290 1.4003 1090.7826 119.5565 39.4887 0.0751 2.4445 4.7459
PRIOR3 11.5937 3.6764 1.4441 1484.0847 141.4510 235.5084 0.0770 2.3241 4.2196
PRIOR4 11.8233 3.6866 1.4455 2084.2004 171.0187 510.3580 0.0781 2.4082 4.9977
PRIOR5 9.8433 3.1800 1.4680 3417.6527 205.9898 1408.7229 0.0781 2.2794 3.9941
Performance Metrics (Post-2010)
Annualized Return Annualized Volatility Sharpe Ratio Sortino Ratio Omega Ratio Calmar Ratio Expected CRRA Fisher Skewness Excess Kurtosis
PRIOR1 24.2180 6.6109 1.3357 1658.1129 167.0860 45.7870 0.0790 3.2461 12.7525
PRIOR2 37.3451 8.1053 1.3784 3461.0861 270.2037 277.6575 0.0816 2.8566 8.6804
PRIOR3 43.3758 8.4004 1.4229 6893.1451 337.1250 3618.3007 0.0827 2.4884 5.5650
PRIOR4 44.4904 8.7238 1.4016 11344.6976 405.0244 18821.3868 0.0833 2.6431 6.8200
PRIOR5 41.6041 9.1821 1.3267 11277.9888 536.6348 14718.6095 0.0838 3.1783 11.6263

Risk-adjusted metrics highlight structural momentum persistence.

7.3.2 Performance comparison of ME5 PRIOR portfolios

Annualized return, Sharpe ratio (r_f=0), and Expected CRRA (eta=3) show consistent momentum even among the top 20% in size.