hibachi.daily_metrics

Documentation for eth_defi.hibachi.daily_metrics Python module.

Hibachi daily vault metrics with DuckDB storage.

This module provides a daily pipeline for scanning Hibachi vault metrics and storing them in a DuckDB database. It derives daily share prices from the public /vault/performance endpoint on the Hibachi data API.

The pipeline:

  1. Fetches vault metadata via /vault/info

  2. Fetches per-vault share price history via /vault/performance

  3. Stores daily prices and metadata in DuckDB

Example:

from eth_defi.hibachi.daily_metrics import run_daily_scan, HibachiDailyMetricsDatabase

db = run_daily_scan()
print(f"Stored metrics for {db.get_vault_count()} vaults")
db.close()

Functions

fetch_and_store_vault(session, db, vault_info)

Fetch a single vault's share price history and store in the database.

run_daily_scan([session, db_path, timeout, ...])

Run the daily Hibachi vault metrics scan.

Classes

HibachiDailyMetricsDatabase

DuckDB database for storing Hibachi vault daily metrics.

class HibachiDailyMetricsDatabase

Bases: object

DuckDB database for storing Hibachi vault daily metrics.

Stores daily share price time series and vault metadata. The share prices come from the Hibachi data API’s /vault/performance endpoint.

Example:

from pathlib import Path
from eth_defi.hibachi.daily_metrics import HibachiDailyMetricsDatabase

db = HibachiDailyMetricsDatabase(Path("/tmp/metrics.duckdb"))
df = db.get_all_daily_prices()
print(df)
db.close()

Initialise the database connection.

Parameters

path – Path to the DuckDB file. Parent directories will be created if needed.

__init__(path)

Initialise the database connection.

Parameters

path (pathlib.Path) – Path to the DuckDB file. Parent directories will be created if needed.

close()

Close the database connection.

get_all_daily_prices()

Get all daily price data across all vaults.

Returns

DataFrame with all daily price records, ordered by vault then date.

Return type

pandas.DataFrame

get_all_vault_metadata()

Get metadata for all vaults.

Returns

DataFrame with one row per vault.

Return type

pandas.DataFrame

get_vault_count()

Get the number of unique vaults with price data.

Return type

int

get_vault_daily_prices(vault_id)

Get daily price data for a specific vault.

Parameters

vault_id (int) – Vault ID to query.

Returns

DataFrame with price records for this vault, ordered by date.

Return type

pandas.DataFrame

save()

Force a checkpoint to ensure data is written to disk.

upsert_daily_prices(rows)

Bulk upsert daily price rows for a vault.

Parameters

rows (list[tuple]) – List of tuples: (vault_id, date, per_share_price, tvl, daily_return, written_at).

upsert_vault_metadata(vault_id, symbol, short_description, description, per_share_price, outstanding_shares, tvl, min_unlock_hours, vault_pub_key=None, vault_asset_id=None)

Insert or update a vault’s metadata.

Parameters
  • vault_id (int) – Unique vault ID on the Hibachi platform.

  • symbol (str) – Short ticker symbol (e.g. GAV).

  • short_description (Optional[str]) – Display name.

  • description (Optional[str]) – Long description of the vault strategy.

  • per_share_price (Optional[float]) – Current share price in USDT.

  • outstanding_shares (Optional[float]) – Total shares issued.

  • tvl (Optional[float]) – Current TVL in USDT.

  • min_unlock_hours (Optional[int]) – Minimum lockup period in hours.

  • vault_pub_key (Optional[str]) – Vault’s on-exchange public key.

  • vault_asset_id (Optional[int]) – Native asset ID of the vault share token.

fetch_and_store_vault(session, db, vault_info, timeout=30.0)

Fetch a single vault’s share price history and store in the database.

Parameters
Returns

True if the vault was successfully processed.

Return type

bool

run_daily_scan(session=None, db_path=PosixPath('/home/runner/.tradingstrategy/vaults/hibachi-vaults.duckdb'), timeout=30.0, vault_ids=None)

Run the daily Hibachi vault metrics scan.

  1. Fetches vault metadata via /vault/info

  2. Fetches per-vault share price history via /vault/performance

  3. Stores everything in DuckDB

No authentication is required — all data comes from public endpoints.

Parameters
Returns

The metrics database instance.

Return type

eth_defi.hibachi.daily_metrics.HibachiDailyMetricsDatabase