CoolFace
Datasetpublic

albertklorer/chess-stockfish-regret

Chess RLVR Stockfish Regret 1400/100 Snapshot This snapshot dataset stores chess positions for reinforcement learning with verifiable rewards. Each row contains: { "id": "chess_rlvr_000001", "fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", "legal_moves": "{\"Nf3\": -0.015, \"e4\": 0.0}" } legal_moves is a JSON object encoded as a string. The object maps each legal SAN move to a Stockfish-derived negative regret score for the player to move. The RLVR… See the full description on the dataset page: https://huggingface.co/datasets/albertklorer/chess-stockfish-regret.

sourceHugging Facecc0-1.0updated 3mo agoView on Hugging Face
0likes42downloads
Dataset Card

Chess RLVR Stockfish Regret 1400/100 Snapshot

This snapshot dataset stores chess positions for reinforcement learning with verifiable rewards.

Each row contains:

json
{
  "id": "chess_rlvr_000001",
  "fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
  "legal_moves": "{\"Nf3\": -0.015, \"e4\": 0.0}"
}

legal_moves is a JSON object encoded as a string. The object maps each legal SAN move to a Stockfish-derived negative regret score for the player to move.

The RLVR reward is negative expected-score regret:

text
reward = expected_score(selected_san) - max(expected_score(all legal moves))

This gives 0 to the best available move and a negative value to worse moves.

Evaluation metadata

  • —Engine: Stockfish
  • —Source positions: Lichess puzzle FENs
  • —Stored value target: negative WDL expected-score regret
  • —Formula: (wins + 0.5 * draws) / 1000
  • —Evaluation method: Stockfish root MultiPV over all legal moves
  • —Default local generation depth: 20
  • —Split sizes: 1,400 train positions and 100 test positions
  • —Prompt-facing move notation: SAN
  • —Backend state notation: FEN

Stockfish settings are dataset-level metadata. They are not repeated inside each move record.

Loading

python
import json
from datasets import load_dataset

ds = load_dataset("albertklorer/chess-stockfish-regret")
row = ds["train"][0]
legal_moves = json.loads(row["legal_moves"])

Intended use

The intended training prompt is:

text
Position:
<fen>

Legal moves:
1. <SAN move>
2. <SAN move>
...

Return only the move number.

The verifier maps the selected index back to the SAN key and computes the regret reward.