-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the bss-values-index wiki!
A full reference for every formula, filter, and calculation used in the BSS Values Tool.
- Item Value
- Tier System
- Trading Calculator
- Trade Success %
- Demand Adjustment
- Upgrader
- Wishlist
- Trasher Score
- Portfolio Health
- Market Overview
- Trade Matcher
- Recommender
- Sort Mode Effects
Function: getAvg(item) — the foundation of every other calculation.
Every value displayed and compared in the tool comes from this function. It prefers bssmvalues.com's own smoothed average, falling back to a midpoint if unavailable.
if cached_graph_value > 0:
return cached_graph_value // bssmvalues.com's smoothed graph value
return (value_min + value_max) / 2 // midpoint fallback
If both value_min and value_max are missing or non-numeric, the item is treated as unpriced and excluded from value-based calculations.
Function: getTier(avg) — assigns a community-defined bracket to every item.
The tool walks this table top-to-bottom and assigns the first tier whose range contains the item's avg value. Tiers are a community convention, not an official game mechanic.
| Tier | Min | Max | Notes |
|---|---|---|---|
| Legendary | 100 | ∞ | Top-tier, usually limited items |
| Epic | 10 | 100 | High-end tradeable items |
| Ultra-Rare | 3 | 10 | Actively traded mid-tier |
| Very Rare | 1 | 3 | Common target for upgrading |
| Rare | 0.5 | 1 | Standard entry point |
| Uncommon | 0.1 | 0.5 | Low-end, useful as adds |
| Common | 0.01 | 0.1 | Filler / quest items |
| Basic | 0 | 0.01 | Near-zero value |
Items tend to trade within plus or minus 1 tier. Jumping 2+ tiers in a single trade is significantly harder regardless of value matching.
diff = yourTotal - theirTotal
pct = |diff| / theirTotal x 100
pct <= 5% -> Fair Trade
pct <= 15% AND diff < 0 -> Close — LB (adds suggested)
diff > 0 -> OP (you overpaid)
diff < 0 -> LB (you underpaid)
Both the raw value difference and the percentage are shown simultaneously — for example: OP +3.50 (+18.2%).
yourItems > 1 AND theirItems = 1 -> UP (Upgrading)
yourItems = 1 AND theirItems > 1 -> DG (Downgrading)
both sides > 1 -> Multi-item trade
In an UP trade expect to OP slightly. In a DG trade require OP from them.
When you are LB by 15% or less, the tool finds items from the full catalogue that could close the gap:
gap = |diff|
candidates = items where avg <= gap x 1.2
sorted by = |item.avg - gap| ascending
show top = 4 results
Function: calcTradeSuccess(combo, targetValue)
Estimates the likelihood a trade offer gets accepted in the BSS trading hub. Output is always clamped between 5 and 95 — a trade can never be guaranteed or impossible.
n = number of items you are offering
total = sum of avg values of your items
base = 60 // ~60% baseline acceptance rate
// Factor 1: Value closeness (0 to +60 pts)
valueDiff = |total - targetValue| / targetValue
valueScore = max(0, 1 - valueDiff x 2.5) x 60
// Factor 2: Overpay bonus (0 to +15 pts)
opRatio = (total - targetValue) / targetValue
opBonus = if OPing: min(15, opRatio x 40)
// Factor 3: Item count penalty (-5 per extra item)
countPenalty = (n - 1) x 5
// Factor 4: Tier distance penalty (-8 per tier jumped)
avgComboTier = average tier index of your items
targetTierIdx = tier index of target (0 = Legendary ... 7 = Basic)
tierDistance = max(0, targetTierIdx - avgComboTier)
tierPenalty = tierDistance x 8
// Final
raw = base + valueScore + opBonus - countPenalty - tierPenalty
result = clamp(round(raw), 5, 95)
| Factor | Max contribution | Direction |
|---|---|---|
| Base rate | 60 pts | Always added |
| Value closeness | +60 pts | Reduces as values diverge |
| Overpay bonus | +15 pts | Scales with how much you OP |
| Item count | -5 per extra item | 1 item = 0 penalty, 4 items = -15 |
| Tier distance | -8 per tier jumped | Same tier = 0 penalty, 3 tiers = -24 |
This is an estimate based on BSS trading conventions, not a real probability derived from actual trade data. Use it as a guide, not a guarantee.
Function: calcTradeSuccessAdj(combo, targetValue, targetItem)
Takes the base success % and adjusts it based on the demand levels of what you are giving vs what you are asking for. Only applied when Sort Mode is not Value.
| Sort Mode | Formula |
|---|---|
| Value | No adjustment — base score returned unchanged |
| Both | base - (targetDemand / 5) x 15 + (avgYourDemand / 5) x 12 |
| Demand | 50 + (avgYourDemand - targetDemand) x 12 (value math ignored) |
- Both mode: asking for a high-demand item costs up to -15 pts; offering high-demand items gains up to +12 pts
- Demand mode: only the demand gap between give and receive determines the score
Items are only shown as upgrade targets if their value falls within 10% of your combo's total:
comboTotal x 0.90 <= target.avg <= comboTotal x 1.10
Function: allSubsets(arr)
Every possible non-empty combination of your items is generated using bit masking:
for mask = 1 to (2^n - 1):
include item[i] if bit[i] of mask is set
max items: 8 (2^8 - 1 = 255 possible combos)
Capped at 8 items to prevent browser lag. Combos producing the same target are deduplicated, keeping only the highest success % per target.
| Sort mode | Order |
|---|---|
| Best Chance | success % descending |
| Best Value | target.avg descending |
| Custom % | distance from your chosen % ascending |
| Demand mode override | Re-sort by target.demand descending after above |
pct = min(1, myTotal / targetTotal)
pct >= 0.90 -> green (can afford)
pct >= 0.60 -> amber (getting close)
pct < 0.60 -> red (significantly short)
if you have items AND you are short:
gapVal = targetTotal - myTotal // find what you still need
else:
gapVal = targetTotal // find something for the full target
| Match type | Filter | Sort (Value mode) | Sort (Demand mode) |
|---|---|---|---|
| Singles | distance from gapVal / gapVal <= 30% | Closest to gapVal | demand descending |
| Pairs | sum distance from gapVal / gapVal <= 25% | Closest sum | avg demand of pair |
| Best Offers | distance from targetTotal / targetTotal <= 15% | success % descending | demand adjusted |
Best Offers only appear when your have-items contain subsets that actually cover the full target within 15%.
Function: calcTrashScore(item, invAvg) — returns 0 to 100, higher = more trashable.
invAvg = average value of all items in your drop zone that have a numeric value. Unpriced items are excluded from this average.
| Sort Mode | Formula |
|---|---|
| Value | round(min(100, max(0, (1 - avg/invAvg) x 70 + 30))) |
| Demand | round((1 - demand/5) x 100) |
| Both | round((1 - demand/5) x 60 + min(40, (1 - avg/invAvg) x 40)) |
// Score thresholds
score >= 61 -> TRASH (red)
score >= 31 -> MAYBE (amber)
score < 31 -> KEEP (green)
Limited and seasonal items are never recommended for trash regardless of their score.
Function: calcPortfolioHealth() — shown in the Recommender tab.
Four factors, each scored 0 to 100, then averaged into a single overall score.
| Factor | Formula | What it measures |
|---|---|---|
| Avg Demand | (weightedAvgDemand / 5) x 100 | How tradeable your inventory is on average |
| Diversity | min(1, uniqueTierCount / 5) x 100 | How many different value tiers are represented |
| Liquidity | max(0, 1 - spread) x 100 | How close items are to each other in value |
| Value Density | min(1, avgValuePerItem / 10) x 100 | Average value per item, caps at avg 10 |
overall = round((demandScore + divScore + liqScore + densityScore) / 4)
overall >= 70 -> Healthy
overall >= 45 -> Fair
overall < 45 -> Needs Work
Spread = weighted mean absolute deviation from avg value, divided by total value.
Before every data refresh, current values are snapshotted. After the refresh, each item is compared to detect significant changes.
// An item appears as a gainer or loser only if:
|current - previous| / previous >= 0.5%
// The same threshold triggers the flash animation on item cards
Items below this threshold are considered noise. In Value mode only demand 3 or above items appear in the Most Demanded strip. In Demand mode all items are shown.
| Path type | Filter | Combined success |
|---|---|---|
| Direct | distance from targetValue / targetValue <= 15% | calcTradeSuccessAdj(combo, target) |
| 2-step chain | Step 1: combo within 15% of intermediate / Step 2: intermediate within 30% of target | round(step1% x step2% / 100) |
The 2-step search checks the top 30 items by value below the target value as potential intermediates. Results sorted by combined success % descending.
No numeric formula — applies conditional rules to each item in your inventory.
Limited item protection: items marked as static (Star Signs) or with avg 50 or above and demand 3 or above are never recommended for trash or trade-away in any mode.
| Mode | Rule | Action shown |
|---|---|---|
| Gain Value | trashScore >= 65 AND demand <= 2 AND not limited | Trade away (UP) |
| Gain Value | demand >= 4 AND avg >= invAvg, find target at 1.2 to 3x value with equal or higher demand | Upgrade (UP) |
| Gain Value | avg < 0.1 AND demand <= 1 AND not limited | Use as adds / Discard |
| High Demand | demand >= 4 | Keep and trade strategically |
| High Demand | demand <= 1 AND not limited | Swap for higher-demand item |
| What to Hold | is limited | Hold — do not trash |
| What to Hold | demand >= 3 AND avg >= invAvg | Hold |
| What to Hold | demand <= 1 AND avg <= invAvg x 0.5 AND not limited | Trade away |
Recommender mode auto-syncs with Sort Mode. Switching to Demand activates High Demand mode. Switching to Value switches back to Gain Value.
How the global Sort Mode toggle changes each section of the tool.
| Section | Value | Both | Demand |
|---|---|---|---|
| Browse / Browsers | Sort by avg value | Sort by avg value | Sort by demand descending |
| Tier headers | Value range | Value range | Avg demand / 5 |
| Success % | Value only | Value + demand adjustment | Demand gap only |
| Upgrader results | By sort mode | Demand adjusted % | Re-sort by target demand |
| Wishlist singles | Closest to gap value | Closest to gap value | demand descending |
| Trasher score | 100% value vs inv avg | 60% demand + 40% value | 100% demand |
| Catalogue | By trash score | By trash score | By demand descending |
| Market demanded strip | Only demand 3 or above | All items | All items |
| Recommender mode | Auto switches to Gain Value | No change | Auto switches to High Demand |
Formulas last updated March 2026