Files
Chan/research/out/step46_baseline_big.json
T
jackyu66gitandCursor 0b4d7693b8 缠论引擎提速 2.6x,瓶颈是逐行 Series 查找而非指标计算
原以为浪费在 add_indicators 算了太多用不到的指标,实测它只占全量构建的
1.3%——talib 是向量化 C 代码,便宜。真正的两处:

cal_kl_data 占 96%:每根 K 线 df.iloc[i] 新建一个 40 列 Series,再在其上做
几十次逐键查找。改为预取 ndarray 后 2 万根 1946ms → 824ms。

ChanKLC.cal_all_ema_status 占 25%:每次合并 KLU 都立即重算,而它产出的
ema_status / ema52_pos / ema52_status 全仓无任何读取方(含前端)。改为惰性
求值,保留属性形式以防将来有人读。顺带删掉 get_klc_list 里累加一整轮后直接
丢弃的 ema_up_list / ema_down_list。

另加 TF_DF(lean=True):只构建到中枢,跳过线段/走势中枢/MACD 状态机——这些
只服务 bsp_list 与 web 展示,笔和中枢不依赖。研究与实盘走这条快 3.6x。

结果 2 万根 5m:full 1946 → 754ms,lean → 543ms。

step46_engine_parity.py 是配套的安全网,改引擎前先跑一次 --save。它对 KLC
端点与分型、笔起止价与 is_sure、中枢 zg/zd/available_ts/阶梯、信号全部输出列,
以及 26 个被下游消费的 dataframe 列取哈希。本次三处改动逐步验证,另用
git stash 切回改动前代码在 20 万根 × 5 用例上做了跨版本逐位对拍,全部一致;
增量路径与 web API 也各验一遍。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 04:04:44 +08:00

487 lines
11 KiB
JSON

{
"BTC_1m": {
"n_rows": 200000,
"n_klu": 200000,
"n_klc": 131701,
"n_bi": 9504,
"n_seg": 1406,
"n_bi_zs": 1073,
"n_zs": 155,
"n_bsp": 0,
"klc_high": "992af879db2e8e43",
"klc_low": "8ba4f68b829b552c",
"klc_fx": "03870041e7b334e7",
"bi_start": "3d8fbede022d751d",
"bi_end": "3d8fbede022d751d",
"bi_sure": "bd74890c6552b345",
"n_zones": 1073,
"zone_zg": "0436269233f63984",
"zone_zd": "5b3cc3b0b0eafd20",
"zone_avail": "b45174f22f908d5b",
"zone_ladder": "1342f5e104d399fa",
"n_sig": 396,
"sig_entry_idx": "c9728ba1d4a739c5",
"sig_direction": "8bc66cd2f6c0ffa8",
"sig_bo_idx": "2981b0d3134b99cc",
"sig_pb_idx": "21ec7c5b1f85cca4",
"sig_lag": "2f5640376a99c4ae",
"sig_depth": "cf3f0bf3d239c2f9",
"sig_zone_i": "8654e213e0faaa5f",
"col_open": "32e16cc827550cce",
"col_high": "9c9cb56b72814b2b",
"col_low": "4db855614f0f3254",
"col_close": "3707a170acb64306",
"col_volume": "4e3eb344a25eeec2",
"col_atr": "c6e1a3b27bfaec47",
"col_macd": "94a485845cf30bea",
"col_macdsignal": "87ec0074d9bc8cbc",
"col_macdhist": "5127835e6b590aff",
"col_ema5": "5f4851ec918152d5",
"col_ema13": "5ede020d68cde473",
"col_ema24": "dc45445e03565a7d",
"col_ema26": "7ffc3a0799531172",
"col_ema52": "dafc5dbfdac7ec7d",
"col_ema104": "6a5911c3a9daead3",
"col_ema156": "f7aa34a1c04ecd66",
"col_ema208": "773341a5170f61ee",
"col_ema7": "25b47f9884bc7eff",
"col_rsi": "d07bc07917c51b98",
"col_volume_ratio": "2b3cbd8c2fd4a0c7",
"col_bb2633upper": "8abeb464d97ed502",
"col_bb2633lower": "54f96c202ecd17c2",
"col_bb2633middle": "bf7a068c7592c379",
"col_bbp30": "e6b3f087308509bd",
"col_bbp120": "eb53451f0dadd779",
"col_bbp365": "c32489b1e8216c96",
"_all_columns": [
"atr",
"bb2633lower",
"bb2633middle",
"bb2633upper",
"bblow120",
"bblow30",
"bblow302",
"bblow365",
"bbmiddle30",
"bbp120",
"bbp2633",
"bbp30",
"bbp302",
"bbp365",
"bbup120",
"bbup30",
"bbup302",
"bbup365",
"close",
"date",
"ema10",
"ema104",
"ema13",
"ema156",
"ema208",
"ema24",
"ema26",
"ema5",
"ema52",
"ema7",
"high",
"low",
"macd",
"macdhist",
"macdsignal",
"open",
"rsi",
"timestamp",
"volume",
"volume_ratio"
]
},
"BTC_5m": {
"n_rows": 200000,
"n_klu": 200000,
"n_klc": 146735,
"n_bi": 9670,
"n_seg": 1485,
"n_bi_zs": 1093,
"n_zs": 160,
"n_bsp": 0,
"klc_high": "dc921e6668a807e9",
"klc_low": "47a5508f3736f23b",
"klc_fx": "4a459666e121fee2",
"bi_start": "12144ccb870d12a1",
"bi_end": "12144ccb870d12a1",
"bi_sure": "0ee81c335c3c858e",
"n_zones": 1093,
"zone_zg": "54918583a2371b0f",
"zone_zd": "cb698e8570e2b3fc",
"zone_avail": "70a78276ce8d81e8",
"zone_ladder": "4eaf9f4810737d9b",
"n_sig": 396,
"sig_entry_idx": "c166fe6bbec08d80",
"sig_direction": "d376c8684119da87",
"sig_bo_idx": "1963ec7608066cf6",
"sig_pb_idx": "c7db54ba1103fe3b",
"sig_lag": "8cfbb30f7e26bcff",
"sig_depth": "fbc0589ca7908cee",
"sig_zone_i": "aa0a7f54921bfdb2",
"col_open": "b0ef7c7ed1122a9b",
"col_high": "c036264627035105",
"col_low": "aad6caaa73079e29",
"col_close": "00ccedeb197fd137",
"col_volume": "11686a1bed642a1f",
"col_atr": "1fa43f86914c4a8e",
"col_macd": "ad66e34357a586c7",
"col_macdsignal": "3b9a127b992897b3",
"col_macdhist": "c564a280ef8eb0f1",
"col_ema5": "74e476c0269798a9",
"col_ema13": "f6968ae7f127ebe2",
"col_ema24": "db3ae3b801d846f5",
"col_ema26": "adda6c2af103a6ed",
"col_ema52": "4d663556702cd4df",
"col_ema104": "c14c8d69fa4be179",
"col_ema156": "9e5df963de200c54",
"col_ema208": "30e0eabc1ef6e4fb",
"col_ema7": "a78d7798f10638fc",
"col_rsi": "c4dc1ca7d74b64f9",
"col_volume_ratio": "62694ace333f324a",
"col_bb2633upper": "35149f0ee32941d5",
"col_bb2633lower": "ce61849352496a88",
"col_bb2633middle": "62cf973be0c1d775",
"col_bbp30": "d8dc8265680ed17c",
"col_bbp120": "d951e014ae714540",
"col_bbp365": "a4f5700a169eed20",
"_all_columns": [
"atr",
"bb2633lower",
"bb2633middle",
"bb2633upper",
"bblow120",
"bblow30",
"bblow302",
"bblow365",
"bbmiddle30",
"bbp120",
"bbp2633",
"bbp30",
"bbp302",
"bbp365",
"bbup120",
"bbup30",
"bbup302",
"bbup365",
"close",
"date",
"ema10",
"ema104",
"ema13",
"ema156",
"ema208",
"ema24",
"ema26",
"ema5",
"ema52",
"ema7",
"high",
"low",
"macd",
"macdhist",
"macdsignal",
"open",
"rsi",
"timestamp",
"volume",
"volume_ratio"
]
},
"ETH_5m": {
"n_rows": 200000,
"n_klu": 200000,
"n_klc": 147071,
"n_bi": 9668,
"n_seg": 1447,
"n_bi_zs": 1064,
"n_zs": 151,
"n_bsp": 0,
"klc_high": "b474c10434b7d1be",
"klc_low": "16c8b368522eff67",
"klc_fx": "454f30149c5437e9",
"bi_start": "e962ff5f90072953",
"bi_end": "e962ff5f90072953",
"bi_sure": "6702ee0ec3ba05b7",
"n_zones": 1064,
"zone_zg": "4f8fdc5ce3699a83",
"zone_zd": "55f8826e3850bbbb",
"zone_avail": "b4af5d59909c20de",
"zone_ladder": "7718718df232fbb6",
"n_sig": 357,
"sig_entry_idx": "6de39296c88fcbb5",
"sig_direction": "62e7be93232d7c6d",
"sig_bo_idx": "6ec163434edaf6e9",
"sig_pb_idx": "ca9b4000a3d8b167",
"sig_lag": "16e524f721f0a3aa",
"sig_depth": "bd78d76d5ac56d18",
"sig_zone_i": "ec18317accf8f34f",
"col_open": "6f693fe747fe72ea",
"col_high": "e5cf5f170c1b74c5",
"col_low": "9a21e97b26b281ee",
"col_close": "c65c480ea3acb4cf",
"col_volume": "deca090b35e34611",
"col_atr": "5c598706876091c4",
"col_macd": "3f38452148fbb5db",
"col_macdsignal": "848e9ea874b125cb",
"col_macdhist": "3e2301728b8c73ae",
"col_ema5": "e66614435995ca8c",
"col_ema13": "5b90f189ecb9dbde",
"col_ema24": "dc98f535eb5b9a14",
"col_ema26": "98ce247c33012910",
"col_ema52": "ce2d49aa246f7d1b",
"col_ema104": "37a07762a9d5bfe1",
"col_ema156": "1040f54fb1f1a28c",
"col_ema208": "2430fa3290e62444",
"col_ema7": "e85e8582b2dd352a",
"col_rsi": "f3d09ac8721406bd",
"col_volume_ratio": "5842f57c75a5c5a8",
"col_bb2633upper": "1e1622aad5a3dc46",
"col_bb2633lower": "58392bfb6e652321",
"col_bb2633middle": "72376e41d5a46393",
"col_bbp30": "1b99ed1cb7132665",
"col_bbp120": "b11c01bd8702106e",
"col_bbp365": "9613ed3ed332a0e2",
"_all_columns": [
"atr",
"bb2633lower",
"bb2633middle",
"bb2633upper",
"bblow120",
"bblow30",
"bblow302",
"bblow365",
"bbmiddle30",
"bbp120",
"bbp2633",
"bbp30",
"bbp302",
"bbp365",
"bbup120",
"bbup30",
"bbup302",
"bbup365",
"close",
"date",
"ema10",
"ema104",
"ema13",
"ema156",
"ema208",
"ema24",
"ema26",
"ema5",
"ema52",
"ema7",
"high",
"low",
"macd",
"macdhist",
"macdsignal",
"open",
"rsi",
"timestamp",
"volume",
"volume_ratio"
]
},
"SOL_15m": {
"n_rows": 200000,
"n_klu": 200000,
"n_klc": 147387,
"n_bi": 9221,
"n_seg": 1443,
"n_bi_zs": 1097,
"n_zs": 153,
"n_bsp": 0,
"klc_high": "9873e17761a5f439",
"klc_low": "c26a95692a503700",
"klc_fx": "e9da3d4ecae9b7d6",
"bi_start": "7ae8f7ca13826214",
"bi_end": "7ae8f7ca13826214",
"bi_sure": "4dc74bb88bebe27b",
"n_zones": 1097,
"zone_zg": "4ac63d81a0c7f518",
"zone_zd": "38d5b7afd33e2e15",
"zone_avail": "532fd21eed5584f7",
"zone_ladder": "6139c6b7503d0c44",
"n_sig": 371,
"sig_entry_idx": "d74faae30a9c9d49",
"sig_direction": "038ed1f04dbe7141",
"sig_bo_idx": "9c2251f45e7b31f6",
"sig_pb_idx": "ac324f507086aec8",
"sig_lag": "b429021aa0a4d4da",
"sig_depth": "654d5249825e9903",
"sig_zone_i": "f070e3f31075cb19",
"col_open": "1c9998e987e16a5f",
"col_high": "80ed4bf62274de03",
"col_low": "09b8b6c12e4e3f06",
"col_close": "223ae3e7e1b7d05a",
"col_volume": "f311c91d123a55b5",
"col_atr": "ed2d754bd3b15f77",
"col_macd": "290ea71faef859e4",
"col_macdsignal": "70008a039281deb8",
"col_macdhist": "16535492810b17e8",
"col_ema5": "c2b75b157fee520a",
"col_ema13": "a38553a7296f8c14",
"col_ema24": "aa12c0c0fc8b839f",
"col_ema26": "2e04f45e2f2067fb",
"col_ema52": "361bd4886eaf510d",
"col_ema104": "beca8cd07bb88835",
"col_ema156": "941a4949be08fcbd",
"col_ema208": "82f3b64ae8e6c97c",
"col_ema7": "466b0319cd174bb2",
"col_rsi": "cd3eb3fa8896a0e6",
"col_volume_ratio": "c4d3a5bf0a821829",
"col_bb2633upper": "3599736cc0c8ed31",
"col_bb2633lower": "4afcdb806d790258",
"col_bb2633middle": "fea10757ba7fdeb6",
"col_bbp30": "64222d075acd186e",
"col_bbp120": "d17f37169b2a5966",
"col_bbp365": "943089e90d9da3ba",
"_all_columns": [
"atr",
"bb2633lower",
"bb2633middle",
"bb2633upper",
"bblow120",
"bblow30",
"bblow302",
"bblow365",
"bbmiddle30",
"bbp120",
"bbp2633",
"bbp30",
"bbp302",
"bbp365",
"bbup120",
"bbup30",
"bbup302",
"bbup365",
"close",
"date",
"ema10",
"ema104",
"ema13",
"ema156",
"ema208",
"ema24",
"ema26",
"ema5",
"ema52",
"ema7",
"high",
"low",
"macd",
"macdhist",
"macdsignal",
"open",
"rsi",
"timestamp",
"volume",
"volume_ratio"
]
},
"XRP_30m": {
"n_rows": 116374,
"n_klu": 116374,
"n_klc": 82461,
"n_bi": 5109,
"n_seg": 784,
"n_bi_zs": 572,
"n_zs": 74,
"n_bsp": 0,
"klc_high": "2f214dccb66c2acb",
"klc_low": "11763813065965dc",
"klc_fx": "16a8abb38cc08276",
"bi_start": "ddb3716c5603fc9f",
"bi_end": "ddb3716c5603fc9f",
"bi_sure": "45d38e2edf89a78e",
"n_zones": 572,
"zone_zg": "6301d2ba0529348a",
"zone_zd": "02798be778a12b3c",
"zone_avail": "f7627b9e187434f8",
"zone_ladder": "79b4eba53b7f16b4",
"n_sig": 185,
"sig_entry_idx": "3fd118bcca9c0318",
"sig_direction": "4e5c8a66c981612e",
"sig_bo_idx": "359749625e049f17",
"sig_pb_idx": "30d938988a47152e",
"sig_lag": "6ecaeb56a6377c02",
"sig_depth": "b472e1cc5387f001",
"sig_zone_i": "beb04af56f37bf08",
"col_open": "d8eb9bfb0cb6375a",
"col_high": "c8305b04a6736acf",
"col_low": "b00124fab8245af3",
"col_close": "69e3cdd2e55f4809",
"col_volume": "839836338744c27c",
"col_atr": "5900706833e9edba",
"col_macd": "88f65443d79c489f",
"col_macdsignal": "f1fd2dcea6c73575",
"col_macdhist": "fce95fc9ccb6b57e",
"col_ema5": "5c6b418babd70b93",
"col_ema13": "4775865a25779b16",
"col_ema24": "f24136710438fa4e",
"col_ema26": "c8a14eab58bc38dc",
"col_ema52": "602f9cd13a369f59",
"col_ema104": "aefabaf6c26d4977",
"col_ema156": "a09b1eb8b3435f96",
"col_ema208": "861be94bc86d83b8",
"col_ema7": "7e605fb6cd8fa03f",
"col_rsi": "ab9617b826fb1cf1",
"col_volume_ratio": "adeab54de59ff72c",
"col_bb2633upper": "a4e7709df8bebb48",
"col_bb2633lower": "e62b8f228e730261",
"col_bb2633middle": "5799755b2c60e9fe",
"col_bbp30": "a404273b177e495e",
"col_bbp120": "46c63a30348ad94e",
"col_bbp365": "f974d0696160d78d",
"_all_columns": [
"atr",
"bb2633lower",
"bb2633middle",
"bb2633upper",
"bblow120",
"bblow30",
"bblow302",
"bblow365",
"bbmiddle30",
"bbp120",
"bbp2633",
"bbp30",
"bbp302",
"bbp365",
"bbup120",
"bbup30",
"bbup302",
"bbup365",
"close",
"date",
"ema10",
"ema104",
"ema13",
"ema156",
"ema208",
"ema24",
"ema26",
"ema5",
"ema52",
"ema7",
"high",
"low",
"macd",
"macdhist",
"macdsignal",
"open",
"rsi",
"timestamp",
"volume",
"volume_ratio"
]
}
}