Skip to content
GET /v1/turnofmonth

Turn-of-month vs rest-of-month return profile for one instrument

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/calendareffects-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/calendareffects-api/v1/turnofmonth" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/calendareffects-api/v1/turnofmonth", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/calendareffects-api/v1/turnofmonth");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/calendareffects-api/v1/turnofmonth",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "name": "S&P 500 ETF",
        "note": "Daily returns split into the turn-of-month window (last 1 + first 3 trading days of each month) versus the rest. spread_pct is the difference in average daily return; share_of_total_return_pct is how much of the window's whole return was earned in those ~4 days a month. Descriptive, not predictive. Read fresh per call, nothing cached.",
        "read": "no meaningful turn-of-month edge",
        "class": "index",
        "source": "Yahoo Finance",
        "symbol": "SPY",
        "tom_days": 244,
        "rest_days": 1016,
        "spread_pct": -0.02,
        "tom_window": "last 1 + first 3 trading days of each month",
        "window_days": 1260,
        "tom_win_rate_pct": 51.6,
        "rest_win_rate_pct": 55,
        "tom_avg_return_pct": 0.0339,
        "rest_avg_return_pct": 0.0539,
        "share_of_total_return_pct": 13.1
    },
    "meta": {
        "timestamp": "2026-06-12T10:34:38.583Z",
        "request_id": "2a6a32f9-5602-412f-8b88-666c2012ac10"
    },
    "status": "ok",
    "message": "Turn-of-month retrieved successfully",
    "success": true
}