Skip to content

Releases

Release v1.8.12

Choose a tag to compare

@pawelsibyl pawelsibyl released this 21 Oct 20:51
  • A backtest skips a market that has not resolved yet as "market not resolved yet" instead of "export pending", since history files are built only after a market resolves (usually within 2 hours). "export pending" now means a resolved market whose file is still being built.
  • ExportNotReadyError.last_error is set only when the export failed. The server's message now explains why a file is not ready, and that explanation used to land in last_error as if it were an error.
  • The MCP backtest hint for ExportNotReadyError says that markets have no history file until they resolve, instead of describing exports as building out of order.

Release v1.8.11

Choose a tag to compare

@pawelsibyl pawelsibyl released this 01 Oct 18:19
  • A backtest reusing a data_dir downloads the markets it has no file for. Before, any history file in the directory stopped the download, so a widened window or an added market replayed only the files already there and skipped the rest as "no history file". Files on disk are never fetched again, and a rerun with every file present makes no download request.
  • The Downloading bar counts only the files it fetches (series exports and AlphaStrategy bars), instead of jumping through the files already on disk.
  • A market you named that lies outside the window is reported with when it closed (or opens), instead of a data span that could cover the window.

Release v1.8.10

Choose a tag to compare

@pawelsibyl pawelsibyl released this 30 Sep 18:24
  • orderbook.walk over a structured series (strikes, weather buckets) skips a market whose history is not built yet instead of raising ExportNotReadyError for the whole walk. Open markets have no history file, so a window that still held one (every weekly strike event until it resolves) used to fail; the backtest engine already skipped them. A single market walk still raises.
  • README and examples: windows sized to a small share of the free allowance, the sports block dropped from the general examples, examples/event_strikes.py walks btc-multi-strikes-weekly.

Release v1.8.9

Choose a tag to compare

@pawelsibyl pawelsibyl released this 29 Sep 15:00
  • A free series export that does not fit the remaining allowance now delivers the markets that fit, as paid plans do (server side, so older versions get the files too); from 1.8.4 download_series then raises IncompleteExportError. Only a window where nothing fits raises FreeAllowanceExhaustedError (402), replacing the 1.8.5 behavior.
  • IncompleteExportError is shorter, and on Free it ends with the same allowance and upgrade text as FreeAllowanceExhaustedError (from the server's new SeriesWall.message), instead of a reset that never comes.
  • Typed errors no longer repeat their code in the message: str(FreeAllowanceExhaustedError) reads "This export needs..." rather than "FREE_ALLOWANCE_EXHAUSTED: This export needs..." (the traceback and MCP errors already name the class). .code is unchanged, and a plain APIError keeps the prefix.

Release v1.8.8

Choose a tag to compare

@pawelsibyl pawelsibyl released this 28 Sep 16:44
  • The free plan window is now per market, server side: a free account reads, in full, every market open in the last 7 days, and a market that ended before them answers HistoryWindowError (403). HistoryWindowError carries window_start and the raw details (data_end, upgrade_url).
  • A series backtest (streaming or data_dir, tick or alpha) skips the markets that ended before the window under result.skipped with the reason "outside the free 7 day window" instead of stopping at the first one; after the first such market the rest are skipped without a request. A market or window you name yourself still raises. data_dir reruns keep the reason (saved in .outside-window), and BarsDownloadResult.outside lists those markets instead of raising.
  • Skips are reported once, after the run: one Skipped N of M markets for '<series>': <reasons> line per series, the free window reason carrying the upgrade link. The coverage reason reads "no coverage in window" and the file reason "no history file", as in result.skipped.
  • Streaming requests order book history from 1 ms before a market's replay start (the route's after is exclusive), so an event at a market's first millisecond replays as it does from data_dir.
  • SeriesDownloadResult.upgrade_url, set when outside_window is not empty.
  • MCP: the instructions say a free account reads markets open in the last 7 days.

Release v1.8.7

Choose a tag to compare

@pawelsibyl pawelsibyl released this 27 Sep 19:40
  • A backtest with data_dir on a free account lists the markets in the window that start before the free 7 day window under result.skipped with the reason "outside the free 7 day window", instead of "no history file". The status line names each skip reason. SeriesDownloadResult.outside_window lists those market ids (empty against older servers).

Release v1.8.6

Choose a tag to compare

@pawelsibyl pawelsibyl released this 27 Sep 01:22
  • An alpha backtest with data_dir raises FreeAllowanceExhaustedError and HistoryWindowError instead of skipping the market as a missing bar file (every earlier version since 1.6.0 dropped it silently).

Release v1.8.4

Choose a tag to compare

@pawelsibyl pawelsibyl released this 24 Sep 02:36
  • download_series raises IncompleteExportError on a plain download too, not only inside a backtest, after the ready files are on disk. The server now states the wall once on the manifest (wall: reason, markets withheld, rows needed to finish, reset time, upgrade link); the exception carries those as rows_needed, resets_at and upgrade_url, plus the partial result. dry_run never raises and its result exposes wall as the quote.
  • SeriesDownloadResult.wall (SeriesWall), None when nothing was withheld or against older servers.

Release v1.8.3

Choose a tag to compare

@pawelsibyl pawelsibyl released this 12 Sep 00:30
  • README and package summary open with what the package is for: Polymarket historical data and backtesting. No code changes.

Release v1.8.2

Choose a tag to compare

@pawelsibyl pawelsibyl released this 09 Sep 20:18
  • StoreUnavailableError (503 STORE_UNAVAILABLE, carries retry_after): the server's history file store did not answer in time. The transport retries it like any 5xx and now waits the server's Retry-After before every retry, not only on 429.
  • A backtest that meets it on one market skips that market ("history store unavailable" under result.skipped) and carries on instead of aborting the run.