grvt.vault

Documentation for eth_defi.grvt.vault Python module.

GRVT vault data extraction and analysis.

This module provides functionality for extracting GRVT vault data via public endpoints:

  • Vault discovery is done via the public GraphQL API at https://edge.grvt.io/query, which provides vault metadata including per-vault fee percentages.

  • Vault details (TVL, share price, performance, risk metrics, share price history) come from the public market data API at https://market-data.grvt.io.

No authentication is required for these endpoints.

For more information about GRVT strategies see:

Functions

build_vault_description(summary)

Build a merged markdown description from all GRVT vault description fields.

fetch_vault_details(session, chain_vault_ids)

Fetch vault detail data (TVL, share price) from the market data API.

fetch_vault_listing_graphql(session[, ...])

Fetch GRVT vault listing via the public GraphQL API.

fetch_vault_performance(session, chain_vault_ids)

Fetch vault performance metrics from the market data API.

fetch_vault_risk_metrics(session, ...[, ...])

Fetch vault risk metrics from the market data API.

fetch_vault_summary_history(session, ...[, ...])

Fetch share price history for a vault from the market data API.

Classes

GRVTVaultPerformance

Performance metrics for a GRVT vault from the market data API.

GRVTVaultRiskMetric

Risk metrics for a GRVT vault from the market data API.

GRVTVaultSummary

Summary information for a GRVT vault.

class GRVTVaultSummary

Bases: object

Summary information for a GRVT vault.

Combines data from the GRVT GraphQL API with live data from the market data API.

vault_id: str

Vault string ID on the GRVT platform (e.g. VLT:34dTZyg6LhkGM49Je5AABi9tEbW)

chain_vault_id: int

Numeric on-chain vault ID used by the market data API

name: str

Vault display name

description: str

Short description of the strategy

manager_bio: str

Manager biography (“Things to know about the trader” on the strategies page)

investment_philosophy: str

Investment philosophy (“How they trade” on the strategies page)

risk_management_process: str

Risk management process (“How they manage risks” on the strategies page)

vault_type: str

Vault type (prime or launchpad)

discoverable: bool

Whether the vault is listed on the strategies page

status: str

Vault status (e.g. active)

manager_name: str

Manager name

categories: list[str]

Strategy categories (e.g. ["Market Making", "Delta Neutral"])

manager_profile_image_url: Optional[str]

Manager profile image URL (avatar) from the GRVT CDN.

From the GraphQL managerInfo.profileImageURL field. None when the manager has no avatar. Used as a curator logo source.

cover_image_url: Optional[str]

Vault cover image URL (banner artwork) from the GRVT CDN.

From the GraphQL coverImageURL field. None when no cover image.

raw_metadata: Optional[dict[str, Any]]

Raw GraphQL vault node as returned by the GRVT API.

Stored verbatim so that newly added API fields are preserved without a schema change. Persisted as a JSON dump in the extended_vault_info column and refreshed weekly. None when the summary was not built from a GraphQL node.

create_time: Optional[datetime.datetime]

Creation timestamp

tvl: Optional[float]

Current TVL in USDT (from market data API)

share_price: Optional[float]

Current share price (from market data API)

management_fee: Optional[float]

Annual management fee as a decimal fraction (e.g. 0.01 = 1%). From the GRVT GraphQL API managementFee field (PPM).

performance_fee: Optional[float]

Performance fee as a decimal fraction (e.g. 0.20 = 20%). From the GRVT GraphQL API performanceFee field (PPM).

__init__(vault_id, chain_vault_id, name, description, manager_bio, investment_philosophy, risk_management_process, vault_type, discoverable, status, manager_name, categories, manager_profile_image_url=None, cover_image_url=None, raw_metadata=None, create_time=None, tvl=None, share_price=None, management_fee=None, performance_fee=None)
Parameters
Return type

None

class GRVTVaultPerformance

Bases: object

Performance metrics for a GRVT vault from the market data API.

chain_vault_id: int

Numeric on-chain vault ID

apr: float

Annualised percentage return

return_30d: float

30-day return

return_90d: float

90-day return

return_ytd: float

Year-to-date return

return_since_inception: float

Return since inception

trading_volume: float

Total trading volume in USDT

cumulative_pnl: float

Cumulative PnL in USDT

__init__(chain_vault_id, apr, return_30d, return_90d, return_ytd, return_since_inception, trading_volume, cumulative_pnl)
Parameters
  • chain_vault_id (int) –

  • apr (float) –

  • return_30d (float) –

  • return_90d (float) –

  • return_ytd (float) –

  • return_since_inception (float) –

  • trading_volume (float) –

  • cumulative_pnl (float) –

Return type

None

class GRVTVaultRiskMetric

Bases: object

Risk metrics for a GRVT vault from the market data API.

chain_vault_id: int

Numeric on-chain vault ID

sharpe_ratio: float

Sharpe ratio

sortino_ratio: float

Sortino ratio

max_drawdown: float

Maximum drawdown as a decimal (e.g. 0.12 = 12%)

__init__(chain_vault_id, sharpe_ratio, sortino_ratio, max_drawdown)
Parameters
  • chain_vault_id (int) –

  • sharpe_ratio (float) –

  • sortino_ratio (float) –

  • max_drawdown (float) –

Return type

None

build_vault_description(summary)

Build a merged markdown description from all GRVT vault description fields.

Combines the short description, manager bio, investment philosophy, risk management process, and extended metadata (strategy categories, manager profile image, cover image) into a single markdown string with headings matching the GRVT strategies page layout.

Only includes sections where the text or field is non-empty.

Parameters

summary (eth_defi.grvt.vault.GRVTVaultSummary) – Vault summary with description fields populated from the GraphQL API.

Returns

Merged markdown description, or empty string if all fields are empty.

Return type

str

fetch_vault_listing_graphql(session, graphql_url='https://edge.grvt.io/query', only_discoverable=True, timeout=30.0)

Fetch GRVT vault listing via the public GraphQL API.

Returns per-vault fee data (managementFee, performanceFee) alongside vault metadata.

The GraphQL endpoint at https://edge.grvt.io/query is public and requires no authentication.

Example:

from eth_defi.grvt.session import create_grvt_session
from eth_defi.grvt.vault import fetch_vault_listing_graphql

session = create_grvt_session()
vaults = fetch_vault_listing_graphql(session)
for v in vaults:
    print(f"{v.name}: mgmt={v.management_fee}, perf={v.performance_fee}")
Parameters
  • session (requests.sessions.Session) – HTTP session (no authentication needed).

  • graphql_url (str) – GRVT GraphQL API URL.

  • only_discoverable (bool) – If True, only return vaults marked as discoverable.

  • timeout (float) – HTTP request timeout in seconds.

Returns

List of GRVTVaultSummary objects with fee data populated.

Return type

list[eth_defi.grvt.vault.GRVTVaultSummary]

fetch_vault_details(session, chain_vault_ids, market_data_url='https://market-data.grvt.io', timeout=30.0)

Fetch vault detail data (TVL, share price) from the market data API.

Uses /full/v1/vault_detail. No authentication required.

Parameters
  • session (requests.sessions.Session) – HTTP session.

  • chain_vault_ids (list[int]) – List of numeric chain vault IDs.

  • market_data_url (str) – Market data API base URL.

  • timeout (float) – HTTP request timeout.

Returns

Dict mapping chain_vault_id to detail dict with keys: share_price, total_equity, valuation_cap, total_supply_lp_tokens.

Return type

dict[int, dict[str, Any]]

fetch_vault_performance(session, chain_vault_ids, market_data_url='https://market-data.grvt.io', timeout=30.0)

Fetch vault performance metrics from the market data API.

Uses /full/v1/vault_performance. No authentication required.

Parameters
  • session (requests.sessions.Session) – HTTP session.

  • chain_vault_ids (list[int]) – List of numeric chain vault IDs.

  • market_data_url (str) – Market data API base URL.

  • timeout (float) – HTTP request timeout.

Returns

Dict mapping chain_vault_id to GRVTVaultPerformance.

Return type

dict[int, eth_defi.grvt.vault.GRVTVaultPerformance]

fetch_vault_risk_metrics(session, chain_vault_ids, market_data_url='https://market-data.grvt.io', timeout=30.0)

Fetch vault risk metrics from the market data API.

Uses /full/v1/vault_risk_metric. No authentication required.

Parameters
  • session (requests.sessions.Session) – HTTP session.

  • chain_vault_ids (list[int]) – List of numeric chain vault IDs.

  • market_data_url (str) – Market data API base URL.

  • timeout (float) – HTTP request timeout.

Returns

Dict mapping chain_vault_id to GRVTVaultRiskMetric.

Return type

dict[int, eth_defi.grvt.vault.GRVTVaultRiskMetric]

fetch_vault_summary_history(session, chain_vault_id, market_data_url='https://market-data.grvt.io', timeout=30.0)

Fetch share price history for a vault from the market data API.

Uses /full/v1/vault_summary_history. No authentication required.

Returns a DataFrame with daily share prices, resampled from the ~8-hourly intervals provided by the API.

Parameters
  • session (requests.sessions.Session) – HTTP session.

  • chain_vault_id (int) – Numeric chain vault ID.

  • market_data_url (str) – Market data API base URL.

  • timeout (float) – HTTP request timeout.

Returns

DataFrame indexed by date with share_price and daily_return columns. Empty if no data.

Return type

pandas.DataFrame