The Features API manages two distinct concepts: feature definitions (the plugin configuration stored in the database) and feature datasets (the computed parquet files stored in S3/MinIO). This separation allows the same definition to be computed over different symbols, timeframes, and date ranges while maintaining full version history via SHA-256 content hashing. ADocumentation Index
Fetch the complete documentation index at: https://mintlify.com/najmulhossainnj/Hedge-fund-backend/llms.txt
Use this file to discover all available pages before exploring further.
Feature row captures a plugin key, its hyperparameters, a human-readable name and type, and an optional storage URI prefix. A FeatureDataset row represents one generated instance of that definition — bound to a specific symbol, timeframe, and date range — and is addressed by a version_hash derived from all its inputs, including the source data fingerprint.
Feature CRUD
Create a Feature Definition
/api/v1/features
Request Body
Human-readable name for this feature, e.g.
"14-period RSI". Maximum 255 characters.Plugin identifier resolved through the feature plugin registry, e.g.
"technical.rsi" or "statistical.autocorr". Use GET /api/v1/features/plugins/available to enumerate registered keys.Feature category. One of:
"technical", "statistical", "automated", "news", "fundamental", "macro".Plugin-specific hyperparameters passed to the feature plugin constructor, e.g.
{"period": 14}. Defaults to {}.Optional free-text description of this feature definition.
Response — FeatureRead
Unique identifier assigned at creation.
The feature name.
The resolved plugin key.
Feature category.
Hyperparameters stored with the definition.
Human-readable description.
Optimistic-lock version counter, incremented on every update.
S3/MinIO key prefix under which generated datasets for this definition are stored. Populated after first generation.
ISO 8601 creation timestamp.
ISO 8601 last-updated timestamp.
List Feature Definitions
/api/v1/features
Query Parameters
Number of records to skip. Default
0.Maximum records to return. Default
100.FeatureRead objects.
Get a Feature Definition
/api/v1/features/{feature_id}
UUID of the feature definition to retrieve.
FeatureRead object.
Errors: 404 Feature not found if the ID does not exist.
Update a Feature Definition
/api/v1/features/{feature_id}
Request Body (all fields optional)
Updated name.
Updated plugin key.
Updated feature category.
Replacement hyperparameter dict. Replaces the entire
parameters object (not merged).Updated description.
Override the S3 prefix for this definition’s datasets.
FeatureRead object.
Errors: 404 Feature not found.
Delete a Feature Definition
/api/v1/features/{feature_id}
204 No Content
Errors: 404 Feature not found.
Feature Generation
Generate (or Reuse) a Feature Dataset
/api/v1/features/{feature_id}/generate
version_hash from the tuple (plugin_key, parameters, symbol, timeframe, start_date, end_date, source_fingerprint). If a FeatureDataset row with that hash already exists in the store, it is returned immediately without any recomputation, making repeated calls safe and cheap.
Path Parameter
UUID of the feature definition to compute.
Request Body
Ticker symbol to compute the feature for, e.g.
"AAPL" or "BTC-USD".OHLCV bar size. Supported values:
"1d", "1h", "1w". Default "1d".ISO 8601 start of the date range, e.g.
"2023-01-01T00:00:00".ISO 8601 end of the date range (exclusive), e.g.
"2024-01-01T00:00:00".Response — FeatureGenerateResponse
First 10 rows of the generated feature data as a list of row dicts, useful for quick visual inspection in the UI.
404 Feature not found— thefeature_iddoes not exist in the database.422 Unprocessable Entity— the Market Data Layer returned an empty OHLCV frame for the requested symbol and date range.
Force Recompute a Feature Dataset
/api/v1/features/{feature_id}/regenerate
FeatureDataset row is created, preserving full lineage history. If the data has not changed the existing dataset version is resolved and returned.
regenerate always invokes the plugin even if a cached version exists. Use this when you suspect the Market Data Layer has updated or revised historical bars (e.g. after a corporate action adjustment or data-vendor restatement) and want to ensure your stored features reflect the latest source data.generate — same body fields, same FeatureGenerateResponse shape.
Errors: 404 if feature not found; 422 if the Market Data Layer returns empty OHLCV.
List Historical Dataset Versions
/api/v1/features/{feature_id}/versions
FeatureDataset records for a feature definition, filtered to a specific symbol and timeframe, ordered by created_at ascending.
Query Parameters
Ticker symbol to filter versions by, e.g.
"AAPL".Bar size to filter by. Default
"1d".FeatureDatasetRead objects ordered by created_at.
Errors: 404 Feature not found.
Plugin Discovery
List Available Feature Plugins
/api/v1/features/plugins/available
plugin_key when creating feature definitions.
Response:
The returned keys are driven by the server-side plugin registry. If you have deployed custom plugins, they will appear here automatically without any frontend changes.