A case study ranking cross-venue buy→sell routes in CS2 skins by cash netback after FX basis, fees, lockups, and liquidity haircuts, with optional pricers for floats/patterns and trade-up manufacturing anchors.
If you strip the paint off the skins:
- marketplaces = exchanges / brokers
- Steam Wallet = restricted settlement currency (Steam USD
$\neq$ Cash USD) - fees = transaction costs
- trade holds = inventory carry / settlement delay
- Covert
$\to$ Gold = input$\to$ output manufacturing spread - regional basis (West vs China) = geographic arbitrage / basis trading
This repo demonstrates the same system design decisions: normalize, de-bias, score, and rank.
- Ingest price prints and listings from multiple venues.
- Normalize:
- net-of-fees
- currency to USD (ECB FX by default)
- optional implied FX basis per venue (treating restricted usage currencies like Steam Wallet separately)
- Compute a Global Reference Price (GRP) via weighted median:
$P^{GRP} = \text{wMedian}({P_{net}}, {Weights})$ - Apply Feature Multipliers to compute a Model Price:
$P^{model} = P^{GRP} \cdot M_{float} \cdot M_{pattern} \cdot M_{stickers}$ - Float: Tri-phase curve (Perfection, Wear Buckets, High-Float).
- Pattern: Tier-based multipliers (e.g., Blue Gem).
- Stickers: Scrap value + Synergy premium.
-
Score Routes (Netback Edge):
$Edge = \frac{SellProceeds_B - BuyCost_A}{BuyCost_A}$ - Haircuts: Time-to-sell, inventory lockup, and venue risk.
Full mathematical details in
docs/quant-model.md.
This project uses uv for dependency management.
uv syncuv run cs2arb demo run --prices data/demo_prices.json --listings data/demo_listings.jsonCompute the precise model price for an item with specific attributes (e.g., low float):
uv run cs2arb features score-listing --base-price 100 --float-val 0.001Analyze input/output spreads (e.g., Trade-Up profitability):
uv run cs2arb manufacturing analyze --input-prices "10,10,10" --output-prices "50,12"docs/case-study.md– context + framingdocs/architecture.md– data-flow diagramsdocs/data-model.md– listings, prints, and feature schemasdocs/usage.md– detailed CLI usage guide
src/cs2_arb/– packagefx/– ECB FX + implied FX basis estimatormarkets/– adapters (demo, steam, buff163)pricing/– GRP, fee normalization, float curves, manufacturingscoring/– route scoring (netback & basis)storage/– sqlite cache
data/– fixtures (safe, fake-but-plausible numbers)
This project is for engineering demonstration and research. It does not automate trades, does not bypass platform protections, and is not financial advice.