Building a Weighting System for Your Crypto Index

Developing a crypto index without a thoughtful asset weighting system is not an index—it's an arbitrary basket. We've encountered projects where BTC and ETH dominance in a market cap index reached 80%, defeating the purpose of diversification. In one real case, an MCW index on Ethereum mainnet requi

Blockchain Development Services

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1450
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    1003
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1269
  • image_logo-advance_0.webp
    B2B Advance company logo design
    717
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1008

Developing a crypto index without a thoughtful asset weighting system is not an index—it's an arbitrary basket. We've encountered projects where BTC and ETH dominance in a market cap index reached 80%, defeating the purpose of diversification. In one real case, an MCW index on Ethereum mainnet required daily rebalancing with gas costs of $50–200 per operation, eating up to 30% of annual returns. We replaced the methodology with SQRT and moved to Arbitrum: gas dropped to $2, diversification improved, and rebalances became infrequent. Our approach is to select a methodology aligned with portfolio goals and implement it in Solidity with minimal gas and maximum reliability. We have 10+ years of experience in DeFi and have developed over 15 weighting systems for various indices.

How to Choose an Asset Weighting System for a Crypto Index?

Market Cap Weighting (MCW)

Classic approach: weight proportional to market cap. BTC + ETH occupy 70–80% of any MCW index—resulting in low diversification and mega-cap bias. Solidity implementation: fetch prices via Chainlink, multiply by circulating supply (stored off-chain, updated via multisig). Issue: supply data cannot be reliably obtained on-chain—manipulation via multisig.

Square Root Market Cap (SQRT MCW)

Apply sqrt to market cap: weight = sqrt(mcap_i) / sum(sqrt(mcap_j)). ETH drops from 65% to ~40%, small-caps gain noticeable weight. Index Coop uses a variant in DPI. On-chain sqrt—no built-in Solidity function; use Babylonian method or Solmate library. Example code:

function sqrt(uint256 x) internal pure returns (uint256) { if (x == 0) return 0; uint256 z = (x + 1) / 2; uint256 y = x; while (z < y) { y = z; z = (x / z + z) / 2; } return y; } 

Equal Weight (EW)

All assets have equal weight—maximum diversification, but rebalancing costs high: with 20 assets, every price move creates drift. Daily rebalancing on Ethereum mainnet—guaranteed loss to gas. Realistic only on L2s (Arbitrum, Base) with gas in cents.

Volatility-Adjusted Weighting

Weight inversely proportional to volatility—less volatile assets weigh more. Goal: minimize overall portfolio volatility. On-chain calculation: historical prices for realized volatility via Chainlink (expensive) or a custom rolling window. For 20 assets with a 30-day window—600 storage entries, updated once a day—moderate load.

Methodology Diversification Gas per Rebalance Oracle Complexity
Market Cap Low Low High (supply)
SQRT Market Cap Medium Low High (supply)
Equal Weight High High Prices only
Volatility-Adj High Medium Prices + history
Fundamental Medium Low TVL/Volume data

How to Implement Weighting in Solidity Without Losing Precision?

Fixed-Point Arithmetic for Precision

All calculations in integers with 18 decimal precision (WAD = 1e18). Normalization example:

uint256 totalWeight = 0; for (uint i = 0; i < n; i++) { totalWeight += rawWeights[i]; } for (uint i = 0; i < n; i++) { normalizedWeights[i] = rawWeights[i] * 1e18 / totalWeight; } 

Check for overflow with large rawWeights and ensure normalizedWeights sum to 1e18 within ±1.

Rebalancing Trigger

Two approaches: time-based (every N blocks) and drift-based (deviation from target weight > threshold, e.g., 5%). Drift-based is more efficient: in stable markets, few rebalances. Implement via Chainlink Automation: checkUpkeep returns true if |currentWeight - targetWeight| > threshold for any asset. A 5% threshold reduces rebalances by 3–5 times, saving up to 40% in gas.

Trigger Comparison

Parameter Time-based (24h) Drift-based (5% threshold)
Rebalances per year ~365 ~70
Gas (yearly) High Up to 40% lower
Slippage Stable Lower in calm markets

Integration with Swaps

During rebalance, sell overweight assets and buy underweight ones. Optimal route: via a DEX aggregator (1inch, Paraswap) or directly Uniswap v3 Universal Router. Atomic rebalancing is critical: all swaps in a single transaction via multicall or try/catch with revert. If the transaction reverts mid-way, the index becomes stuck.

What the Process Includes

  1. Requirements analysis—select methodology, data sources, rebalancing trigger.
  2. Architecture design—smart contract specification, oracle layout.
  3. Development—WeightCalculator, Rebalancer, integration with external protocols.
  4. Testing—unit tests for weight calculations, fork tests with real prices and rebalance simulation.
  5. Deployment and documentation—deployment instructions, contract addresses, ongoing support.
Common Pitfalls When Designing a Weighting System
  • Using floating point in Solidity—banned; use fixed-point only.
  • Not accounting for supply data in MCW—leading to incorrect weights when circulating supply changes.
  • Missing slippage protection in rebalance swap logic—can lead to sandwich attacks.
  • Rebalancing in a single transaction without a partial fill revert—index gets stuck.

Timeline and Cost

Timeline depends on complexity: for a single methodology—3 to 5 days; for a multi-methodology system with governance switching—1–2 weeks. Cost is calculated individually after discussing your index.

Contact us for a consultation—we'll help you choose a methodology and evaluate the project. Get a free analysis of your index and launch weighting with minimal risk.