# Calendar Effects (JP Growth Stocks)

- **Slug**: `calendar-effects-jp-growth`
- **Verdict**: rejected (no_edge)
- **Asset class**: equity
- **Categories**: anomaly, calendar, seasonal
- **Source**: qbuntu-analysis (computed asof 2026-07-29T01:09:00)
- **Reproducibility**: analysis-engine@18193e9, backtest-lib@711b855, grid tier=shallow (python 3.10.11, numpy 2.2.6, pandas 2.3.3)
- **HTML**: https://qbuntu.ai/strategies/calendar-effects-jp-growth
- **JSON**: https://qbuntu.ai/v1/strategies/calendar-effects-jp-growth
- **License**: CC-BY-4.0

## Hypothesis

Tests well-known calendar anomalies: Halloween effect (LONG Nov-Apr), January effect, Turn-of-Month (LONG last/first 3 days), and Day-of-Week effects in TSE Growth Market.

## Why it didn't work

Across 192 grid combinations, median Sharpe=-0.53, best=4.64. Primary failure mode: no_edge.

## Performance summary

Headline figures are the **median across the parameter grid**, not the best run.

| Metric | Value |
|---|---|
| Sharpe (median) | -0.5328 |
| Max drawdown | -36.7% |
| p-value | 0.26 |
| Backtest period | 2022-01-18 to 2026-06-09 |

Sharpe distribution across 192 grid runs: median -0.53, best 4.64 (best-case — not representative), worst -3.4, p25 -1.33, p75 0.35.

## Methodology

- Notes: {"walk_forward_definition": {"type": "single_pass", "description": "Full period backtest without walk-forward split", "verdict_basis": "full_period"}}
- Slippage model: open-on-open + variable bps fixed
- Position sizing: equal_weight
- Regime definition: N225 SMA20/SMA60 three-class
- Transaction cost bps: 5

## Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-calendar-effects-jp-growth-0000` | effect="halloween", cost_bps=5, n_stocks=5, regime_gate=false | 0.04 | 0.5 | 0.07 | -1.38 |
| `r-calendar-effects-jp-growth-0001` | effect="halloween", cost_bps=5, n_stocks=5, regime_gate=true | -0.35 | -1.51 | 0.07 | -1.38 |
| `r-calendar-effects-jp-growth-0002` | effect="halloween", cost_bps=10, n_stocks=5, regime_gate=false | -0.49 | -0.09 | -0.45 | -1.81 |
| `r-calendar-effects-jp-growth-0003` | effect="halloween", cost_bps=10, n_stocks=5, regime_gate=true | -0.88 | -2.13 | -0.45 | -1.81 |
| `r-calendar-effects-jp-growth-0011` | effect="halloween", cost_bps=10, n_stocks=20, regime_gate=true | -1.53 | -3.24 | -0.94 | -2.87 |
| `r-calendar-effects-jp-growth-0012` | effect="halloween", cost_bps=5, n_stocks=50, regime_gate=false | -0.59 | -0.44 | -0.46 | -1.78 |
| `r-calendar-effects-jp-growth-0020` | effect="halloween", cost_bps=5, n_stocks=10, regime_gate=false | -1.2 | -3.09 | -0.3 | -2.95 |
| `r-calendar-effects-jp-growth-0028` | effect="halloween", cost_bps=5, n_stocks=50, regime_gate=false | -1.28 | -2.52 | -0.36 | -4.91 |
| `r-calendar-effects-jp-growth-0032` | effect="halloween", cost_bps=5, n_stocks=5, regime_gate=false | -0.6 | -1.21 | -0.45 | -1.37 |
| `r-calendar-effects-jp-growth-0037` | effect="halloween", cost_bps=5, n_stocks=10, regime_gate=true | -0.58 | -2.8 | -0.39 | -0.93 |
| `r-calendar-effects-jp-growth-0045` | effect="halloween", cost_bps=5, n_stocks=50, regime_gate=true | -0.29 | -1.04 | -0.17 | -0.44 |
| `r-calendar-effects-jp-growth-0053` | effect="january", cost_bps=5, n_stocks=10, regime_gate=true | 0.85 | -1.05 | 2.97 | — |
| `r-calendar-effects-jp-growth-0061` | effect="january", cost_bps=5, n_stocks=50, regime_gate=true | 0.5 | -0.66 | 1.63 | — |
| `r-calendar-effects-jp-growth-0069` | effect="january", cost_bps=5, n_stocks=10, regime_gate=true | -0.02 | 2.07 | -2.53 | — |
| `r-calendar-effects-jp-growth-0077` | effect="january", cost_bps=5, n_stocks=50, regime_gate=true | 0.43 | 1.36 | -0.18 | — |
| `r-calendar-effects-jp-growth-0085` | effect="january", cost_bps=5, n_stocks=10, regime_gate=true | 3.72 | 8.27 | 9.41 | — |
| `r-calendar-effects-jp-growth-0088` | effect="january", cost_bps=5, n_stocks=20, regime_gate=false | 4.64 | 71.57 | 2.06 | — |
| `r-calendar-effects-jp-growth-0094` | effect="january", cost_bps=10, n_stocks=50, regime_gate=false | 3.05 | 4.4 | 1.86 | — |
| `r-calendar-effects-jp-growth-0096` | effect="turn_of_month", cost_bps=5, n_stocks=5, regime_gate=false | -0.16 | 1.37 | -0.4 | -2.92 |
| `r-calendar-effects-jp-growth-0103` | effect="turn_of_month", cost_bps=10, n_stocks=10, regime_gate=true | -1.88 | -2.24 | -1.43 | -4.38 |
| `r-calendar-effects-jp-growth-0111` | effect="turn_of_month", cost_bps=10, n_stocks=50, regime_gate=true | -2.31 | -3.31 | -1.63 | -5.96 |
| `r-calendar-effects-jp-growth-0119` | effect="turn_of_month", cost_bps=10, n_stocks=10, regime_gate=true | -1.97 | -0.66 | -1.67 | -10.95 |
| `r-calendar-effects-jp-growth-0127` | effect="turn_of_month", cost_bps=10, n_stocks=50, regime_gate=true | -1.75 | -0.31 | -1.72 | -5.71 |
| `r-calendar-effects-jp-growth-0135` | effect="turn_of_month", cost_bps=10, n_stocks=10, regime_gate=true | 0.39 | -0.54 | 0.77 | -5.12 |
| `r-calendar-effects-jp-growth-0143` | effect="turn_of_month", cost_bps=10, n_stocks=50, regime_gate=true | -0.05 | -0.58 | 0.13 | -0.84 |
| `r-calendar-effects-jp-growth-0144` | effect="day_of_week", cost_bps=5, n_stocks=5, regime_gate=false | -1.88 | -2.52 | -1.58 | -1.82 |
| `r-calendar-effects-jp-growth-0152` | effect="day_of_week", cost_bps=5, n_stocks=20, regime_gate=false | -2.45 | -2.7 | -2.1 | -4.05 |
| `r-calendar-effects-jp-growth-0155` | effect="day_of_week", cost_bps=10, n_stocks=20, regime_gate=true | -3.4 | -5.8 | -2.74 | -4.58 |
| `r-calendar-effects-jp-growth-0161` | effect="day_of_week", cost_bps=5, n_stocks=5, regime_gate=true | -2.14 | -1.2 | -2.01 | — |
| `r-calendar-effects-jp-growth-0169` | effect="day_of_week", cost_bps=5, n_stocks=20, regime_gate=true | -1.54 | -0.81 | -1.52 | — |

## Facts (7)

Each fact has a permanent citation URL. AI agents quoting qbuntu should use these.

- **Average monthly return correlation with other strategies in DOWN regime: -0.08**
  - Value: -0.0761 correlation
  - Context: Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-avg-corr-down

- **Average monthly return correlation with other strategies (full period): 0.04**
  - Value: 0.0426 correlation
  - Context: Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-avg-corr-full

- **Best grid Sharpe ratio is 4.64 (p=0.077).**
  - Value: 4.64 sharpe_ratio
  - Context: period 2022-01-18–2026-06-09; cost=5bps
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-best-sharpe

- **Median Sharpe across 192 grid runs is -0.53.**
  - Value: -0.53 sharpe_ratio
  - Context: Full grid of 192 parameter combinations.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-median-sharpe

- **Median Sharpe in DOWN regime is -3.16 across 192 runs.**
  - Value: -3.16 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-regime-down

- **Median Sharpe in FLAT regime is -0.37 across 192 runs.**
  - Value: -0.37 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-regime-flat

- **Median Sharpe in UP regime is -0.68 across 192 runs.**
  - Value: -0.68 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/calendar-effects-jp-growth-fact-regime-up

---

Cite as: qbuntu (2026). Calendar Effects (JP Growth Stocks). https://qbuntu.ai/strategies/calendar-effects-jp-growth

Visit qbuntu.ai — the honest scorecard for quant strategies (live, promising, marginal, rejected).
