hamuna-quant-cli 0.1.18__tar.gz → 0.1.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/PKG-INFO +1 -1
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/__init__.py +1 -1
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/qmt_market.py +19 -2
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/PKG-INFO +1 -1
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/pyproject.toml +1 -1
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/MANIFEST.in +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/README.md +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/README.md +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/__main__.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/_market_fallback.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/_metrics_15.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/_test_akquant_parity.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/akquant_data_adapter.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/akquant_runner.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/akquant_schema_adapter.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/base_strategy.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/cross_sectional_helpers.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/__init__.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/loader.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/qmt_broker.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/runner.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/server_market_client.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/prebuilt_downloader.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/prebuilt_resolver.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/qmt_translator.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/__init__.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/backtest.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/cache.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/discipline.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/http_client.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/s3client.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/server_client.py +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/scripts/server.json +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/SOURCES.txt +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/dependency_links.txt +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/entry_points.txt +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/requires.txt +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/top_level.txt +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/setup.cfg +0 -0
- {hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/tests/test_live_safety.py +0 -0
|
@@ -685,10 +685,27 @@ def _to_bar_obj(raw: dict[str, Any], ts_ns: int | None = None):
|
|
|
685
685
|
"""
|
|
686
686
|
import time as _t
|
|
687
687
|
from akquant import Bar
|
|
688
|
-
|
|
688
|
+
# Round 18.63.9: 让 Bar.timestamp 用 QMT 真实时间 (qmt_time_ms 转 ns) 而非
|
|
689
|
+
# wall-clock ns. 副作用: QMT bar 时间可能早于 session 启动 → akquant live
|
|
690
|
+
# 引擎 `_active_start_time_ns` 预热过滤会当历史 bar 滤掉 → warmup 永远攒
|
|
691
|
+
# 不满 → on_bar 不触发. 修: 当 qmt_time_ms < 当前 wall-clock 时 (QMT bar
|
|
692
|
+
# 在历史), 用 wall-clock + period_ns 偏移保持单调递增, 让 live feed 不丢
|
|
693
|
+
# bar; 当 qmt_time_ms >= wall-clock 时 (盘中真推), 直接用 qmt_time_ms.
|
|
694
|
+
# qmt_time_ms 仍进 extra — 策略可同时读 bar.timestamp 与 bar.extra 取
|
|
695
|
+
# 不同时间. 详见策略 on_bar 的"qmt_stime" vs "cli_wall".
|
|
696
|
+
wall_ns = _t.time_ns()
|
|
697
|
+
qmt_ms = raw.get("time")
|
|
698
|
+
if isinstance(qmt_ms, (int, float)) and qmt_ms > 0:
|
|
699
|
+
qmt_ns = int(qmt_ms * 1_000_000) # ms → ns
|
|
700
|
+
if qmt_ns >= wall_ns:
|
|
701
|
+
ts = qmt_ns # 盘中真推: 直接用 QMT 时间
|
|
702
|
+
else:
|
|
703
|
+
# 历史 bar: fallback 到 wall-clock + period 偏移 (调用方传 ts_ns)
|
|
704
|
+
ts = ts_ns if ts_ns is not None else wall_ns
|
|
705
|
+
else:
|
|
706
|
+
ts = ts_ns if ts_ns is not None else wall_ns
|
|
689
707
|
# 把 QMT 真实时间塞 extra — Bar 构造时一次性传 (事后不可写, Rust 侧冻结).
|
|
690
708
|
# extra 必须是 f64 dict, 跳过 None / 非数字字段 (Rust 侧拒收 string).
|
|
691
|
-
qmt_ms = raw.get("time")
|
|
692
709
|
extra: dict[str, float] = {}
|
|
693
710
|
if isinstance(qmt_ms, (int, float)) and qmt_ms > 0:
|
|
694
711
|
extra["qmt_time_ms"] = float(qmt_ms)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hamuna-quant-cli"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.19"
|
|
8
8
|
description = "Hamuna A 股回测 + 实盘统一 CLI (akquant 0.3.x). 替代 v1 自建 driver + QMT-style 策略规范."
|
|
9
9
|
readme = "hamuna_quant_cli/README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/_test_akquant_parity.py
RENAMED
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/akquant_data_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/akquant_schema_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/cross_sectional_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/live/server_market_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli/runtime/server_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{hamuna_quant_cli-0.1.18 → hamuna_quant_cli-0.1.19}/hamuna_quant_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|