---
title: "Get Daily Rankings"
method: GET
path: "/rankings/daily"
---

# Get Daily Rankings

`GET /rankings/daily`

## Request

- Base URL: `https://api.pruviq.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pruviq.com/rankings/daily`
- Auth: none declared

Return daily strategy rankings from pre-computed JSON files.

## Query parameters

- `date` string, nullable: Calendar date YYYYMMDD. Set strict_date=true for exact citation lookup; omit date for latest.
- `period` string
- `group` string
- `strict_date` boolean
- `selection` boolean: Add `selection`: the ranked rows (raw values, rank order), the previous day's rank inputs and the day file's sha256 — for publications that pin their source.

## Response `200`

Successful Response

- DailyRankingResponse
  - `schema_version` string, required
  - `date` string, date, required
  - `generated_at` string, date-time, nullable, required
  - `period` string, required
  - `group` string, required
  - `top3` RankingRow[], required: The 3 highest configurations by PF (then win rate) across ALL research statuses — the PF-ordered research record, including killed, shelved and unrated configurations. Not the headline: see headline_slots.
    - `rank` integer, required
    - `configuration_id` string, required
    - `configuration_identity_version` string, required
    - `strategy` string, required
    - `direction` string, required
    - `name_en` string, required
    - `name_ko` string, required
    - `win_rate` number, required
    - `profit_factor` number, required
    - `pf_capped` boolean, required: True = profit_factor is a lower bound, not a measurement (daily: reached pf_clip; weekly: any contributing day exceeded pf_clip before averaging). Rule: criteria pf_caps.
    - `pf_clip` number, required: The cap applied to this row's profit_factor: 99.99 for daily rows (display), 20.0 per day for weekly means.
    - `total_trades` integer, required
    - `timeframe` string, required
    - `low_sample` boolean, required
    - `research_status` 'verified' | 'conditional' | 'live' | 'testing' | 'killed' | 'shelved' | 'unrated', required
    - `status_scope` 'configuration' | 'record', nullable, required: What research_status describes: configuration = measured for this exact configuration; record = the whole strategy record (retirement); null = unrated. Rule: criteria research_label.
    - `research_record` string, nullable, required: Research record the row resolved to (may carry a status that does not apply to this configuration).
    - `reason_url` string, required
    - `criteria_version` string, required
    - `measured_at` string, date-time, nullable, required: Timestamp from the retained ranking generation record, not an exact simulation completion time; null if only a date was retained.
    - `sample` RankingSample, required
      - `coins` integer, nullable, required: Source-retained coins_used aggregation universe count. May include failed/skipped coins; not a count of successful simulations. Null when not retained.
      - `coins_scope` 'aggregation_universe' | 'not_retained', required
      - `requested_coins` integer, nullable, required: Requested universe limit; distinct from the retained aggregation count.
      - `timeframe` string, required
      - `period` string, nullable, required: Retained period bucket; null for unlabelled legacy rows.
      - `start_date` string, date, nullable: Recorded input start date, not inferred from publication time.
      - `end_date` string, date, nullable: Recorded input end date.
      - `aggregation` 'single_window' | 'weekly_mean'
    - `rc` 0 | 1 | 2, required: Existing research lifecycle projection. Not a verdict on this ranking configuration; see rc_scope.
  - `worst3` RankingRow[], required
    - `rank` integer, required
    - `configuration_id` string, required
    - `configuration_identity_version` string, required
    - `strategy` string, required
    - `direction` string, required
    - `name_en` string, required
    - `name_ko` string, required
    - `win_rate` number, required
    - `profit_factor` number, required
    - `pf_capped` boolean, required: True = profit_factor is a lower bound, not a measurement (daily: reached pf_clip; weekly: any contributing day exceeded pf_clip before averaging). Rule: criteria pf_caps.
    - `pf_clip` number, required: The cap applied to this row's profit_factor: 99.99 for daily rows (display), 20.0 per day for weekly means.
    - `total_trades` integer, required
    - `timeframe` string, required
    - `low_sample` boolean, required
    - `research_status` 'verified' | 'conditional' | 'live' | 'testing' | 'killed' | 'shelved' | 'unrated', required
    - `status_scope` 'configuration' | 'record', nullable, required: What research_status describes: configuration = measured for this exact configuration; record = the whole strategy record (retirement); null = unrated. Rule: criteria research_label.
    - `research_record` string, nullable, required: Research record the row resolved to (may carry a status that does not apply to this configuration).
    - `reason_url` string, required
    - `criteria_version` string, required
    - `measured_at` string, date-time, nullable, required: Timestamp from the retained ranking generation record, not an exact simulation completion time; null if only a date was retained.
    - `sample` RankingSample, required
      - `coins` integer, nullable, required: Source-retained coins_used aggregation universe count. May include failed/skipped coins; not a count of successful simulations. Null when not retained.
      - `coins_scope` 'aggregation_universe' | 'not_retained', required
      - `requested_coins` integer, nullable, required: Requested universe limit; distinct from the retained aggregation count.
      - `timeframe` string, required
      - `period` string, nullable, required: Retained period bucket; null for unlabelled legacy rows.
      - `start_date` string, date, nullable: Recorded input start date, not inferred from publication time.
      - `end_date` string, date, nullable: Recorded input end date.
      - `aggregation` 'single_window' | 'weekly_mean'
    - `rc` 0 | 1 | 2, required: Existing research lifecycle projection. Not a verdict on this ranking configuration; see rc_scope.
  - `weekly_best3` RankingRow[], required
    - `rank` integer, required
    - `configuration_id` string, required
    - `configuration_identity_version` string, required
    - `strategy` string, required
    - `direction` string, required
    - `name_en` string, required
    - `name_ko` string, required
    - `win_rate` number, required
    - `profit_factor` number, required
    - `pf_capped` boolean, required: True = profit_factor is a lower bound, not a measurement (daily: reached pf_clip; weekly: any contributing day exceeded pf_clip before averaging). Rule: criteria pf_caps.
    - `pf_clip` number, required: The cap applied to this row's profit_factor: 99.99 for daily rows (display), 20.0 per day for weekly means.
    - `total_trades` integer, required
    - `timeframe` string, required
    - `low_sample` boolean, required
    - `research_status` 'verified' | 'conditional' | 'live' | 'testing' | 'killed' | 'shelved' | 'unrated', required
    - `status_scope` 'configuration' | 'record', nullable, required: What research_status describes: configuration = measured for this exact configuration; record = the whole strategy record (retirement); null = unrated. Rule: criteria research_label.
    - `research_record` string, nullable, required: Research record the row resolved to (may carry a status that does not apply to this configuration).
    - `reason_url` string, required
    - `criteria_version` string, required
    - `measured_at` string, date-time, nullable, required: Timestamp from the retained ranking generation record, not an exact simulation completion time; null if only a date was retained.
    - `sample` RankingSample, required
      - `coins` integer, nullable, required: Source-retained coins_used aggregation universe count. May include failed/skipped coins; not a count of successful simulations. Null when not retained.
      - `coins_scope` 'aggregation_universe' | 'not_retained', required
      - `requested_coins` integer, nullable, required: Requested universe limit; distinct from the retained aggregation count.
      - `timeframe` string, required
      - `period` string, nullable, required: Retained period bucket; null for unlabelled legacy rows.
      - `start_date` string, date, nullable: Recorded input start date, not inferred from publication time.
      - `end_date` string, date, nullable: Recorded input end date.
      - `aggregation` 'single_window' | 'weekly_mean'
    - `rc` 0 | 1 | 2, required: Existing research lifecycle projection. Not a verdict on this ranking configuration; see rc_scope.
  - `citation` RankingCitation, required
    - `url` string, required
    - `generated_at` string, date-time, nullable, required
    - `criteria_version` string, required
    - `research_source_digest` string, required
    - `note` string, required
  - `how_to_reverify` RankingReverification, required
    - `url` string, required
    - `command` string, required
    - `criteria_url` string, required
    - `scope` string, required
  - `research_status_definitions` object, required
  - `criteria_url` string, required
  - `rc_scope` string, required
  - `headline_has_verified` boolean, required: True if a configuration whose research label is verified (rule C, configuration scope) is in top3. Rule: criteria headline.
  - `verified_in_ranking` VerifiedInRanking[], required: Every verified configuration in this ranked population, with its rank and shown PF.
    - `configuration_id` string, required
    - `rank` integer, required
    - `profit_factor` number, required
    - `pf_capped` boolean, required
  - `headline_note` LocalizedText, required
    - `en` string, required
    - `ko` string, required
  - `headline_slots` HeadlineSlot[], required: The headline (Q-B102, owner decision 2026-10-08 option ②): exactly 3 slots filled only with configurations labelled verified (rule C, configuration scope), in ranking order among the configurations that pass ranking eligibility; each verified slot carries its rank in the full ranking. Remaining slots are explicit empties: kind no_verified with localized text; all 3 are kind unknown when the group is not a published universe. Killed, shelved and unrated configurations never fill a slot. Rule: criteria headline_slots.
    - `slot` integer, required: Position in the headline, 1..3 (not the ranking rank).
    - `kind` 'verified' | 'no_verified' | 'unknown', required: verified = row holds a configuration labelled verified (rule C, configuration scope); no_verified = no further verified configuration passed this ranking's eligibility; unknown = the group is not a published universe, labels cannot be judged.
    - `rank` integer, nullable, required: Rank of the configuration in the full eligible ranking (same as row.rank); null for empty slots.
    - `row` RankingRow, required
      - `rank` integer, required
      - `configuration_id` string, required
      - `configuration_identity_version` string, required
      - `strategy` string, required
      - `direction` string, required
      - `name_en` string, required
      - `name_ko` string, required
      - `win_rate` number, required
      - `profit_factor` number, required
      - `pf_capped` boolean, required: True = profit_factor is a lower bound, not a measurement (daily: reached pf_clip; weekly: any contributing day exceeded pf_clip before averaging). Rule: criteria pf_caps.
      - `pf_clip` number, required: The cap applied to this row's profit_factor: 99.99 for daily rows (display), 20.0 per day for weekly means.
      - `total_trades` integer, required
      - `timeframe` string, required
      - `low_sample` boolean, required
      - `research_status` 'verified' | 'conditional' | 'live' | 'testing' | 'killed' | 'shelved' | 'unrated', required
      - `status_scope` 'configuration' | 'record', nullable, required: What research_status describes: configuration = measured for this exact configuration; record = the whole strategy record (retirement); null = unrated. Rule: criteria research_label.
      - `research_record` string, nullable, required: Research record the row resolved to (may carry a status that does not apply to this configuration).
      - `reason_url` string, required
      - `criteria_version` string, required
      - `measured_at` string, date-time, nullable, required: Timestamp from the retained ranking generation record, not an exact simulation completion time; null if only a date was retained.
      - `sample` RankingSample, required
        - `coins` integer, nullable, required: Source-retained coins_used aggregation universe count. May include failed/skipped coins; not a count of successful simulations. Null when not retained.
        - `coins_scope` 'aggregation_universe' | 'not_retained', required
        - `requested_coins` integer, nullable, required: Requested universe limit; distinct from the retained aggregation count.
        - `timeframe` string, required
        - `period` string, nullable, required: Retained period bucket; null for unlabelled legacy rows.
        - `start_date` string, date, nullable: Recorded input start date, not inferred from publication time.
        - `end_date` string, date, nullable: Recorded input end date.
        - `aggregation` 'single_window' | 'weekly_mean'
      - `rc` 0 | 1 | 2, required: Existing research lifecycle projection. Not a verdict on this ranking configuration; see rc_scope.
    - `text` LocalizedText, required
      - `en` string, required
      - `ko` string, required
  - `headline_note_kind` 'verified_below' | 'verified_ranked_lower' | 'no_verified_in_group' | 'unknown', nullable, required: verified_below = top3 has no verified configuration, verified ones are ranked below and all have PF < 1; verified_ranked_lower = top3 has none, verified ones are ranked below and not all have PF < 1 (ranks and shown PF only, no comparison); no_verified_in_group = top3 has none and this group's ranking has none; unknown = the group is not a published universe (legacy file / unmapped title) so labels cannot be judged — no sentence; null = no sentence (a verified configuration is in top3, or nothing is ranked for this period/group — empty top3; headline_has_verified is then false too).

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/pruviq/apis/pruviq-simulation-api.md) · [All operations](https://skmtc.dev/pruviq/apis/pruviq-simulation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pruviq/apis/pruviq-simulation-api/revisions/972384919a74?raw)
