Polymarket scoring
Developer reference for ranking and scoring Polymarket markets in feed configurations
Available Scoring Functions
Three scoring options are available:
none- No ranking applied; markets remain inorder_byorderlinear_boost_v0.0.1- Custom weighted scoring algorithmuser_trading_interest_v1- Personalized scoring based on user trading history
1. No Scoring (none)
none)Markets are returned in the order specified by order_by, with no additional ranking. Use this when you want deterministic ordering based solely on your order_by selection without any personalized or weighted reranking.
Example:
{
"scoring": "none",
"weighted_scorings": []
}2. Linear Boost (linear_boost_v0.0.1)
linear_boost_v0.0.1)Build a custom ranking algorithm by weighting multiple market features. This gives you full control over ranking by combining normalized market metrics (volume, liquidity, price changes, etc.) with your own weights to create a tailored scoring formula.
How It Works
Linear boost multiplies each feature's normalized value by its weight, then sums all weighted features to produce a final score. The final score is calculated as:
score = Σ (feature_value × weight)
Each feature is normalized, then multiplied by its weight. Markets are ranked by total score (highest first).
Configuration
Required:
scoring: "linear_boost_v0.0.1"weighted_scoringsarray with at least one feature
Weight range: 1-100 per feature
Available Features
Market metrics:
spread- Market spreadspan_days- Number of days the market lasts (duration)time_left- Time remaining until market resolutionhas_a_user_story- Whether market has user trading stories
Volume:
volume- Total trading volumevolume_24hr- 24-hour trading volumevolume_1wk- 1-week trading volumevolume_1mo- 1-month trading volumevolume_1yr- 1-year trading volume
Liquidity:
liquidity- Market liquidity
Price changes:
price_change_1hr- 1-hour price changeprice_change_24hr- 24-hour price changeprice_change_1wk- 1-week price changeprice_change_1mo- 1-month price change
User interest:
user_trading_interest_scores_v1- User trading interest scores (requires user context)
Example Configuration
{
"scoring": "linear_boost_v0.0.1",
"weighted_scorings": [
{
"feature": "liquidity",
"weight": 70
},
{
"feature": "volume_24hr",
"weight": 50
},
{
"feature": "price_change_24hr",
"weight": 30
},
{
"feature": "spread",
"weight": 20
},
{
"feature": "time_left",
"weight": 10
}
]
}Tips
- Higher weights = more influence on final ranking
- Combine multiple features for balanced ranking
- Price change features can be negative; higher absolute values indicate more volatility
user_trading_interest_scores_v1requires user context (wallet_address or user_id) to work
3. User Trading Interest (user_trading_interest_v1)
user_trading_interest_v1)Personalized reranking based on user's trading history and interests. This algorithm analyzes each user's past trading activity to identify patterns and preferences, then ranks markets by relevance to that specific user's trading behavior.
How It Works
The algorithm analyzes:
- User's past trading activity
- Markets the user has interacted with
- Similar markets and topics
- User's trading patterns and preferences
Markets are reranked to match the user's trading interests.
Configuration
Required:
scoring: "user_trading_interest_v1"weighted_scorings: [](empty array or omit)
User context required:
- Must provide
wallet_addressoruser_idwhen calling the feed deployment API
Example Configuration
{
"scoring": "user_trading_interest_v1",
"weighted_scorings": []
}When to Use
- Personalized feeds - Show markets relevant to each user
- User-specific recommendations - Based on trading history
- Discovery - Help users find markets they're likely to trade
Note: This scoring function works best when users have trading history. New users may see less personalized results.
Complete Example
{
"filters": {
"candidate_source": "polymarket-items",
"candidate_source_type": "posts",
"order_by": "volume_24hr"
},
"scoring": "linear_boost_v0.0.1",
"weighted_scorings": [
{
"feature": "price_change_24hr",
"weight": 80
},
{
"feature": "liquidity",
"weight": 40
},
{
"feature": "volume_24hr",
"weight": 30
}
]
}Scoring vs Ordering
order_by - Applied first, sorts markets before scoring
scoring - Applied second, reranks markets after ordering
Example flow:
- Filter markets by your criteria
- Sort by
order_by(e.g.,volume_24hr) - Apply
scoringalgorithm to rerank - Return top markets
Updated 4 days ago
