Rework after review 2. A price level sitting exactly on the edge of the reward band scores zero under the documented formula and is no longer counted: it is excluded from the qualifying shares, capital, depth, level counts and scores, from the book coverage counter in the run status and from the check that fails the run when no book has a level inside its band. A quote at or beyond the edge of the band no longer qualifies. Before, floating point arithmetic put such a level just inside the band, which produced a tiny positive pool score and an estimate of 100 percent of the pool for markets with no competing score.
rewardPoolEmpty and the null estimate fields now follow from the scores themselves, in the same way everywhere.
Verified with three inputs: typical (default, live), edge (levels exactly on the band edge in every book: failed run before billing; a single edge level beside a level below the minimum size: empty pool, null estimates) and no results (search term without a match: one unbilled status row).
0.2
Rework after review 1. Output shape changes: qualifyingBidOrders/qualifyingAskOrders are now qualifyingBidLevels/qualifyingAskLevels (the book is aggregated per price level), new field rewardPoolEmpty, and the estimate fields (estimatedSharePct, estimatedDailyRewardUsd, estimatedDailyYieldPct) are null instead of 0 or 100 when the quote cannot qualify or when no visible order scores inside the reward band.
Markets without visible competition inside the band are flagged and listed after all others, so they no longer lead the default sort with a share of 100 percent.
The run fails before billing when none of three or more readable books has a level inside its reward band, and when the reward list is empty even if search terms are set (the status no longer blames the filters when nothing was read).
The run status now counts the books with visible orders inside the band, the markets with no visible competition and the markets that cannot be quoted with your capital and distance.
Descriptions of the qualifying shares, capital, depth and scores state that they are upper bounds: a level that meets the minimum size in total is counted in full, although the book does not show its single orders.
README follows the standard order (example output, cost, input, then method and FAQ).
Verified with three inputs: typical (default, live), edge (quote capital below the minimum order size: null estimates and a status count; books with the band empty: flagged and last) and no results (search term without a match: one unbilled status row; empty reward list with search terms: failed run).
0.1
First version. Lists Polymarket markets that pay liquidity rewards, joins each with the CLOB order book of its first outcome and returns the reward terms, the capital and reward score already resting inside the reward band, and the estimated share, daily reward and daily yield of a two-sided quote of your capital and distance.
Filters: search terms, minimum daily reward, minimum 24h volume, maximum qualifying depth. Sorting by estimated yield, estimated reward, reward pool, reward per 1,000 dollars quoting or volume.
The estimate treats the visible book as a single competitor; it ranks markets, it does not forecast income.
Markets with a one-sided or unreadable order book are skipped and counted in the run status. The run fails before billing when the reward list is no longer sorted by daily reward, when no order book can be read, or when every record fails validation.
Verified with three inputs (see the smoke report):