fix: build_panel_hk补mcap_q市值分位计算(当前市值×价格比反推+每日分位)——修复hk_pe_mom零命中
This commit is contained in:
@@ -100,6 +100,15 @@ def main():
|
||||
flow = pd.DataFrame(columns=["code","date","flow1"])
|
||||
print(f"资金流: {len(flow)} 条", flush=True)
|
||||
|
||||
# 市值(当前市值×价格比反推历史,总股本短期不变)
|
||||
print("加载市值...", flush=True)
|
||||
conn = sqlite3.connect(DB)
|
||||
fund_mc = pd.read_sql(
|
||||
"SELECT code, mcap_total FROM stock_fundamentals WHERE length(code)=5", conn)
|
||||
conn.close()
|
||||
fund_mc = fund_mc.dropna()
|
||||
# 每只股票最近收盘价(面板尾部)作为反推基准——在面板构建后统一计算
|
||||
|
||||
# 构建面板
|
||||
rows = []
|
||||
for idx, code in enumerate(codes):
|
||||
@@ -145,12 +154,21 @@ def main():
|
||||
print(f" 面板 {idx+1}/{len(codes)}", flush=True)
|
||||
|
||||
panel = pd.concat(rows, ignore_index=True)
|
||||
for col in ["sec_above","news3","flow5","mcap_q","limit_up"]:
|
||||
# 市值:当前市值×价格比反推历史(总股本短期不变)+ 每日市值分位
|
||||
fund_mc = fund_mc.dropna()
|
||||
last_px = panel.sort_values("date").groupby("code")["close"].last().rename("last_close")
|
||||
fm = fund_mc.merge(last_px, on="code", how="inner")
|
||||
fm = fm[fm["last_close"] > 0]
|
||||
panel = panel.merge(fm[["code", "mcap_total", "last_close"]], on="code", how="left")
|
||||
panel = panel[panel["last_close"] > 0]
|
||||
panel["mcap"] = panel["mcap_total"] * panel["close"] / panel["last_close"]
|
||||
panel["mcap_q"] = panel.groupby("date")["mcap"].rank(pct=True)
|
||||
for col in ["sec_above", "news3", "flow5", "limit_up"]:
|
||||
panel[col] = np.nan
|
||||
panel.to_pickle("/tmp/panel_12d_hk.pkl")
|
||||
print(f"\n港股面板v2: {len(panel)} 行 × {len(panel.columns)} 列", flush=True)
|
||||
print("新增: sec_ret20(行业动量) + pe_q/pb_q(估值分位) + flow1(当日资金流)", flush=True)
|
||||
print("仍缺: 资金流flow5(港股无历史)/新闻news3/mcap_q/行业above(后续补)", flush=True)
|
||||
print("新增: sec_ret20(行业动量) + pe_q/pb_q(估值分位) + flow1(资金流) + mcap_q(市值分位)", flush=True)
|
||||
print("仍缺: flow5(港股无历史)/news3/行业above(后续补)", flush=True)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user