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:
Fetches vault metadata via
/vault/infoFetches per-vault share price history via
/vault/performanceStores 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 a single vault's share price history and store in the database. |
|
Run the daily Hibachi vault metrics scan. |
Classes
DuckDB database for storing Hibachi vault daily metrics. |
- class HibachiDailyMetricsDatabase
Bases:
objectDuckDB 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/performanceendpoint.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
- get_all_vault_metadata()
Get metadata for all vaults.
- Returns
DataFrame with one row per vault.
- Return type
- 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
- save()
Force a checkpoint to ensure data is written to disk.
- upsert_daily_prices(rows)
Bulk upsert daily price rows for a vault.
- 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).description (Optional[str]) – Long description of the vault strategy.
per_share_price (Optional[float]) – Current share price 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
session (eth_defi.hibachi.session.HibachiSession) – HTTP session.
db (eth_defi.hibachi.daily_metrics.HibachiDailyMetricsDatabase) – The metrics database to write into.
vault_info (eth_defi.hibachi.vault.HibachiVaultInfo) – Vault metadata from the listing.
timeout (float) – HTTP request timeout.
- Returns
True if the vault was successfully processed.
- Return type
- 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.
Fetches vault metadata via
/vault/infoFetches per-vault share price history via
/vault/performanceStores everything in DuckDB
No authentication is required — all data comes from public endpoints.
- Parameters
session (Optional[eth_defi.hibachi.session.HibachiSession]) – HTTP session. If None, a plain
requests.Session()is created.db_path (pathlib.Path) – Path to the DuckDB database file.
timeout (float) – HTTP request timeout.
vault_ids (Optional[list[int]]) – If provided, only scan these specific vault IDs (integers). Overrides the default vault listing.
- Returns
The metrics database instance.
- Return type