ERC-4626: analyse performance of individual vaults

  • This is an example notebook how to diagnose and debug the ignestion of data from a single vault

  • Often vault have pecularities in their data, which

    • Cause need for us to clean data (see eth_defi.research.wrangle_vault_prices)

    • The cleaning itself may cause further issues for other vaults

This is a helper notebook allowing us to diagnose these issues.

Example vault ids

Known good and bad vaults:

# Fluid
VAULT_ID=1-"0x00c8a649c9837523ebb406ceb17a6378ab5c74cf"

# Plutus
VAULT_ID="42161-0x58bfc95a864e18e8f3041d2fcd3418f48393fe6a"

# Summer
VAULT_ID="42161-0x4f63cfea7458221cb3a0eee2f31f7424ad34bb58"

# Ipor Base
VAULT_ID="8453-0x45aa96f0b3188d47a1dafdbefce1db6b37f58216"

# Hype++
# https://dashboard.tenderly.co/contract/arbitrum/0x75288264fdfea8ce68e6d852696ab1ce2f3e5004/read?view=market
VAULT_ID="42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004"

Setup

[3]:
import logging
import os
import pickle
from pathlib import Path
from pprint import pprint

from eth_defi.utils import setup_console_logging
from eth_defi.vault.base import VaultSpec
from eth_defi.vault.vaultdb import read_default_vault_prices, DEFAULT_RAW_PRICE_DATABASE, DEFAULT_UNCLEANED_PRICE_DATABASE, VaultDatabase

vault_id = "42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004"

logger = logging.getLogger(__name__)

frequency = "1h"
output_folder = Path("~/.tradingstrategy/vaults").expanduser()
reader_state_db = output_folder / f"vault-reader-state-{frequency}.pickle"

spec = VaultSpec.parse_string(vault_id)

print(f"Examining vault {spec}")


Examining vault VaultSpec(chain_id=42161, vault_address='0x75288264fdfea8ce68e6d852696ab1ce2f3e5004')

Reader state

  • Check the stateful price reader state

[4]:
from pprint import pprint

reader_states: dict[VaultSpec, dict] = pickle.load(reader_state_db.open("rb"))

if not spec in reader_states:
    raise ValueError(f"Vault {spec} not found in reader states")

state = reader_states[spec]

print(f"Vault {spec} state:")
for key, value in state.items():
    print(f"  {key}: {value}")


Vault VaultSpec(chain_id=42161, vault_address='0x75288264fdfea8ce68e6d852696ab1ce2f3e5004') state:
  last_tvl: 3804729.905747
  last_share_price: 1.419478
  max_tvl: 6241538.816345
  first_seen_at_block: 276378009
  first_block: 276382721
  first_read_at: 2024-11-20 08:20:28
  last_call_at: 2025-12-22 12:19:17
  last_block: 413312321
  peaked_at: None
  peaked_tvl: None
  faded_at: None
  entry_count: 9407
  chain_id: 42161
  vault_address: 0x75288264FDFEA8ce68e6D852696aB1cE2f3E5004
  denomination_token_address: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
  share_token_address: 0x75288264FDFEA8ce68e6D852696aB1cE2f3E5004
  one_raw_share: None
  reading_restarted_count: 0
  vault_poll_frequency: large_tvl
  token_symbol: None
  unsupported_token: None
  invoke_count_passed: 28089
  invoke_count_first_read: 132
  invoke_count_missing_freq: 0
  invoke_count_throttled: 387
  write_filtered: 9267
  write_done: 140
  rpc_error_count: 0
  last_rpc_error: None

Raw price data

  • Check uncleaned raw price data from scan-prices.py script

[5]:
import pandas as pd

from eth_defi.research.wrangle_vault_prices import assign_unique_names

# Check raw price data
vault_db = VaultDatabase.read()
print(f"Checking uncleaned price data {DEFAULT_UNCLEANED_PRICE_DATABASE}")
prices_df = pd.read_parquet(DEFAULT_UNCLEANED_PRICE_DATABASE)
prices_df = assign_unique_names(vault_db.rows, prices_df, logger=lambda x: None)
vault_prices_df = prices_df.loc[prices_df["id"] == vault_id]
vault_prices_df = vault_prices_df.set_index("timestamp")

data = {
    "First timestamp": vault_prices_df.index.min(),
    "Last timestamp": vault_prices_df.index.max(),
    "Last block": f"{vault_prices_df['block_number'].iloc[-1]:,}",
    "First raw share price": vault_prices_df["share_price"].iloc[0],
    "Last raw share price": vault_prices_df["share_price"].iloc[-1],
    "Min raw share price": vault_prices_df["share_price"].min(),
    "Max raw share price": vault_prices_df["share_price"].max(),
    "Min TVL": f"${vault_prices_df['total_assets'].min():,.0f}",
    "Max TVL": f"${vault_prices_df['total_assets'].max():,.0f}",
    "Last TVL": vault_prices_df["total_assets"].iloc[-1],
    "Rows (vault)": len(vault_prices_df),
    "Rows (all)": f"{len(prices_df):,}",
}
pprint(data)


display(vault_prices_df.tail(50))
Checking uncleaned price data /Users/moo/.tradingstrategy/vaults/vault-prices-1h.parquet
{'First raw share price': 1.0,
 'First timestamp': Timestamp('2024-11-20 08:20:28'),
 'Last TVL': 3804729.905747,
 'Last block': '413,168,321',
 'Last raw share price': 1.419478,
 'Last timestamp': Timestamp('2025-12-22 02:20:30'),
 'Max TVL': '$6,241,539',
 'Max raw share price': 1.419478,
 'Min TVL': '$84,127',
 'Min raw share price': 1.0,
 'Rows (all)': '16,540,288',
 'Rows (vault)': 138}
chain address block_number share_price total_assets total_supply performance_fee management_fee errors id name
timestamp
2025-10-07 07:30:39 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386945921 1.393886 3.241143e+06 2.325256e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 09:30:16 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386974721 1.393886 3.189458e+06 2.288176e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 10:30:05 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386989121 1.393886 3.214497e+06 2.306140e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 11:29:54 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387003521 1.393886 3.258839e+06 2.337951e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 12:29:45 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387017921 1.393886 3.265279e+06 2.342572e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 14:29:21 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387046721 1.393886 3.269012e+06 2.345250e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 15:29:13 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387061121 1.393886 3.403705e+06 2.441881e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-10-07 16:29:09 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387075521 1.393886 3.541407e+06 2.540671e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-10 06:28:56 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398696321 1.408808 3.559103e+06 2.526322e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-10 08:28:45 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398725121 1.408808 3.553150e+06 2.522097e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-10 14:28:04 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398811521 1.408808 3.547086e+06 2.517792e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-10 18:27:36 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398869121 1.408808 3.523840e+06 2.501291e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-10 23:27:07 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398941121 1.408808 3.514042e+06 2.494337e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-11 04:26:42 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399013121 1.408808 3.536854e+06 2.510529e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-11 05:26:40 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399027521 1.408808 3.568853e+06 2.533243e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-11 06:26:36 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399041921 1.408808 3.668854e+06 2.604225e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-11-11 10:26:15 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399099521 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-07 14:50:41 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408157121 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-07 23:49:31 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408286721 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-08 19:46:15 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408574721 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-09 11:44:24 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408805121 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-10 07:41:42 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409093121 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-11 01:39:03 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409352321 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-12 02:35:12 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409712321 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-12 13:34:17 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409870721 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-13 02:33:16 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410057921 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-14 02:32:04 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410403521 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-15 04:32:18 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410777921 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-16 02:29:37 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411094721 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-16 10:28:44 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411209921 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-17 02:26:49 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411440321 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-17 06:26:37 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411497921 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-17 09:26:24 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411541121 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 02:24:43 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411785921 1.408808 3.704155e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 05:24:26 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411829121 1.419478 3.732210e+06 2.629283e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 08:24:15 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411872321 1.419478 3.670448e+06 2.585772e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 09:24:08 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411886721 1.419478 3.663123e+06 2.580612e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 12:23:54 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411929921 1.419478 3.637933e+06 2.562866e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 13:23:45 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411944321 1.419478 3.628198e+06 2.556008e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 14:23:30 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411958721 1.419478 3.663035e+06 2.580550e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 15:23:18 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411973121 1.419478 3.623032e+06 2.552369e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 16:23:07 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411987521 1.419478 3.730555e+06 2.628117e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 19:22:38 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412030721 1.419478 3.744273e+06 2.637781e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 20:22:29 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412045121 1.419478 3.748137e+06 2.640503e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-18 23:22:18 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412088321 1.419478 3.766870e+06 2.653700e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-19 02:22:14 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412131521 1.419478 3.803081e+06 2.679210e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-19 11:21:25 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412261121 1.419478 3.804730e+06 2.680372e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-20 01:21:15 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412462721 1.419478 3.804730e+06 2.680372e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-21 02:21:06 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412822721 1.419478 3.804730e+06 2.680372e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++
2025-12-22 02:20:30 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 413168321 1.419478 3.804730e+06 2.680372e+06 NaN NaN 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 HYPE++

Cleaned price data

  • Check price data after cleaning

[6]:


# Check price data print(f"Checking cleaned price data {DEFAULT_RAW_PRICE_DATABASE}") prices_df = read_default_vault_prices() cleaned_df = vault_prices_df = prices_df.loc[prices_df["id"] == vault_id] data = { "First timestamp": vault_prices_df.index.min(), "Last timestamp": vault_prices_df.index.max(), "Last block": f"{vault_prices_df['block_number'].iloc[-1]:,}", "First price": vault_prices_df["share_price"].iloc[0], "Last price": vault_prices_df["share_price"].iloc[-1], "Last price (raw)": vault_prices_df["raw_share_price"].iloc[-1], "Last TVL": vault_prices_df["total_assets"].iloc[-1], "Rows (vault)": len(vault_prices_df), "Rows (all)": f"{len(prices_df):,}", "Last timestamp (all)": prices_df.index.max(), } pprint(data) print("Last 50 rows of cleaned price data:") display(cleaned_df.tail(50))
Checking cleaned price data /Users/moo/.tradingstrategy/vaults/cleaned-vault-prices-1h.parquet
{'First price': 1.0,
 'First timestamp': Timestamp('2024-11-20 08:20:28'),
 'Last TVL': 3804729.905747,
 'Last block': '413,168,321',
 'Last price': 1.419478,
 'Last price (raw)': 1.419478,
 'Last timestamp': Timestamp('2025-12-22 02:20:30'),
 'Last timestamp (all)': Timestamp('2025-12-22 13:55:27'),
 'Rows (all)': '5,940,085',
 'Rows (vault)': 138}
Last 50 rows of cleaned price data:
id chain address block_number share_price total_assets total_supply performance_fee management_fee errors name event_count protocol raw_share_price returns_1h avg_assets_by_vault dynamic_tvl_threshold tvl_filtering_mask
timestamp
2025-10-07 07:30:39 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386945921 1.393886 3.241143e+06 2.325256e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 09:30:16 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386974721 1.393886 3.189458e+06 2.288176e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 10:30:05 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 386989121 1.393886 3.214497e+06 2.306140e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 11:29:54 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387003521 1.393886 3.258839e+06 2.337951e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 12:29:45 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387017921 1.393886 3.265279e+06 2.342572e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 14:29:21 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387046721 1.393886 3.269012e+06 2.345250e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 15:29:13 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387061121 1.393886 3.403705e+06 2.441881e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-10-07 16:29:09 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 387075521 1.393886 3.541407e+06 2.540671e+06 NaN NaN HYPE++ 1243 D2 Finance 1.393886 0.000000 2.158676e+06 43173.528257 False
2025-11-10 06:28:56 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398696321 1.408808 3.559103e+06 2.526322e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.010705 2.158676e+06 43173.528257 False
2025-11-10 08:28:45 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398725121 1.408808 3.553150e+06 2.522097e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-10 14:28:04 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398811521 1.408808 3.547086e+06 2.517792e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-10 18:27:36 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398869121 1.408808 3.523840e+06 2.501291e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-10 23:27:07 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 398941121 1.408808 3.514042e+06 2.494337e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-11 04:26:42 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399013121 1.408808 3.536854e+06 2.510529e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-11 05:26:40 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399027521 1.408808 3.568853e+06 2.533243e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-11 06:26:36 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399041921 1.408808 3.668854e+06 2.604225e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-11-11 10:26:15 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 399099521 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-07 14:50:41 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408157121 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-07 23:49:31 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408286721 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-08 19:46:15 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408574721 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-09 11:44:24 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 408805121 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-10 07:41:42 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409093121 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-11 01:39:03 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409352321 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-12 02:35:12 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409712321 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-12 13:34:17 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 409870721 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-13 02:33:16 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410057921 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-14 02:32:04 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410403521 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-15 04:32:18 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 410777921 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-16 02:29:37 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411094721 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-16 10:28:44 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411209921 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-17 02:26:49 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411440321 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-17 06:26:37 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411497921 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-17 09:26:24 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411541121 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-18 02:24:43 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411785921 1.408808 3.704155e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.408808 0.000000 2.158676e+06 43173.528257 False
2025-12-18 05:24:26 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411829121 1.419478 3.732210e+06 2.629283e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.007574 2.158676e+06 43173.528257 False
2025-12-18 08:24:15 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411872321 1.419478 3.670448e+06 2.585772e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 09:24:08 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411886721 1.419478 3.663123e+06 2.580612e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 12:23:54 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411929921 1.419478 3.637933e+06 2.562866e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 13:23:45 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411944321 1.419478 3.628198e+06 2.556008e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 14:23:30 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411958721 1.419478 3.663035e+06 2.580550e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 15:23:18 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411973121 1.419478 3.623032e+06 2.552369e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 16:23:07 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 411987521 1.419478 3.730555e+06 2.628117e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 19:22:38 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412030721 1.419478 3.744273e+06 2.637781e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 20:22:29 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412045121 1.419478 3.748137e+06 2.640503e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-18 23:22:18 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412088321 1.419478 3.766870e+06 2.653700e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-19 02:22:14 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412131521 1.419478 3.803081e+06 2.679210e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-19 11:21:25 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412261121 1.419478 3.804730e+06 2.680372e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-20 01:21:15 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412462721 1.419478 3.804730e+06 2.680372e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-21 02:21:06 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 412822721 1.419478 3.804730e+06 2.680372e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
2025-12-22 02:20:30 42161-0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 42161 0x75288264fdfea8ce68e6d852696ab1ce2f3e5004 413168321 1.419478 3.804730e+06 2.680372e+06 NaN NaN HYPE++ 1243 D2 Finance 1.419478 0.000000 2.158676e+06 43173.528257 False
[7]:


import logging import os import pickle from pathlib import Path from pprint import pprint import pandas as pd from IPython.display import display from eth_defi.research.wrangle_vault_prices import assign_unique_names try: import hypersync except ImportError as e: raise ImportError("Install the library with optional HyperSync dependency to use this module") from e logger = logging.getLogger(__name__) def main(): setup_console_logging( default_log_level=os.environ.get("LOG_LEVEL", "info"), ) frequency = "1h" output_folder = Path("~/.tradingstrategy/vaults").expanduser() reader_state_db = output_folder / f"vault-reader-state-{frequency}.pickle" vault_id = os.environ.get("VAULT_ID") assert vault_id is not None, "Set VAULT_ID environment variable" spec = VaultSpec.parse_string(vault_id) print("All ok") if __name__ == "__main__": main()
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[7], line 41
     37     print("All ok")
     40 if __name__ == "__main__":
---> 41     main()

Cell In[7], line 32, in main()
     29 reader_state_db = output_folder / f"vault-reader-state-{frequency}.pickle"
     31 vault_id = os.environ.get("VAULT_ID")
---> 32 assert vault_id is not None, "Set VAULT_ID environment variable"
     33 spec = VaultSpec.parse_string(vault_id)
     37 print("All ok")

AssertionError: Set VAULT_ID environment variable