"""定位 000338.SZ / 000166.SZ 的 B 误报根因：本地行 vs tushare pro.daily 原样比对。"""
import os, time
import pandas as pd

os.environ.setdefault('HTTP_PROXY', 'http://127.0.0.1:7897')
os.environ.setdefault('HTTPS_PROXY', 'http://127.0.0.1:7897')
import tushare as ts
ts.set_token('edf6739fe1a4de0d747600cc753a8b4bf335cf27ef0f5aea2d2aa64c')
pro = ts.pro_api()
ROOT = "backtest_zt_full"

for code, pool in [('000338.SZ', 'zz1000'), ('000166.SZ', 'zz500')]:
    import glob
    fs = glob.glob(f"{ROOT}/daily_*/{code}.csv")
    d = pd.read_csv(fs[0])
    d = d[(d.trade_date >= 20210101) & (d.trade_date <= 20210201)].copy()
    d['raw_prev'] = d['raw_close'].shift(1)
    d['B'] = (d['raw_close'] / d['raw_prev'] - 1) * 100
    d['Bpct'] = (d['B'] - d['pct_chg']).abs()
    for _ in range(3):
        try:
            q = pro.daily(ts_code=code, start_date='20210101', end_date='20210201')
            if q is not None and len(q):
                break
        except Exception:
            pass
        time.sleep(2)
    q = q.sort_values('trade_date')
    q['trade_date'] = q['trade_date'].astype(int)
    d['trade_date'] = d['trade_date'].astype(int)
    m = d.merge(q[['trade_date', 'close', 'pre_close', 'pct_chg']], on='trade_date',
                suffixes=('_loc', '_ts'))
    m['d_close'] = m['raw_close'] - m['close']
    m['d_pre'] = m['pre_close_loc'] - m['pre_close_ts']
    m['d_pct'] = m['pct_chg_loc'] - m['pct_chg_ts']
    cols = ['trade_date', 'raw_close', 'close', 'pre_close_loc', 'pre_close_ts',
            'pct_chg_loc', 'pct_chg_ts', 'd_close', 'd_pre', 'd_pct', 'B', 'Bpct']
    print(f"--- {code} ({fs[0].split('/')[1]}) ---")
    print(m[cols].to_string(index=False))
