Store
SkillFiles & storageUse when tasks need local market Parquet data, factor artifacts, backtest data, or model files through DataManager.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Store skill
What this skill tells your AI
The instructions your AI receives, as published by quantskills/agent-quantspace in skills/store/SKILL.md and read by ahel’s review.
skills/store owns reusable file storage for market data and generic research
artifacts. The public project uses explicit strategy universes and does not
maintain a central universe registry.
DataManager
from skills.store.data_manager import DataManager, DataQualityReport, validate_ohlcv
from skills.store.workspace import resolve_workspace_paths
The data root comes from QUANTSPACE_DATA_ROOT, otherwise the repository
data/ directory.
resolve_workspace_paths() centralizes QUANTSPACE_WORKSPACE_ROOT,
QUANTSPACE_DATA_ROOT, and QUANTSPACE_REPORTS_ROOT without creating any
directories. Runtime entrypoints use it instead of modifying sys.path or
independently guessing the repository root.
Supported layout:
data/market/<frequency>/<symbol>.parquet
data/adj_factor/<symbol>.parquet
data/factors/<namespace>/
data/factor_test/<namespace>/
data/correlation/
data/backtest/
data/models/
data/export/
The subdirectory below data/market/ is a storage directory/data-set key. Its
base part is the real bar frequency, while an optional _adj suffix records
the price-adjustment state:
| Directory key | Real freq | Meaning |
|---|---|---|
1d | 1d | Daily unadjusted (raw) bars |
1d_adj | 1d | Adjusted daily bars |
5m | 5m | 5-minute unadjusted bars |
5m_adj | 5m | Adjusted 5-minute bars |
Therefore data/market/1d_adj/ does not represent a frequency named
1d_adj; its freq is still 1d, and 1d_adj is only the directory name
indicating adjusted 1d data. The same convention applies to other bar
intervals: <freq>_adj stores adjusted bars whose actual frequency is
<freq>.
The current DataManager API names its directory-selector parameter
frequency. Pass the full directory key to read_symbol / read_symbols /
save_symbol (for example, frequency="1d_adj") so it resolves the intended
path. Do not reuse that suffixed value as the semantic freq or pass it to an
upstream market-data API; use freq="1d" there.
Main methods:
read_symbol,read_symbols,save_symbolimport_symbol_csv,import_combined_csv,list_symbolssave_factor,read_factor,factor_namespace_dir,factor_filenamesave_factor_test,read_factor_test_summarysave_factor_correlation,read_factor_correlationsave_backtest_run,read_backtest_summary,read_backtest_runlist_models,read_model_metadata
read_symbols returns a MultiIndex (symbol, eob) panel and reports every
missing symbol in one FileNotFoundError.
Factor-mining Phase 02 persists research artifacts under
data/factors/<namespace>/artifacts/ through DataManagerArtifactStore (path
segments are validated; resolved paths must stay under that namespace) and may
reuse save_factor / factor_filename for explicit wide-pivot caches keyed by
content-addressed params such as cache_key. Phase 04 additionally uses
DataManager.namespaced_artifact_dir / get_by_identity for controller
snapshots and append-only event payloads under the same factors namespace root
(no second catalog).
from skills.store.data_manager import DataManager
panel = DataManager().read_symbols(
["SHSE.510300", "SHSE.510500"],
frequency="1d_adj",
)
Boundary Rules
- Keep market and generic research files here.
- Pass strategy universes as explicit symbol lists owned by the caller.
- Treat factor/backtest/model subdirectory names as artifact namespaces, not centrally managed instrument universes.
- Do not add strategy identity schemas or a second experiment catalog.
Signals
- GitHub stars
- 57
- Forks
- 11
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages (in data_manager.py)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
store- Source
- github.com/quantskills/agent-quantspace