Januar-Effekt
Gibt es ihn wirklich oder ist es nur ein Mythos. Es geht um den Januar-Effekt. Wir erklären in diesem Beitrag worum es geht und ob du diesen Effekt für dein Trading nutzen kannst.
Im Trading gibt es viele Mythen. Manche entstehen aus Einzelfällen, andere halten sich über Jahrzehnte. Einer der bekanntesten ist der sogenannte Januar-Effekt. Die Grundidee dahinter ist einfach:
Wie sich der Markt in den ersten Handelstagen des Jahres verhält, soll Hinweise auf den weiteren Jahresverlauf liefern.
Konkret geht es häufig um die Regel der ersten fünf Handelstage im Januar. Startet der Markt in dieser Phase positiv, soll auch das Gesamtjahr überdurchschnittlich gut verlaufen. Startet er schwach, drohe ein schwieriges Börsenjahr. Die daraus abgeleitete Strategie klingt verführerisch einfach: Investiere nur dann, wenn der Januar gut beginnt.
Doch ist das wirklich mehr als eine schöne Geschichte? Um diese Frage zu beantworten, haben wir den Januar-Effekt nicht nur oberflächlich betrachtet, sondern systematisch und datenbasiert mit Python untersucht – über mehrere Jahrzehnte und verschiedene wichtige Aktienindizes hinweg.
Bevor wir zu unseren eigenen Ergebnissen kommen, lohnt sich ein Blick auf die wissenschaftliche Forschung. Denn der Januar-Effekt ist kein Konzept aus YouTube-Videos oder Social-Media-Posts. Er gehört zu den ältesten und am besten dokumentierten Kalenderanomalien der Kapitalmarktforschung.
Bereits in den 1970er-Jahren wurde erstmals systematisch untersucht, dass Aktienrenditen im Januar auffällig hoch ausfallen. In den folgenden Jahrzehnten beschäftigten sich zahlreiche Forscher mit der Frage, ob es sich dabei um einen echten Markteffekt oder lediglich um einen statistischen Zufall handelt.
Ein besonders wichtiger Meilenstein war die Erkenntnis, dass der Januar-Effekt nicht überall gleich stark auftritt. Früh zeigte sich, dass er vor allem bei Small Caps und wachstumsorientierten Aktien stärker ausgeprägt ist als bei großen, etablierten Blue-Chip-Unternehmen. Erklärungsansätze reichten von steuerlich motivierten Verkäufen zum Jahresende über institutionelle Rebalancings bis hin zu psychologischen Effekten rund um den Jahreswechsel.
Später verlagerte sich der Fokus der Forschung: Weg von der Frage, ob es im Januar höhere Renditen gibt, hin zu der Frage, ob der Januar selbst Informationen über den Rest des Jahres enthält. Genau hier setzt der sogenannte „Other January Effect“ an – also die Idee, dass der Jahresstart als eine Art Stimmungs- oder Regimeindikator fungiert.
Ein wichtiges Ergebnis vieler Studien lautet:
Der Effekt ist real, aber nicht konstant, nicht überall und nicht als alleinige Handelsstrategie geeignet. Je bekannter er wurde, desto schwächer fiel er in manchen Märkten aus. Gleichzeitig blieb er in bestimmten Segmenten erstaunlich robust.
Diese Einordnung ist entscheidend – und genau hier knüpft unsere eigene Analyse an.
Um den Januar-Effekt datenbasiert zu überprüfen, haben wir eine systematische Analyse mit historischen Marktdaten durchgeführt. Untersucht wurden die ersten fünf Handelstage im Januar und deren Zusammenhang mit dem weiteren Jahresverlauf.
Als Datenquelle diente Yahoo Finance. Für die US-Märkte wurden bewusst handelbare ETFs (SPY, QQQ, IWM, DIA) verwendet, anstatt der reinen Indexstände. Für den deutschen Markt kam der DAX zum Einsatz. Alle Kursdaten sind dividenden- und splitbereinigt (Total-Return-Daten), sodass die berechneten Renditen dem tatsächlichen Anlageergebnis eines Investors entsprechen.
download(ticker, start=START, end=END, auto_adjust=True, progress=False)
Für jedes Jahr wurde geprüft, ob der Januarstart positiv oder negativ ausfiel, und wie sich das Börsenjahr insgesamt entwickelte. In einem ersten Schritt wurden einfache Kennzahlen wie Trefferquoten und durchschnittliche Jahresrenditen ausgewertet, um die grundsätzliche Richtung und Größenordnung des Effekts sichtbar zu machen.
Da pro Jahr nur eine Beobachtung existiert und die Stichprobe begrenzt ist, wurden die Ergebnisse zusätzlich mit einem Bootstrap-Verfahren abgesichert. Dieses erlaubt eine robuste Einschätzung der Unsicherheit, ohne Verteilungsannahmen zu treffen. Ergänzend wurden Korrelationen sowie ein Welch-t-Test berechnet, um zu prüfen, ob beobachtete Unterschiede statistisch belastbar sind.
Diese Methodik stellt sicher, dass der Januar-Effekt nicht überinterpretiert wird, sondern kritisch und datengetrieben eingeordnet bleibt – als möglicher Regime- oder Kontextindikator, nicht als eigenständige Handelsstrategie.
Der vollständige Python Code ist unten verlinkt und kann frei genutzt werden.
Zu erkennen sind die unterschiedlichen Equity Kurven für die Indizes DAX, US500, NASDAQ, Russll 2000 und Dow Jones. Für die Untersuchungen haben wir Daten von Yahoo Finance über die API gezogen, wobei wir anstelle der US Indizes die liquiden ETFs genutzt haben. (Dow Jonaes = DIA, S&P500 = SPY, Nasdaq = QQQ, Russell 2000 = IWM)
In den Diagrammen ist klar zu erkennen, dass dieser Ansatz zu ähnlichen Rendite führt. Beim Nasdaq (QQQ) ist es sogar so, dass die Equity Kurve deutlich besser ist, wenn die ersten 5 Tage beachtet werden. Auch wenn die Renditen in den anderen Indizes einen Buy&Hold Ansatz nicht schlagen, ist jedoch zu erwähnen, dass die Drawdowns sowie die Investment-Quote geringer ist – also gleiches Ergebnis mit weniger Risiko. Die geringeren Drawdown lassen sich gut an den glatteren Verläufen in den Grafiken erkennen. Das ist doch schon mal was.
Wenn wir uns die Renditen der beiden unterschiedlichen Ansätze nochmal im Detail anschauen, dann wird das , was wir in Equity Kurven gesehen haben nochmal deutlicher. Hierfür haben wir sogenannte Boxplots erstellt.
Der Boxplot zeigt die Verteilung der DAX-Jahresrenditen getrennt nach positivem und negativem Januarstart. Jahre mit positivem Januar weisen einen höheren Median und eine geringere Downside-Streuung auf. Nach schwachem Januarstart treten negative Extremjahre deutlich häufiger auf.
In den Darstellungen sind immer zwei Boxen dargesetellt. Einmal eine Box für für Jahre in denen die ersten 5 Tage positiv waren (jan > 0) und einmal wenn die ersten 5 Tage negativ waren (Jan <= 0). Der schwarze horizontale Strich entspricht dem Media. Die untere Box-Kante dem 25%-Perzentil Wert und die obere Kante dem 75%- Perzentil Wert. Die Dochte berechnen sich nach dieser Vorschrift
IQR = Perzentil(75%)- Perzentil(25%)
Untere Grenze = Perzenti(25%) - 1.5 X IQR
Obere Grenze = Perzentil(75%) + 1.5 X IQR
Die Dochte eines Boxplots reichen bis zum letzten Wert innerhalb von 1,5-facher Interquartilsdistanz (IQR). Sie zeigen damit den Bereich typischer Jahresrenditen, während weiter entfernte Werte als Ausreißer dargestellt werden.
Die große Frage ist nun noch, ob die Ergebnisse statistisch belastbar sind. Hierzu greifen wir auf die zu Beginn benannte Verfahren (Bootstrap und Welch-Analyse) zurück.
Die Bootstrap-Analyse bewertet, wie stabil der beobachtete Renditeunterschied zwischen Jahren mit positivem und negativem Januarstart ist. Anstatt theoretische Verteilungsannahmen zu treffen, werden die vorhandenen Jahresrenditen tausendfach neu kombiniert. Das resultierende 95 %-Konfidenzintervall zeigt, in welchem Bereich der wahre Effekt mit hoher Wahrscheinlichkeit liegen könnte.
In unseren Ergebnissen zeigt sich:
Bei mehreren Indizes ist der Effekt zwar im Mittel positiv, das Konfidenzintervall umfasst jedoch teilweise auch negative Werte. Das bedeutet, dass der Januar-Effekt dort sichtbar, aber statistisch unsicher ist. Beim Nasdaq-100 hingegen liegt das gesamte Intervall im positiven Bereich, was auf einen stabileren Zusammenhang hindeutet.
Der Welch-t-Test prüft, ob sich die durchschnittlichen Jahresrenditen nach positivem und negativem Januarstart statistisch signifikant unterscheiden. Er ist besonders geeignet bei kleinen Stichproben und ungleichen Varianzen, wie sie bei Finanzmarktdaten typisch sind.
In der Analyse zeigen sich überwiegend p-Werte oberhalb der klassischen 5-Prozent-Schwelle. Das bedeutet, dass der Januar-Effekt in diesen Märkten nicht als gesicherte Renditequelle gelten kann. Eine Ausnahme bildet erneut der Nasdaq-100, bei dem der p-Wert unterhalb von 0,05 liegt und somit statistische Signifikanz erreicht wird.
Der Januar-Effekt gehört zu den bekanntesten Börsenmythen – und wie so oft liegt die Wahrheit nicht im Entweder-oder. Unsere datenbasierte Analyse zeigt klar: Der Effekt ist kein Märchen, aber auch kein verlässlicher Handelsansatz im klassischen Sinne.
Sowohl die Bootstrap-Analyse als auch der Welch-t-Test führen zur gleichen zentralen Aussage:
Der Januar-Effekt ist in vielen Märkten richtungsmäßig erkennbar, aber nur in wenigen Fällen statistisch belastbar. Zwar zeigen sich nach einem positiven Januarstart häufig höhere durchschnittliche Jahresrenditen und bessere Trefferquoten, doch in den meisten Märkten lässt sich nicht eindeutig ausschließen, dass diese Unterschiede zufallsbedingt sind.
Gerade deshalb eignet sich der Januar-Effekt nicht als eigenständige Handelsstrategie. Wer versucht, auf Basis weniger Januartage konsequent „All-in“ oder „All-out“ zu gehen, überschätzt die Aussagekraft des Signals und unterschätzt die inhärente Unsicherheit der Märkte.
Seinen Mehrwert entfaltet der Januar-Effekt vielmehr dort, wo er richtig eingeordnet wird: als Regime- oder Risikoindikator. Insbesondere in wachstumsorientierten Märkten wie dem Nasdaq-100, in denen sowohl Bootstrap-Analyse als auch Signifikanztests auf einen stabileren Zusammenhang hinweisen, kann der Jahresstart hilfreiche Hinweise liefern, wie offensiv oder defensiv man agieren sollte.
Der Januar entscheidet nicht über das Börsenjahr.
Aber er kann helfen, Wahrscheinlichkeiten besser einzuschätzen – und genau darin liegt sein praktischer Nutzen für einen systematischen, datengetriebenen Handelsansatz.
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
import os
# Optional (für p-value / regression)
try:
from scipy import stats
HAS_SCIPY = True
except Exception:
HAS_SCIPY = False
TICKERS = ["QQQ", "SPY", "IWM", "DIA", "^GDAXI"]
START = "1990-01-01"
END = None
N_JAN = 5
BOOTSTRAP_ITERS = 10000
SEED = 42
def plot_jan_effect(df, ticker, n_jan, save_dir="plots"):
os.makedirs(save_dir, exist_ok=True)
sns.set_style("whitegrid")
# 1) Scatter
fig = plt.figure(figsize=(8, 6))
colors = df["JanPos"].map({True: "green", False: "red"})
plt.scatter(df["JanRet"]*100, df["YearRet"]*100, c=colors, alpha=0.7)
plt.axhline(0, linewidth=1)
plt.axvline(0, linewidth=1)
plt.xlabel(f"Return first {n_jan} trading days of January (%)")
plt.ylabel("Full year return (%)")
plt.title(f"{ticker} – January Effect Scatter")
plt.tight_layout()
fig.savefig(os.path.join(save_dir, f"{ticker}_01_scatter.png"), dpi=160)
plt.close(fig)
# 2) Boxplot
fig = plt.figure(figsize=(7, 5))
sns.boxplot(
x=df["JanPos"].map({True: "Jan > 0", False: "Jan ≤ 0"}),
y=df["YearRet"] * 100
)
plt.axhline(0, linewidth=1)
plt.xlabel("January Regime")
plt.ylabel("Full year return (%)")
plt.title(f"{ticker} – Yearly Returns by January Regime")
plt.tight_layout()
fig.savefig(os.path.join(save_dir, f"{ticker}_02_boxplot.png"), dpi=160)
plt.close(fig)
# 3) Equity-style
equity_all = (1 + df["YearRet"]).cumprod()
equity_jan_pos = (1 + df["YearRet"].where(df["JanPos"], 0)).cumprod()
fig = plt.figure(figsize=(9, 5))
plt.plot(df.index, equity_all.values, linewidth=2, label="All years (Buy & Hold)")
plt.plot(df.index, equity_jan_pos.values, linewidth=2, label="Only Jan > 0 years")
plt.legend()
plt.title(f"{ticker} – Regime Exposure Comparison")
plt.ylabel("Equity (normalized)")
plt.xlabel("Years")
plt.tight_layout()
fig.savefig(os.path.join(save_dir, f"{ticker}_03_equity.png"), dpi=160)
plt.close(fig)
def download_close_series(ticker: str) -> pd.Series:
df = yf.download(ticker, start=START, end=END, auto_adjust=True, progress=False)
if df is None or df.empty:
raise ValueError(f"No data returned for {ticker}.")
# yfinance returns columns like Open/High/Low/Close/Volume
# Ensure Close is a Series (not a DataFrame)
close = df["Close"]
if isinstance(close, pd.DataFrame):
# If something weird happens, take first column
close = close.iloc[:, 0]
close = close.dropna()
close.name = "Close"
return close
def compute_year_table(close: pd.Series, n: int) -> pd.DataFrame:
s = close.dropna().copy()
s = s.sort_index()
years = sorted(s.index.year.unique())
rows = []
for y in years:
s_y = s[s.index.year == y]
if s_y.empty:
continue
# January subset
s_jan = s_y[s_y.index.month == 1]
if len(s_jan) < n:
continue
jan_first_date = s_jan.index[0] # Timestamp
jan_n_date = s_jan.index[n - 1] # Timestamp
# previous trading day close before first January trading day
# robust approach: locate position via integer location
pos_first = s.index.get_loc(jan_first_date)
if isinstance(pos_first, slice) or isinstance(pos_first, np.ndarray):
# extremely rare, but handle duplicates defensively
pos_first = pos_first.start if isinstance(pos_first, slice) else int(pos_first[0])
if pos_first == 0:
continue
prev_close = float(s.iloc[pos_first - 1])
jan_n_close = float(s.loc[jan_n_date])
jan_ret = jan_n_close / prev_close - 1.0
# full-year return: first close of year to last close of year
year_ret = float(s_y.iloc[-1] / s_y.iloc[0] - 1.0)
rows.append({
"Year": y,
"JanRet": jan_ret,
"YearRet": year_ret,
"JanPos": jan_ret > 0,
"YearPos": year_ret > 0
})
df = pd.DataFrame(rows)
if df.empty:
raise ValueError("No valid yearly rows found. Check start date / data.")
return df.set_index("Year")
def summarize(df: pd.DataFrame, bootstrap_iters: int = 10000, seed: int = 42) -> dict:
pos = df[df["JanPos"]]
neg = df[~df["JanPos"]]
out = {}
out["Years"] = len(df)
out["HitRate_Pos"] = float(pos["YearPos"].mean()) if len(pos) else np.nan
out["HitRate_Neg"] = float(neg["YearPos"].mean()) if len(neg) else np.nan
out["MeanYear_Pos"] = float(pos["YearRet"].mean()) if len(pos) else np.nan
out["MeanYear_Neg"] = float(neg["YearRet"].mean()) if len(neg) else np.nan
out["Diff_PosMinusNeg"] = out["MeanYear_Pos"] - out["MeanYear_Neg"]
out["Corr_Jan_Year"] = float(df["JanRet"].corr(df["YearRet"]))
# Welch t-test (optional)
if HAS_SCIPY and len(pos) >= 2 and len(neg) >= 2:
t, p = stats.ttest_ind(pos["YearRet"], neg["YearRet"], equal_var=False, nan_policy="omit")
out["Welch_pvalue"] = float(p)
else:
out["Welch_pvalue"] = np.nan
# Bootstrap CI for diff of means
if len(pos) and len(neg):
rng = np.random.default_rng(seed)
pos_vals = pos["YearRet"].to_numpy()
neg_vals = neg["YearRet"].to_numpy()
diffs = np.empty(bootstrap_iters, dtype=float)
for i in range(bootstrap_iters):
diffs[i] = rng.choice(pos_vals, size=len(pos_vals), replace=True).mean() - \
rng.choice(neg_vals, size=len(neg_vals), replace=True).mean()
out["CI_2.5"] = float(np.percentile(diffs, 2.5))
out["CI_97.5"] = float(np.percentile(diffs, 97.5))
else:
out["CI_2.5"] = np.nan
out["CI_97.5"] = np.nan
return out
def pct(x):
return "n/a" if pd.isna(x) else f"{100*x:,.2f}%"
def run():
print(f"Settings: N_JAN={N_JAN}, START={START}, tickers={TICKERS}")
for ticker in TICKERS:
print("\n" + "=" * 90)
print(f"{ticker} | First {N_JAN} trading days of January")
print("=" * 90)
close = download_close_series(ticker)
year_table = compute_year_table(close, N_JAN)
stats_out = summarize(year_table, BOOTSTRAP_ITERS, SEED)
print(f"Years analyzed: {stats_out['Years']}")
print(f"HitRate (Year>0 | Jan>0) : {stats_out['HitRate_Pos']:.3f}")
print(f"HitRate (Year>0 | Jan<=0): {stats_out['HitRate_Neg']:.3f}")
print(f"Mean YearRet if Jan>0 : {pct(stats_out['MeanYear_Pos'])}")
print(f"Mean YearRet if Jan<=0 : {pct(stats_out['MeanYear_Neg'])}")
print(f"Mean Diff (pos-neg) : {pct(stats_out['Diff_PosMinusNeg'])}")
print(f"Bootstrap 95% CI diff : [{pct(stats_out['CI_2.5'])}, {pct(stats_out['CI_97.5'])}]")
print(f"Corr(JanRet, YearRet) : {stats_out['Corr_Jan_Year']:.3f}")
if not pd.isna(stats_out["Welch_pvalue"]):
print(f"Welch t-test p-value : {stats_out['Welch_pvalue']:.4f}")
print("\nLast 8 years:")
tail = year_table.tail(8).copy()
tail["JanRet"] = tail["JanRet"].map(pct)
tail["YearRet"] = tail["YearRet"].map(pct)
print(tail[["JanRet", "YearRet", "JanPos", "YearPos"]].to_string())
# 🔥 HIER die Plots
plot_jan_effect(year_table, ticker, N_JAN)
if __name__ == "__main__":
run()
Gibt es ihn wirklich oder ist es nur ein Mythos. Es geht um den Januar-Effekt. Wir erklären in diesem Beitrag worum es geht und ob du diesen Effekt für dein Trading nutzen kannst.

Die Studie untersucht, ob eine cointegrationsbasierte Pairs-Trading-Strategie im Forex-Markt auch unter realen Bedingungen stabil funktioniert und ergänzt den Ansatz durch eine Walk-Forward-Optimierung, die Parameter laufend neu kalibriert. Die Ergebnisse zeigen, dass lange Optimierungsfenster (24–60 Monate) besonders robuste und konstante Performance liefern und gleichzeitig extreme Drawdowns deutlich reduziert werden. Insgesamt verbessert die dynamische Walk-Forward-Strategie die Risikostruktur erheblich, ohne die Rendite zu verschlechtern, und erhöht damit die Realwelt-Tauglichkeit cointegrationsbasierter Modelle.
In unserer neuen Folge der Reihe „Profit oder Pleite“ haben wir eine besonders spannende Handelsstrategie unter die Lupe genommen.
Laut Internetquelle soll sie eine Gesamtrendite von 294 % bei einem Profit Faktor von 1,53 erzielt haben – und das bei einer Trefferquote von nur 34 %.
Klingt unglaublich? Ist es auch
Nutze die Vorteile von nachweislich profitablen Handelsstrategien und setzt dich nicht mehr dem Stress von manuellem Traden aus.
Der Handel mit Hebelprodukten (z.B. CFD´s und Forex Trades) oder anderen Finanzinstrumenten ist mit einem enormen Risiko verbunden und nicht für jeden geeignet. Es besteht die Möglichkeit, dass Sie einen Totalverlust erleiden oder sogar Verluste erleiden, die Ihre Investitionen übersteigen. Bevor Sie mit Hebelprodukten oder anderen Finanzinstrumenten handeln, sollten Sie sicherstellen, dass Sie alle damit verbunden Risiken verstanden haben. Im Übrigen verweisen wir auf unsere Risikohinweise auf: https://www.lazyindextrading.com/disclaimer/. Es wird ausdrücklich klargestellt, dass wir (Lazy Index Trading) keine Anlageberatung anbieten und durchführen und insbesondere auch keinerlei konkrete Empfehlungen zu einem Wertpapier, Finanzprodukt oder -Instrument abgeben. Die Erwähnung bestimmter Wertpapiere oder Anlageprodukte stellen ausdrücklich keine Empfehlung zum Kaufen oder Verkaufen oder Halten dar. Sie handeln bzw. traden auf eigenes Risiko. Jegliche Haftung wird ausgeschlossen.
Kontaktieren Sie uns: info@lazyindextrading.com
Erhalte exklusive Einblicke in profitable Handelsstrategien, Backtests & Setup-Analysen – direkt in dein Postfach.
✅ Regelmäßige Studien und Strategy-Analysen
✅ Regelmäßige Updates zu unserem Portfolio
✅ Kein Blabla – echter Mehrwert für dein Trading