#!/usr/bin/env python3
"""抽查 5400 只 raw_close/hfq_close 值覆盖, 找出需从 tushare 补 factor 的(factor 会 NaN 的)"""
import glob, os
import pandas as pd
BASE = os.path.expanduser('~/zt_app/backtest_zt_full')
empty_raw, empty_hfq, both_ok = [], [], 0
for f in glob.glob(f'{BASE}/daily_*/*.csv'):
    d = pd.read_csv(f, dtype={'trade_date': str})
    if 'raw_close' not in d.columns or 'hfq_close' not in d.columns:
        empty_raw.append(('缺列', os.path.basename(f))); continue
    rc = d['raw_close'].isna().sum()
    hc = d['hfq_close'].isna().sum()
    if rc == len(d):
        empty_raw.append(('raw全空', os.path.basename(f)))
    elif hc == len(d):
        empty_hfq.append(('hfq全空', os.path.basename(f)))
    else:
        # factor 是否会 NaN(任一行 raw 或 hfq 空)
        nan_factor = d['raw_close'].isna().any() or d['hfq_close'].isna().any()
        if nan_factor:
            both_ok += 1  # 部分行有值, factor 部分 NaN
        else:
            both_ok += 1
print(f'raw/hfq 全空或缺列: {len(empty_raw)} \n  {empty_raw[:10]}')
print(f'hfq 全空: {len(empty_hfq)} \n  {empty_hfq[:10]}')
print(f'其余(可反推, 含部分NaN): {both_ok}')
