因子平台直接消费基座的视图
Go to file
zlt f0b4fb76dc 容器化改造 2026-07-24 14:57:11 +08:00
.idea 初始化提交 2026-07-24 14:20:54 +08:00
sql 初始化提交 2026-07-24 14:20:54 +08:00
.env.example 初始化提交 2026-07-24 14:20:54 +08:00
Dockerfile 初始化提交 2026-07-24 14:20:54 +08:00
README.md 容器化改造 2026-07-24 14:31:59 +08:00
common.py 容器化改造 2026-07-24 14:57:11 +08:00
config.py 初始化提交 2026-07-24 14:20:54 +08:00
db.py 初始化提交 2026-07-24 14:20:54 +08:00
docker-compose.yml 容器化改造 2026-07-24 14:57:11 +08:00
factors.py 初始化提交 2026-07-24 14:20:54 +08:00
requirements.txt 初始化提交 2026-07-24 14:20:54 +08:00
run.py 容器化改造 2026-07-24 14:57:11 +08:00

README.md

akg-factor-bridge

astock-kg知识图谱基座quant_factor_service(通用因子平台)之间的因子导出桥。 把基座的四路产出(分析师预期空间 / 热度 / 利好利空事件 / 板块传导)做成符合平台规范的 子因子,写进平台因子库,供平台合成为选股因子。

设计与决策依据见 astock-kg docs/量化因子导出与合成设计.md。本工程不 import 基座或平台任何代码,只靠 .env 里三处数据库连接工作,可单独部署于任意能连通三库的服务器。

架构(基座出视图,桥算变换,平台算合成)

astock-kg 基座 PG ── 只读视图sql/astock_kg_slot_views.sql
   v_factor_universe / v_factor_consensus / v_factor_events / v_factor_transmission
        │                          (热度不经基座:桥直连 153 读 stock_fund_heat_scores
        ▼
akg-factor-bridge读视图+热度 → 算四路日截面(极性/衰减/打分) → 转前缀码 SH600000
        → 写平台 t_factor_akg_* + 注册 factor_metadata
        ▼
平台 quant_factor_service把四子因子当普通 single 因子 → 合成/回测/调度
  • 基座只暴露数据、不算因子;桥承载因子建模(极性表、衰减、打分——见 factors.py 跨信号 alpha 组合在平台侧。
  • universe = KG 覆盖池(v_factor_universe = 全部 industry_pools 成员并集),四路都限制其内。

四个子因子

factor_code 口径 缺失
akg_upside t_factor_akg_upside 目标价中枢/现价1as-of NaN无覆盖不出行
akg_heat t_factor_akg_heat 热度分 0~1最新批次 NaN
akg_event t_factor_akg_event Σ 事件极性×时间衰减 0无事件=中性)
akg_transmission t_factor_akg_transmission 路径数×(1已动比例) 0

用法(全程 Docker不在宿主机直跑

# 0) 基座视图建一次——经 astock-kg 的 postgres 容器(容器名 akg-postgres库/用户均 akg
docker exec -i akg-postgres psql -U akg -d akg < sql/astock_kg_slot_views.sql

# 1) 配连接(地址填「桥容器可达」的:跨机=LAN IP与基座同机同网=服务名,见下「网络」)
cp .env.example .env && vim .env

# 2) 构建并起桥容器(常驻)
docker compose up -d --build

# 3) 连通性自检(六项行数全出 = 三库都通)
docker compose exec akg-factor-bridge python run.py views

# 4) 注册 + 跑因子(幂等,可重跑)
docker compose exec akg-factor-bridge python run.py register
docker compose exec akg-factor-bridge python run.py build akg_heat --mode daily --date 2026-07-24
docker compose exec akg-factor-bridge python run.py build all --mode history --start 2024-01-01 --end 2026-07-24

生产触发:宿主 cron 或平台 XXL-JOB → docker exec akg_factor_bridge python run.py build all --mode daily

网络Docker

桥要连三处,按「桥部署在哪」定地址:

  • 跨机部署(默认,推荐——就是你要的「可部署到其他服务器」):三处都用 LAN IP/域名 .env 里填)。默认 bridge 网络即可出网到 LAN——前提是基座 PG、153、平台 MySQL 都对该 服务器可达(基座 PG 需发布端口或处于可达网络;见设计文档 §8-1
  • 与基座同机同网:让桥加入 astock-kg 的 compose 网络,用服务名 postgres 连基座 PG (取消 docker-compose.yml 里 networks 段的注释,填 astock-kg 的网络名)。

⚠️ 待实机核实项(本工程 DB 细节以线上为准,跑不通按此排查)

  1. 三库连通性python run.py views 六项全 才算通。任一 先解决网络/账号 (尤其桥所在服务器到基座 PG、153、平台 MySQL 的可达性)。
  2. gp_day_data 代码列与形态upside 现价来自它。列名可能是 ts_codesymbol.envPRICE_CODE_COL);代码形态(600000.SH / SH600000 / 600000 两边已统一折前缀式再 join——若 upside 出行为 0多半是形态没对上在此调 join 口径。
  3. factor_metadataregister 自适应实际列写入;若无 factor_type 列,平台 /mining/factors/all 可能查不到本因子(会打印告警),需与平台侧确认。
  4. 事件极性/方向§8-3 开放问题)factors.EVENT_POLARITY / EVENT_DIR 是草案; 增减持 的增/减方向若 qualifiers.direction 里没有(当前视图取 direction会落 0 需确认基座 EVENT 的方向到底存在哪个 qualifier 键。半衰期 10 交易日 / 窗口 60 交易日可调。
  5. 事件交易日龄近似v1 用自然日×(5/7) 折算交易日龄,非精确交易日历——够用,后续可 换真实交易日历向量化。
  6. universe 覆盖面F0 前置):先用 astock-kg 的 factor_coverage_probe.py 确认池内 四信号日截面覆盖数(尤其热度 ≥30~50/日),再决定是否放量。