Skip to content

Map Fee allocation ratios from StakeDAO #295

@Xeonus

Description

@Xeonus

We are currently missing the veBAL / vlAURA allocation shares because StakeDAOs votemarket aggregates everything.
More specifically we are missing following fields:

auraIncentives
auravebalShare
auraIncentivesPct

since fee run for timestamp periodStart=1767225600

Use the StakeDAO VoteMarket Analytics data (hosted on GitHub) to retroactively determine the Aura/BAL split after each round completes.

Data Sources Available

  1. Balancer-level analytics (all veBAL voters):
    - Metadata: https://raw.githubusercontent.com/stake-dao/votemarket-analytics/main/analytics/votemarket-analytics/balancer/rounds-metadata.json
    - Per-round: https://raw.githubusercontent.com/stake-dao/votemarket-analytics/main/analytics/votemarket-analytics/balancer/{roundId}.json
    - Contains: totalDepositedUSD, per-gauge totalDeposited, nonBlacklistedVotes, efficiency
  2. Aura/vlAURA-specific analytics (Aura voters only):
    - Metadata: https://raw.githubusercontent.com/stake-dao/votemarket-analytics/main/analytics/votemarket-analytics/vlaura/balancer/rounds-metadata.json
    - Per-round: https://raw.githubusercontent.com/stake-dao/votemarket-analytics/main/analytics/votemarket-analytics/vlaura/balancer/{roundId}.json
    - Contains: Same structure but filtered to Aura voter proxy's voting power only

Round Data Structure (both endpoints)

  {
    "totalDepositedUSD": 15942.30,        // Total incentives deposited for this round
    "globalAverageDollarPerVote": 0.0052, // Average $/vote
    "globalAverageEfficiency": 0.456,     // Emissions per $1 spent
    "analytics": [
      {
        "gauge": "0x1da1...",
        "nonBlacklistedVotes": 534931.78,
        "totalDeposited": 709.29,          // Incentives for this gauge
        "dollarPerVote": 0.00132,
        "incentiveDirected": 8442.01,      // BAL inflation directed
        "incentiveDirectedUSD": 1279.02,
        "efficiency": 1.803,
        "platform": "votemarket"
      }
    ]
  }

Calculation Method

For a given fee allocation period (biweekly):

  1. Match the period to VoteMarket rounds: Use endVoting timestamps from rounds-metadata.json to find the round(s) that overlap with the fee allocation period (periodStart → periodEnd). A biweekly period typically spans 2
    weekly VoteMarket rounds.
  2. Fetch both Balancer and vlAURA data for the matching round(s).
  3. Calculate Aura's share per gauge:
    For each gauge in the allocation:
    aura_votes = vlaura_round.analytics[gauge].nonBlacklistedVotes
    total_votes = balancer_round.analytics[gauge].nonBlacklistedVotes
    aura_share_for_gauge = aura_votes / total_votes
  4. Calculate aggregate split:
    aura_incentives = sum(pool.total_to_incentives_usd × aura_share_for_gauge[pool.gauge])
    bal_incentives = total_incentives - aura_incentives
    aura_vebal_share = aura_incentives / total_incentives
  5. Alliance pools exception: Pools with is_whitelist=true (alliance/aura-only) are 100% Aura by definition — no lookup needed.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions