From f1687dadf340fc57e41e398ea22dc2d29091a318 Mon Sep 17 00:00:00 2001 From: liaozhaorun <1300336796@qq.com> Date: Tue, 3 Mar 2026 23:51:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=A0=E5=AD=90=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=AA=8C=E8=AF=81=E6=94=B9=E8=BF=9B=E3=80=81?= =?UTF-8?q?=E8=82=A1=E7=A5=A8=E6=B1=A0=E8=BF=87=E6=BB=A4=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8F=8A=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=201.=20=E5=9B=A0=E5=AD=90=E5=BC=95=E6=93=8E=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E6=94=B9=E8=BF=9B=20=20=20=20-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20SchemaCache.get=5Fall=5Ffields()=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E8=BF=94=E5=9B=9E=E6=89=80=E6=9C=89=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E5=AD=97=E6=AE=B5=E9=9B=86=E5=90=88=20=20=20=20-=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20match=5Ffields=5Fto=5Ftables()=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8A=9B=E5=87=BA=E6=98=8E=E7=A1=AE=E9=94=99=E8=AF=AF=20=20=20?= =?UTF-8?q?=20-=20=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E5=AD=97=E6=AE=B5=E5=88=97=E8=A1=A8=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=EF=BC=8C=E5=B8=AE=E5=8A=A9=E7=94=A8=E6=88=B7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=8B=BC=E5=86=99=202.=20=E8=82=A1=E7=A5=A8=E6=B1=A0?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E4=BF=AE=E5=A4=8D=20=20=20=20-=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=8C=97=E4=BA=A4=E6=89=80=E8=82=A1=E7=A5=A8=E6=8E=92?= =?UTF-8?q?=E9=99=A4=E9=80=BB=E8=BE=91=EF=BC=9A=E5=B0=86=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=BB=8E=E4=BB=A3=E7=A0=81=E5=89=8D=E7=BC=80?= =?UTF-8?q?=EF=BC=888/4=E5=BC=80=E5=A4=B4=EF=BC=89=E6=94=B9=E4=B8=BA.BJ?= =?UTF-8?q?=E5=90=8E=E7=BC=80=20=20=20=20-=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=B3=A8=E9=87=8A=EF=BC=8C=E6=98=8E=E7=A1=AE=E5=8C=97?= =?UTF-8?q?=E4=BA=A4=E6=89=80=E8=82=A1=E7=A5=A8=E8=AF=86=E5=88=AB=E8=A7=84?= =?UTF-8?q?=E5=88=99=203.=20=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9D=97=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=20=20=20=20-=20=E6=96=B0=E5=A2=9E=20regression.py=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=9B=9E=E5=BD=92=E5=AE=9E=E9=AA=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20=20=20=20-=20=E6=96=B0=E5=A2=9E=20output/=20?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=AD=98=E6=94=BE=E5=AE=9E=E9=AA=8C=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../output/regression/predictions.csv | 1216 +++++++++++++++++ src/experiment/regression.py | 457 +++++++ src/factors/engine/schema_cache.py | 22 +- src/training/components/selectors.py | 6 +- 4 files changed, 1694 insertions(+), 7 deletions(-) create mode 100644 src/experiment/output/regression/predictions.csv create mode 100644 src/experiment/regression.py diff --git a/src/experiment/output/regression/predictions.csv b/src/experiment/output/regression/predictions.csv new file mode 100644 index 0000000..9022dd9 --- /dev/null +++ b/src/experiment/output/regression/predictions.csv @@ -0,0 +1,1216 @@ +date,ts_code,score +2025-01-02,600693.SH,0.23465186383683181 +2025-01-02,000533.SZ,0.23351926793667402 +2025-01-02,600397.SH,0.2307725575990556 +2025-01-02,600857.SH,0.22812296899492704 +2025-01-02,605080.SH,0.22768233693572015 +2025-01-03,002397.SZ,0.23428306605002913 +2025-01-03,002184.SZ,0.23212412694290516 +2025-01-03,002361.SZ,0.22942201335190696 +2025-01-03,000533.SZ,0.22889257004870375 +2025-01-03,002117.SZ,0.22878758694280577 +2025-01-06,002184.SZ,0.23286502489933023 +2025-01-06,603617.SH,0.23140548464908803 +2025-01-06,605033.SH,0.22630120676508222 +2025-01-06,603215.SH,0.22464784019200604 +2025-01-06,002733.SZ,0.2245967379675514 +2025-01-07,002397.SZ,0.2331070736551817 +2025-01-07,605033.SH,0.22919347179555735 +2025-01-07,002733.SZ,0.22798875442239444 +2025-01-07,002184.SZ,0.2278142284944237 +2025-01-07,603320.SH,0.22581606354598469 +2025-01-08,002418.SZ,0.23465186383683181 +2025-01-08,605033.SH,0.22788534548995037 +2025-01-08,000573.SZ,0.22721495800094893 +2025-01-08,002184.SZ,0.22701909643690646 +2025-01-08,002397.SZ,0.22675651284946693 +2025-01-09,002379.SZ,0.23034479658943152 +2025-01-09,301157.SZ,0.22935346274790885 +2025-01-09,000573.SZ,0.22720105276444008 +2025-01-09,002309.SZ,0.2271738151367741 +2025-01-09,605033.SH,0.22608574867701037 +2025-01-10,603015.SH,0.23821467051471265 +2025-01-10,002571.SZ,0.23286502489933023 +2025-01-10,603063.SH,0.23286502489933023 +2025-01-10,301000.SZ,0.2320639141175815 +2025-01-10,002346.SZ,0.23105514112674522 +2025-01-13,301413.SZ,0.23821467051471265 +2025-01-13,603015.SH,0.23791815853596635 +2025-01-13,002484.SZ,0.2331070736551817 +2025-01-13,603777.SH,0.23256851292058392 +2025-01-13,002917.SZ,0.23212412694290516 +2025-01-14,603166.SH,0.2328126333819828 +2025-01-14,301511.SZ,0.23281056167643535 +2025-01-14,603667.SH,0.23254140898168305 +2025-01-14,603777.SH,0.23247629883999324 +2025-01-14,301000.SZ,0.23219043529994302 +2025-01-15,603777.SH,0.23821467051471265 +2025-01-15,600423.SH,0.2321041321367038 +2025-01-15,002164.SZ,0.22942201335190696 +2025-01-15,000795.SZ,0.22930345589250042 +2025-01-15,301413.SZ,0.2291035264826701 +2025-01-16,603777.SH,0.23821467051471265 +2025-01-16,301413.SZ,0.22934041969109334 +2025-01-16,603177.SH,0.22884819476661256 +2025-01-16,002187.SZ,0.22830792612130918 +2025-01-16,600128.SH,0.22746782352317782 +2025-01-17,603511.SH,0.2328126333819828 +2025-01-17,600358.SH,0.23135165310549152 +2025-01-17,002291.SZ,0.2301337264699287 +2025-01-17,600539.SH,0.22882059190551904 +2025-01-17,600714.SH,0.22801695161750588 +2025-01-20,002861.SZ,0.23839906017319196 +2025-01-20,002730.SZ,0.23351926793667402 +2025-01-20,603511.SH,0.23168402064138338 +2025-01-20,301192.SZ,0.22947071392385635 +2025-01-20,003030.SZ,0.22914604048999426 +2025-01-21,002636.SZ,0.23383658399719998 +2025-01-21,002861.SZ,0.23351926793667402 +2025-01-21,003030.SZ,0.23326668434950623 +2025-01-21,603511.SH,0.23278447512892467 +2025-01-21,002767.SZ,0.2319406021153727 +2025-01-22,002861.SZ,0.23135165310549152 +2025-01-22,603928.SH,0.22956138469425125 +2025-01-22,000856.SZ,0.22772192839032163 +2025-01-22,603042.SH,0.22747032711552045 +2025-01-22,000882.SZ,0.22728326616359396 +2025-01-23,000856.SZ,0.23210154870747549 +2025-01-23,603211.SH,0.23026498635986897 +2025-01-23,603928.SH,0.22974311206395945 +2025-01-23,000882.SZ,0.22824824441184072 +2025-01-23,002718.SZ,0.22684462413817974 +2025-01-24,603211.SH,0.23381963672908218 +2025-01-24,000856.SZ,0.23381209783349632 +2025-01-24,605488.SH,0.2285694735238394 +2025-01-24,603286.SH,0.22826100257344784 +2025-01-24,605277.SH,0.22739603953050733 +2025-01-27,301299.SZ,0.23168402064138338 +2025-01-27,301248.SZ,0.23040507817989625 +2025-01-27,002398.SZ,0.2291056431407758 +2025-01-27,301220.SZ,0.22881172065719405 +2025-01-27,605398.SH,0.22642954049534775 +2025-02-05,605398.SH,0.23254140898168305 +2025-02-05,301299.SZ,0.23168402064138338 +2025-02-05,600410.SH,0.2274136940588084 +2025-02-05,002398.SZ,0.22639170875486245 +2025-02-05,002896.SZ,0.22638467807118287 +2025-02-06,000972.SZ,0.23212412694290516 +2025-02-06,603171.SH,0.23069804084724768 +2025-02-06,000818.SZ,0.22931801933449347 +2025-02-06,603039.SH,0.22838982717014694 +2025-02-06,002530.SZ,0.22771020603755476 +2025-02-07,000972.SZ,0.23212412694290516 +2025-02-07,002261.SZ,0.2321041321367038 +2025-02-07,603596.SH,0.23200154958236427 +2025-02-07,000818.SZ,0.23168402064138338 +2025-02-07,603039.SH,0.23036947244821504 +2025-02-10,600355.SH,0.23509386392788792 +2025-02-10,002123.SZ,0.23254140898168305 +2025-02-10,603716.SH,0.23152617440799203 +2025-02-10,000158.SZ,0.23138750866263708 +2025-02-10,603882.SH,0.23135165310549152 +2025-02-11,600193.SH,0.23821467051471265 +2025-02-11,000903.SZ,0.23509386392788792 +2025-02-11,600666.SH,0.23351926793667402 +2025-02-11,002036.SZ,0.2331070736551817 +2025-02-11,002577.SZ,0.23247629883999324 +2025-02-12,603366.SH,0.23200154958236427 +2025-02-12,000785.SZ,0.23200154958236427 +2025-02-12,002036.SZ,0.23175845087964264 +2025-02-12,000034.SZ,0.23023438000165034 +2025-02-12,600186.SH,0.22975789419039674 +2025-02-13,002364.SZ,0.23509386392788792 +2025-02-13,301551.SZ,0.23103133207627882 +2025-02-13,002016.SZ,0.23091895552352654 +2025-02-13,600081.SH,0.23079988869612267 +2025-02-13,002044.SZ,0.22971282046881647 +2025-02-14,301238.SZ,0.2344779743732087 +2025-02-14,601177.SH,0.23140548464908803 +2025-02-14,601116.SH,0.2295434058023592 +2025-02-14,002364.SZ,0.22747032711552045 +2025-02-14,000785.SZ,0.22735004799252562 +2025-02-17,601116.SH,0.23426033962492004 +2025-02-17,301585.SZ,0.22777961780011832 +2025-02-17,605488.SH,0.22722118515153822 +2025-02-17,000785.SZ,0.22719772172503153 +2025-02-17,603086.SH,0.22697672640843097 +2025-02-18,301396.SZ,0.2324583616850724 +2025-02-18,301459.SZ,0.23140548464908803 +2025-02-18,601177.SH,0.23133248332722312 +2025-02-18,301238.SZ,0.22918995624117472 +2025-02-18,603086.SH,0.2266766179603627 +2025-02-19,301459.SZ,0.2309795170966685 +2025-02-19,301396.SZ,0.2280120628381348 +2025-02-19,301238.SZ,0.22704581296639864 +2025-02-19,600678.SH,0.22697672640843097 +2025-02-19,002527.SZ,0.22642954049534775 +2025-02-20,301459.SZ,0.23168402064138338 +2025-02-20,000967.SZ,0.23079988869612267 +2025-02-20,600678.SH,0.23015407855404 +2025-02-20,002058.SZ,0.23014332501690687 +2025-02-20,601100.SH,0.22928060518536417 +2025-02-21,301389.SZ,0.23212412694290516 +2025-02-21,301023.SZ,0.23138750866263708 +2025-02-21,001306.SZ,0.23138750866263708 +2025-02-21,600143.SH,0.23138750866263708 +2025-02-21,301510.SZ,0.23008803839852604 +2025-02-24,002522.SZ,0.2317781258811661 +2025-02-24,002290.SZ,0.2315270074994865 +2025-02-24,301336.SZ,0.23152617440799203 +2025-02-24,301389.SZ,0.2314251596506115 +2025-02-24,001306.SZ,0.23138750866263708 +2025-02-25,301336.SZ,0.23821467051471265 +2025-02-25,301101.SZ,0.2331070736551817 +2025-02-25,002910.SZ,0.23286502489933023 +2025-02-25,301013.SZ,0.23200154958236427 +2025-02-25,002369.SZ,0.23200154958236427 +2025-02-26,002910.SZ,0.23135165310549152 +2025-02-26,301013.SZ,0.2285478050433435 +2025-02-26,301228.SZ,0.2282308465186668 +2025-02-26,002765.SZ,0.2282308465186668 +2025-02-26,000892.SZ,0.22771020603755476 +2025-02-27,301382.SZ,0.23740387263685386 +2025-02-27,301013.SZ,0.2338011516749907 +2025-02-27,301139.SZ,0.23175845087964264 +2025-02-27,600302.SH,0.23020310451566908 +2025-02-27,605100.SH,0.23015407855404 +2025-02-28,301382.SZ,0.2331070736551817 +2025-02-28,002298.SZ,0.2311513351628507 +2025-02-28,301003.SZ,0.2304900640968722 +2025-02-28,002575.SZ,0.22747032711552045 +2025-02-28,301022.SZ,0.22710480829371937 +2025-03-03,301022.SZ,0.22969099767006518 +2025-03-03,003033.SZ,0.22900332035608043 +2025-03-03,605066.SH,0.2265514702209196 +2025-03-03,603663.SH,0.22640654900004045 +2025-03-03,600693.SH,0.22597337054577402 +2025-03-04,605066.SH,0.22948815013851276 +2025-03-04,301608.SZ,0.22923768820961357 +2025-03-04,603496.SH,0.22690536378537035 +2025-03-04,603700.SH,0.2261018037452989 +2025-03-04,003033.SZ,0.22423275654917404 +2025-03-05,301396.SZ,0.23821467051471265 +2025-03-05,605066.SH,0.23018361151658853 +2025-03-05,301022.SZ,0.22876271082462354 +2025-03-05,603700.SH,0.2280120628381348 +2025-03-05,301226.SZ,0.2274230382383857 +2025-03-06,301396.SZ,0.23740387263685386 +2025-03-06,603700.SH,0.23409700953132986 +2025-03-06,002326.SZ,0.23122375727937983 +2025-03-06,003033.SZ,0.22747652458576925 +2025-03-06,601020.SH,0.22648317823347364 +2025-03-07,301368.SZ,0.23531124188676775 +2025-03-07,000409.SZ,0.2328126333819828 +2025-03-07,601177.SH,0.2320639141175815 +2025-03-07,603048.SH,0.23135165310549152 +2025-03-07,000710.SZ,0.23135165310549152 +2025-03-10,002093.SZ,0.23286502489933023 +2025-03-10,301225.SZ,0.23264367819287515 +2025-03-10,000665.SZ,0.23212412694290516 +2025-03-10,002196.SZ,0.23200154958236427 +2025-03-10,301379.SZ,0.23152617440799203 +2025-03-11,002760.SZ,0.23286502489933023 +2025-03-11,000903.SZ,0.23279496726507296 +2025-03-11,301261.SZ,0.23168402064138338 +2025-03-11,002093.SZ,0.23168402064138338 +2025-03-11,301225.SZ,0.23101795963026073 +2025-03-12,002760.SZ,0.23740387263685386 +2025-03-12,301225.SZ,0.23291021466492515 +2025-03-12,605069.SH,0.23200154958236427 +2025-03-12,002921.SZ,0.23168402064138338 +2025-03-12,002093.SZ,0.23135165310549152 +2025-03-13,000665.SZ,0.23179083862498984 +2025-03-13,301225.SZ,0.23175169968586468 +2025-03-13,603267.SH,0.23044135185763517 +2025-03-13,605303.SH,0.22942480238160678 +2025-03-13,002196.SZ,0.22923768820961357 +2025-03-14,301020.SZ,0.2312701954836159 +2025-03-14,301063.SZ,0.2312701954836159 +2025-03-14,301177.SZ,0.22912690314063985 +2025-03-14,600610.SH,0.22762488526122224 +2025-03-14,301032.SZ,0.22713366518768222 +2025-03-17,301063.SZ,0.23220269403887714 +2025-03-17,002278.SZ,0.23014332501690687 +2025-03-17,002905.SZ,0.22925479052635972 +2025-03-17,002574.SZ,0.22798875442239444 +2025-03-17,301600.SZ,0.22765760611532765 +2025-03-18,002574.SZ,0.23252037921260102 +2025-03-18,301063.SZ,0.23226385075902972 +2025-03-18,002905.SZ,0.23134534820495406 +2025-03-18,002086.SZ,0.22771020603755476 +2025-03-18,002342.SZ,0.22721650453597575 +2025-03-19,002724.SZ,0.2317781258811661 +2025-03-19,301365.SZ,0.23044692246556805 +2025-03-19,301053.SZ,0.22922329315593737 +2025-03-19,002278.SZ,0.2283382346904712 +2025-03-19,603900.SH,0.22763882925921475 +2025-03-20,002278.SZ,0.23100273574197352 +2025-03-20,301298.SZ,0.2293297325781042 +2025-03-20,603789.SH,0.22888074299553954 +2025-03-20,002553.SZ,0.22880091690399557 +2025-03-20,603949.SH,0.22833191623069218 +2025-03-21,002789.SZ,0.23014332501690687 +2025-03-21,301298.SZ,0.2299182267103594 +2025-03-21,002903.SZ,0.22942201335190696 +2025-03-21,002406.SZ,0.22928085491954883 +2025-03-21,002553.SZ,0.22868501571745872 +2025-03-24,301158.SZ,0.23300626931754756 +2025-03-24,000601.SZ,0.23075142315821073 +2025-03-24,001202.SZ,0.23065241905147654 +2025-03-24,603028.SH,0.23004683964941816 +2025-03-24,601890.SH,0.22968374232484293 +2025-03-25,603693.SH,0.23079988869612267 +2025-03-25,301137.SZ,0.2280120628381348 +2025-03-25,600320.SH,0.2279465183623682 +2025-03-25,002204.SZ,0.22770301422308023 +2025-03-25,603011.SH,0.2272430280567131 +2025-03-26,002300.SZ,0.23210539545451778 +2025-03-26,301137.SZ,0.2316710281748434 +2025-03-26,002427.SZ,0.22969217189473098 +2025-03-26,002204.SZ,0.2295629444246885 +2025-03-26,301079.SZ,0.2285478050433435 +2025-03-27,002427.SZ,0.22730127771382863 +2025-03-27,002300.SZ,0.22657688533323825 +2025-03-27,600593.SH,0.22645966369026602 +2025-03-27,301256.SZ,0.22575213836493255 +2025-03-27,002165.SZ,0.2238459115208392 +2025-03-28,603579.SH,0.22615783873532116 +2025-03-28,600593.SH,0.22575213836493255 +2025-03-28,301367.SZ,0.2248628458767789 +2025-03-28,001217.SZ,0.22451534069302678 +2025-03-28,600882.SH,0.22230971025240323 +2025-03-31,605588.SH,0.2325161214032365 +2025-03-31,002549.SZ,0.23200154958236427 +2025-03-31,603353.SH,0.23168402064138338 +2025-03-31,301367.SZ,0.23020310451566908 +2025-03-31,600370.SH,0.2293554922531685 +2025-04-01,000953.SZ,0.23351926793667402 +2025-04-01,001333.SZ,0.2321041321367038 +2025-04-01,603353.SH,0.2321041321367038 +2025-04-01,605588.SH,0.2318076201579575 +2025-04-01,002549.SZ,0.23152617440799203 +2025-04-02,301075.SZ,0.23075142315821073 +2025-04-02,301613.SZ,0.2285516827878662 +2025-04-02,001212.SZ,0.22671858154485022 +2025-04-02,002549.SZ,0.22399996590428314 +2025-04-02,301256.SZ,0.22044260206443284 +2025-04-03,301075.SZ,0.23152617440799203 +2025-04-03,301156.SZ,0.23027119294091403 +2025-04-03,000524.SZ,0.230150664016766 +2025-04-03,000722.SZ,0.22944024860026177 +2025-04-03,001212.SZ,0.22882059190551904 +2025-04-07,000722.SZ,0.23312013118423736 +2025-04-07,600095.SH,0.23103133207627882 +2025-04-07,002900.SZ,0.23077718259004149 +2025-04-07,002084.SZ,0.22928060518536417 +2025-04-07,603693.SH,0.22912690314063985 +2025-04-08,002900.SZ,0.2326957544231091 +2025-04-08,603221.SH,0.23168402064138338 +2025-04-08,301156.SZ,0.23164995797255988 +2025-04-08,600540.SH,0.23152617440799203 +2025-04-08,603336.SH,0.23152617440799203 +2025-04-09,603072.SH,0.23135165310549152 +2025-04-09,002094.SZ,0.23135165310549152 +2025-04-09,603336.SH,0.23029945282092193 +2025-04-09,601086.SH,0.22925736321113704 +2025-04-09,600540.SH,0.22797884891446651 +2025-04-10,600540.SH,0.23279496726507296 +2025-04-10,600180.SH,0.23200154958236427 +2025-04-10,002084.SZ,0.23181103416848536 +2025-04-10,002800.SZ,0.22771020603755476 +2025-04-10,601008.SH,0.22771020603755476 +2025-04-11,603688.SH,0.23791815853596635 +2025-04-11,600540.SH,0.23376105198477468 +2025-04-11,002570.SZ,0.23200154958236427 +2025-04-11,603709.SH,0.22830792612130918 +2025-04-11,600180.SH,0.2256355191018716 +2025-04-14,600712.SH,0.23821467051471265 +2025-04-14,000759.SZ,0.23740387263685386 +2025-04-14,301209.SZ,0.2328126333819828 +2025-04-14,000626.SZ,0.23281056167643535 +2025-04-14,600193.SH,0.23125311623972272 +2025-04-15,001234.SZ,0.23821467051471265 +2025-04-15,000510.SZ,0.23821467051471265 +2025-04-15,000016.SZ,0.23509386392788792 +2025-04-15,301558.SZ,0.23509386392788792 +2025-04-15,600249.SH,0.23286502489933023 +2025-04-16,001234.SZ,0.23821467051471265 +2025-04-16,301558.SZ,0.23821467051471265 +2025-04-16,600610.SH,0.23821467051471265 +2025-04-16,002693.SZ,0.23821467051471265 +2025-04-16,600249.SH,0.23279496726507296 +2025-04-17,301558.SZ,0.23501472990802144 +2025-04-17,002693.SZ,0.23465186383683181 +2025-04-17,000510.SZ,0.23286502489933023 +2025-04-17,001234.SZ,0.23286502489933023 +2025-04-17,600249.SH,0.23254140898168305 +2025-04-18,001395.SZ,0.23821467051471265 +2025-04-18,002098.SZ,0.23509386392788792 +2025-04-18,002564.SZ,0.23432795739767806 +2025-04-18,001234.SZ,0.23403939036812543 +2025-04-18,603696.SH,0.23168402064138338 +2025-04-21,603696.SH,0.2347097033223895 +2025-04-21,001395.SZ,0.23168402064138338 +2025-04-21,603955.SH,0.2293230546590861 +2025-04-21,003020.SZ,0.22867288324584878 +2025-04-21,002809.SZ,0.22816069475087503 +2025-04-22,002427.SZ,0.22907272108650267 +2025-04-22,603351.SH,0.22884050556500274 +2025-04-22,603696.SH,0.22814317651125238 +2025-04-22,000965.SZ,0.22334003918178758 +2025-04-22,002809.SZ,0.21988645302641555 +2025-04-23,002809.SZ,0.22902508117935913 +2025-04-23,002194.SZ,0.2288369900106201 +2025-04-23,603351.SH,0.2288369900106201 +2025-04-23,002251.SZ,0.22862099071296893 +2025-04-23,603067.SH,0.22818470798067597 +2025-04-24,002251.SZ,0.2347097033223895 +2025-04-24,002194.SZ,0.23079988869612267 +2025-04-24,002915.SZ,0.23062462650007623 +2025-04-24,002094.SZ,0.22856321405455865 +2025-04-24,600793.SH,0.2284462745654963 +2025-04-25,002251.SZ,0.2334179847014942 +2025-04-25,002537.SZ,0.2331070736551817 +2025-04-25,301210.SZ,0.23168402064138338 +2025-04-25,603086.SH,0.2309302233190329 +2025-04-25,002915.SZ,0.23061795259042359 +2025-04-28,301076.SZ,0.2310510070778023 +2025-04-28,002915.SZ,0.2304801391975776 +2025-04-28,301479.SZ,0.22882059190551904 +2025-04-28,603067.SH,0.22873564425087822 +2025-04-28,301000.SZ,0.22818470798067597 +2025-04-29,600744.SH,0.2331070736551817 +2025-04-29,000565.SZ,0.23013709786631759 +2025-04-29,002915.SZ,0.2299216702802459 +2025-04-29,301000.SZ,0.22771020603755476 +2025-04-29,002229.SZ,0.22747032711552045 +2025-04-30,000565.SZ,0.23136835010971582 +2025-04-30,002229.SZ,0.22853960381814914 +2025-04-30,301387.SZ,0.2272430280567131 +2025-04-30,600281.SH,0.22665797236315063 +2025-04-30,002915.SZ,0.22646482638983054 +2025-05-06,002298.SZ,0.23168402064138338 +2025-05-06,002229.SZ,0.23084960470657062 +2025-05-06,603586.SH,0.22918995624117472 +2025-05-06,301486.SZ,0.22850110743970067 +2025-05-06,301387.SZ,0.2283382346904712 +2025-05-07,000691.SZ,0.23168402064138338 +2025-05-07,301131.SZ,0.23065969291122354 +2025-05-07,301387.SZ,0.2304962912474615 +2025-05-07,603586.SH,0.23031043959348257 +2025-05-07,002527.SZ,0.22912690314063985 +2025-05-08,002471.SZ,0.23821467051471265 +2025-05-08,001316.SZ,0.2322386909311028 +2025-05-08,603030.SH,0.23194217895235644 +2025-05-08,600448.SH,0.23168402064138338 +2025-05-08,302132.SZ,0.23069496233296416 +2025-05-09,001316.SZ,0.23791815853596635 +2025-05-09,002651.SZ,0.2321041321367038 +2025-05-09,002338.SZ,0.23200154958236427 +2025-05-09,603610.SH,0.2315043013934053 +2025-05-09,600448.SH,0.22942201335190696 +2025-05-12,603610.SH,0.2315270074994865 +2025-05-12,002190.SZ,0.23101795963026073 +2025-05-12,301317.SZ,0.22942201335190696 +2025-05-12,605068.SH,0.22931408154573363 +2025-05-12,603657.SH,0.2287303690832853 +2025-05-13,002809.SZ,0.23584482668116133 +2025-05-13,301317.SZ,0.23291021466492515 +2025-05-13,302132.SZ,0.2315270074994865 +2025-05-13,000678.SZ,0.2285934828155125 +2025-05-13,600523.SH,0.22798875442239444 +2025-05-14,002551.SZ,0.23102657162428575 +2025-05-14,002825.SZ,0.2309795170966685 +2025-05-14,603332.SH,0.22931408154573363 +2025-05-14,000576.SZ,0.22819029365203847 +2025-05-14,605055.SH,0.22798875442239444 +2025-05-15,603332.SH,0.2350853977737948 +2025-05-15,600530.SH,0.2328736282468482 +2025-05-15,601022.SH,0.23002430435484691 +2025-05-15,002040.SZ,0.22747032711552045 +2025-05-15,002809.SZ,0.22470022967776684 +2025-05-16,601008.SH,0.23821467051471265 +2025-05-16,301089.SZ,0.23151008397566314 +2025-05-16,601022.SH,0.23101795963026073 +2025-05-16,002427.SZ,0.22884819476661256 +2025-05-16,002909.SZ,0.22818470798067597 +2025-05-19,603630.SH,0.23584482668116133 +2025-05-19,601008.SH,0.23200154958236427 +2025-05-19,002136.SZ,0.23145394834624558 +2025-05-19,000420.SZ,0.2313291872171166 +2025-05-19,301089.SZ,0.22992995515514508 +2025-05-20,301089.SZ,0.23164607432689036 +2025-05-20,002811.SZ,0.2315270074994865 +2025-05-20,002813.SZ,0.230877951884204 +2025-05-20,002735.SZ,0.22974218255401965 +2025-05-20,301459.SZ,0.22763578819183983 +2025-05-21,301260.SZ,0.2324014117721889 +2025-05-21,301089.SZ,0.2317781258811661 +2025-05-21,002811.SZ,0.23175845087964264 +2025-05-21,002286.SZ,0.23153105725000708 +2025-05-21,605136.SH,0.23122375727937983 +2025-05-22,600793.SH,0.23821467051471265 +2025-05-22,000695.SZ,0.23212412694290516 +2025-05-22,002510.SZ,0.23135165310549152 +2025-05-22,600463.SH,0.22821872783650082 +2025-05-22,002431.SZ,0.22821872783650082 +2025-05-23,600793.SH,0.23465186383683181 +2025-05-23,603607.SH,0.22944024860026177 +2025-05-23,603192.SH,0.22925736321113704 +2025-05-23,002431.SZ,0.2285478050433435 +2025-05-23,002727.SZ,0.22788534548995037 +2025-05-26,000695.SZ,0.23212201958070247 +2025-05-26,603192.SH,0.22900624482945742 +2025-05-26,002882.SZ,0.22884819476661256 +2025-05-26,002727.SZ,0.22798875442239444 +2025-05-26,603333.SH,0.22722118515153822 +2025-05-27,603390.SH,0.23099831174427785 +2025-05-27,603192.SH,0.2295834653924801 +2025-05-27,603949.SH,0.2291255013731606 +2025-05-27,002882.SZ,0.22806372789021412 +2025-05-27,301138.SZ,0.22788534548995037 +2025-05-28,605033.SH,0.23079988869612267 +2025-05-28,603577.SH,0.23029945282092193 +2025-05-28,603333.SH,0.22946276305424204 +2025-05-28,002639.SZ,0.22925736321113704 +2025-05-28,002427.SZ,0.22902675790106186 +2025-05-29,002427.SZ,0.23509386392788792 +2025-05-29,603577.SH,0.23166084581163762 +2025-05-29,603681.SH,0.23152466614517062 +2025-05-29,603056.SH,0.23084960470657062 +2025-05-29,603518.SH,0.22920777873241352 +2025-05-30,002639.SZ,0.23040756380872696 +2025-05-30,002250.SZ,0.23027119294091403 +2025-05-30,603686.SH,0.23019711167492385 +2025-05-30,000826.SZ,0.2298136976061417 +2025-05-30,603577.SH,0.22969320824922226 +2025-06-03,603056.SH,0.2344873311412342 +2025-06-03,002537.SZ,0.23286502489933023 +2025-06-03,301225.SZ,0.23168402064138338 +2025-06-03,603518.SH,0.230496638476016 +2025-06-03,002550.SZ,0.22998556001785958 +2025-06-04,002657.SZ,0.23212412694290516 +2025-06-04,002082.SZ,0.23152617440799203 +2025-06-04,002550.SZ,0.23128953391010526 +2025-06-04,603093.SH,0.22911788434427807 +2025-06-04,603123.SH,0.2290000486167789 +2025-06-05,002951.SZ,0.23710736065810756 +2025-06-05,002657.SZ,0.2322386909311028 +2025-06-05,002082.SZ,0.23200154958236427 +2025-06-05,603093.SH,0.23152617440799203 +2025-06-05,301005.SZ,0.23135165310549152 +2025-06-06,002951.SZ,0.23212412694290516 +2025-06-06,603017.SH,0.23200154958236427 +2025-06-06,605099.SH,0.23157672350993444 +2025-06-06,002940.SZ,0.23117331097222668 +2025-06-06,603879.SH,0.2295434058023592 +2025-06-09,000506.SZ,0.23168402064138338 +2025-06-09,301306.SZ,0.23103133207627882 +2025-06-09,603042.SH,0.2288369900106201 +2025-06-09,002298.SZ,0.2283364760111549 +2025-06-09,603226.SH,0.22821872783650082 +2025-06-10,600232.SH,0.23077718259004149 +2025-06-10,002826.SZ,0.22929793094892897 +2025-06-10,603657.SH,0.22882059190551904 +2025-06-10,000533.SZ,0.22821872783650082 +2025-06-10,603032.SH,0.22788534548995037 +2025-06-11,600232.SH,0.23121718290023602 +2025-06-11,301227.SZ,0.2310510070778023 +2025-06-11,301306.SZ,0.23103133207627882 +2025-06-11,600250.SH,0.230297669108569 +2025-06-11,603032.SH,0.22839386728889643 +2025-06-12,600281.SH,0.2318276149641588 +2025-06-12,600232.SH,0.23101795963026073 +2025-06-12,002181.SZ,0.2307795791601214 +2025-06-12,301662.SZ,0.22969182679515807 +2025-06-12,603032.SH,0.22927288186878417 +2025-06-13,600353.SH,0.23584482668116133 +2025-06-13,002181.SZ,0.2335620348062393 +2025-06-13,002615.SZ,0.23110181363766583 +2025-06-13,603226.SH,0.2308704438202707 +2025-06-13,301015.SZ,0.23085466760789683 +2025-06-16,600353.SH,0.2284462745654963 +2025-06-16,301118.SZ,0.2263644678198124 +2025-06-16,002878.SZ,0.22571114544812096 +2025-06-16,003029.SZ,0.22359821406408306 +2025-06-16,002615.SZ,0.2235058850990754 +2025-06-17,002207.SZ,0.23094390937147957 +2025-06-17,600722.SH,0.2306783658457242 +2025-06-17,002878.SZ,0.22900624482945742 +2025-06-17,002828.SZ,0.22763578819183983 +2025-06-17,002490.SZ,0.22713036433749395 +2025-06-18,301118.SZ,0.23152427043880192 +2025-06-18,002490.SZ,0.22821872783650082 +2025-06-18,600722.SH,0.2278142284944237 +2025-06-18,301357.SZ,0.2275984968463902 +2025-06-18,002015.SZ,0.22596977769442245 +2025-06-19,002207.SZ,0.23288590784637628 +2025-06-19,600722.SH,0.2320494301387356 +2025-06-19,301357.SZ,0.2314251596506115 +2025-06-19,301176.SZ,0.23122375727937983 +2025-06-19,002828.SZ,0.2280120628381348 +2025-06-20,600110.SH,0.23247629883999324 +2025-06-20,603151.SH,0.23157672350993444 +2025-06-20,002579.SZ,0.22950949239212068 +2025-06-20,301292.SZ,0.22798875442239444 +2025-06-20,301150.SZ,0.22798875442239444 +2025-06-23,600110.SH,0.2331070736551817 +2025-06-23,301176.SZ,0.2317781258811661 +2025-06-23,002579.SZ,0.23175845087964264 +2025-06-23,600113.SH,0.23081733542982477 +2025-06-23,301421.SZ,0.22856321405455865 +2025-06-24,601606.SH,0.2340361954999128 +2025-06-24,002125.SZ,0.2317781258811661 +2025-06-24,301176.SZ,0.2315043013934053 +2025-06-24,600110.SH,0.231332181523828 +2025-06-24,002579.SZ,0.2312234100508253 +2025-06-25,301292.SZ,0.23307089103645062 +2025-06-25,603948.SH,0.23168402064138338 +2025-06-25,603155.SH,0.22942201335190696 +2025-06-25,603022.SH,0.22884819476661256 +2025-06-25,002125.SZ,0.2278142284944237 +2025-06-26,603022.SH,0.23740387263685386 +2025-06-26,603155.SH,0.23279496726507296 +2025-06-26,603948.SH,0.2324014117721889 +2025-06-26,002670.SZ,0.2321041321367038 +2025-06-26,002263.SZ,0.23192250775540177 +2025-06-27,301213.SZ,0.23254140898168305 +2025-06-27,001236.SZ,0.2322386909311028 +2025-06-27,003029.SZ,0.23200154958236427 +2025-06-27,002265.SZ,0.23200154958236427 +2025-06-27,002263.SZ,0.23168402064138338 +2025-06-30,301024.SZ,0.23821467051471265 +2025-06-30,001236.SZ,0.23821467051471265 +2025-06-30,301080.SZ,0.23219043529994302 +2025-06-30,603228.SH,0.2321041321367038 +2025-06-30,301125.SZ,0.23152617440799203 +2025-07-01,301024.SZ,0.23089192709154208 +2025-07-01,301319.SZ,0.2302908408268969 +2025-07-01,600643.SH,0.22942201335190696 +2025-07-01,601718.SH,0.22931801933449347 +2025-07-01,603228.SH,0.2291904395718046 +2025-07-02,600319.SH,0.23079988869612267 +2025-07-02,000737.SZ,0.23069804084724768 +2025-07-02,603601.SH,0.22956138469425125 +2025-07-02,601218.SH,0.2276390890420281 +2025-07-02,000026.SZ,0.22763578819183983 +2025-07-03,000737.SZ,0.22865089731328533 +2025-07-03,601218.SH,0.22820736160423866 +2025-07-03,002658.SZ,0.22684462413817974 +2025-07-03,603811.SH,0.22646516850782633 +2025-07-03,002549.SZ,0.2254747353730209 +2025-07-04,002623.SZ,0.23145394834624558 +2025-07-04,603601.SH,0.23076397401718451 +2025-07-04,600744.SH,0.23042421635948687 +2025-07-04,301176.SZ,0.22880091690399557 +2025-07-04,601003.SH,0.22478564767657444 +2025-07-07,301388.SZ,0.23158552727423679 +2025-07-07,605500.SH,0.23065241905147654 +2025-07-07,301234.SZ,0.23014332501690687 +2025-07-07,600744.SH,0.22949248509658796 +2025-07-07,600396.SH,0.22919347179555735 +2025-07-08,301176.SZ,0.23286502489933023 +2025-07-08,002623.SZ,0.2315270074994865 +2025-07-08,301388.SZ,0.2313450713937874 +2025-07-08,605162.SH,0.23084960470657062 +2025-07-08,603676.SH,0.22798875442239444 +2025-07-09,301217.SZ,0.23192250775540177 +2025-07-09,605162.SH,0.2312234100508253 +2025-07-09,603676.SH,0.2310510070778023 +2025-07-09,605500.SH,0.2309302233190329 +2025-07-09,000601.SZ,0.23061795259042359 +2025-07-10,600962.SH,0.23247629883999324 +2025-07-10,000655.SZ,0.23137385253543152 +2025-07-10,002951.SZ,0.23135165310549152 +2025-07-10,605162.SH,0.23116669978847704 +2025-07-10,000514.SZ,0.23099831174427785 +2025-07-11,002218.SZ,0.23476650917148925 +2025-07-11,603778.SH,0.23046436919927016 +2025-07-11,000655.SZ,0.2302908408268969 +2025-07-11,000514.SZ,0.23018361151658853 +2025-07-11,600962.SH,0.22942201335190696 +2025-07-14,301261.SZ,0.2328126333819828 +2025-07-14,600606.SH,0.23044692246556805 +2025-07-14,002218.SZ,0.23040129346770963 +2025-07-14,603778.SH,0.23018361151658853 +2025-07-14,605122.SH,0.2296972439455088 +2025-07-15,301261.SZ,0.23122966242924567 +2025-07-15,605259.SH,0.23103133207627882 +2025-07-15,600606.SH,0.23075447716978992 +2025-07-15,301183.SZ,0.22763578819183983 +2025-07-15,002645.SZ,0.22754974460076738 +2025-07-16,003037.SZ,0.22904325888031205 +2025-07-16,600604.SH,0.22848776827562828 +2025-07-16,002209.SZ,0.2280120628381348 +2025-07-16,002645.SZ,0.22763578819183983 +2025-07-16,605259.SH,0.2267296401021717 +2025-07-17,002394.SZ,0.2317781258811661 +2025-07-17,603119.SH,0.23162599577665546 +2025-07-17,301196.SZ,0.23138750866263708 +2025-07-17,002645.SZ,0.23137211961760787 +2025-07-17,600604.SH,0.2297726179694213 +2025-07-18,000880.SZ,0.23135165310549152 +2025-07-18,600620.SH,0.23057060273037647 +2025-07-18,605305.SH,0.23055588119829773 +2025-07-18,002394.SZ,0.22898233717986374 +2025-07-18,603001.SH,0.22864559486517774 +2025-07-21,002393.SZ,0.2310510070778023 +2025-07-21,600829.SH,0.23069804084724768 +2025-07-21,002370.SZ,0.2303060336584564 +2025-07-21,600230.SH,0.22957891485509258 +2025-07-21,002394.SZ,0.22900672238990766 +2025-07-22,001359.SZ,0.23531124188676775 +2025-07-22,002542.SZ,0.2331070736551817 +2025-07-22,002017.SZ,0.23279496726507296 +2025-07-22,600230.SH,0.23094329597335217 +2025-07-22,301201.SZ,0.2292481692741196 +2025-07-23,301038.SZ,0.23584482668116133 +2025-07-23,601003.SH,0.23254140898168305 +2025-07-23,603367.SH,0.23233778648544184 +2025-07-23,002542.SZ,0.23192250775540177 +2025-07-23,603616.SH,0.23170503760361796 +2025-07-24,301038.SZ,0.23821467051471265 +2025-07-24,603616.SH,0.23279496726507296 +2025-07-24,301626.SZ,0.23168402064138338 +2025-07-24,603367.SH,0.23164607432689036 +2025-07-24,002097.SZ,0.23069804084724768 +2025-07-25,603916.SH,0.2310510070778023 +2025-07-25,002497.SZ,0.23061795259042359 +2025-07-25,601669.SH,0.2305725701305064 +2025-07-25,000679.SZ,0.22898332554987907 +2025-07-25,301626.SZ,0.2285694735238394 +2025-07-28,003023.SZ,0.23084960470657062 +2025-07-28,603716.SH,0.22880091690399557 +2025-07-28,603616.SH,0.2277741623788108 +2025-07-28,603226.SH,0.22680469787887864 +2025-07-28,600749.SH,0.2267107518672826 +2025-07-29,603127.SH,0.22673858911040232 +2025-07-29,301217.SZ,0.22638929585645912 +2025-07-29,600288.SH,0.2250139760634885 +2025-07-29,301285.SZ,0.22366910873705997 +2025-07-29,002821.SZ,0.2200774053515348 +2025-07-30,301235.SZ,0.23135165310549152 +2025-07-30,002644.SZ,0.23103133207627882 +2025-07-30,000558.SZ,0.22920184408455282 +2025-07-30,002564.SZ,0.22727641729074566 +2025-07-30,001216.SZ,0.22621656930246684 +2025-07-31,600579.SH,0.22881172065719405 +2025-07-31,000558.SZ,0.22873564425087822 +2025-07-31,001318.SZ,0.22655450064977609 +2025-07-31,301489.SZ,0.2262470311282916 +2025-07-31,301235.SZ,0.2259736898823654 +2025-08-01,000558.SZ,0.23037742584135248 +2025-08-01,002317.SZ,0.22900332035608043 +2025-08-01,001331.SZ,0.22882059190551904 +2025-08-01,301489.SZ,0.22760629621501938 +2025-08-01,301052.SZ,0.22655151617074357 +2025-08-04,601089.SH,0.23212412694290516 +2025-08-04,001331.SZ,0.22833191623069218 +2025-08-04,603063.SH,0.2282308465186668 +2025-08-04,002775.SZ,0.227887009317045 +2025-08-04,002287.SZ,0.22769828453802388 +2025-08-05,601606.SH,0.23200154958236427 +2025-08-05,002775.SZ,0.23021987306654493 +2025-08-05,301357.SZ,0.22830792612130918 +2025-08-05,603059.SH,0.22826816582718484 +2025-08-05,603683.SH,0.2282308465186668 +2025-08-06,603059.SH,0.22900624482945742 +2025-08-06,002148.SZ,0.22854676741775823 +2025-08-06,301076.SZ,0.22818470798067597 +2025-08-06,002775.SZ,0.22770301422308023 +2025-08-06,603811.SH,0.22722118515153822 +2025-08-07,600203.SH,0.2329981845029876 +2025-08-07,301161.SZ,0.23105514112674522 +2025-08-07,301117.SZ,0.2308642166696814 +2025-08-07,002313.SZ,0.2306053645238593 +2025-08-07,002896.SZ,0.22856321405455865 +2025-08-08,002313.SZ,0.23191392000014913 +2025-08-08,603811.SH,0.22863651593639636 +2025-08-08,605598.SH,0.2285478050433435 +2025-08-08,002915.SZ,0.22818470798067597 +2025-08-08,605169.SH,0.22798875442239444 +2025-08-11,600619.SH,0.23403144541893176 +2025-08-11,301397.SZ,0.23183108274584738 +2025-08-11,301076.SZ,0.23152617440799203 +2025-08-11,002313.SZ,0.23149745458680862 +2025-08-11,605169.SH,0.2304962912474615 +2025-08-12,600619.SH,0.23168402064138338 +2025-08-12,605378.SH,0.23104167128859765 +2025-08-12,301502.SZ,0.2308117212346246 +2025-08-12,301232.SZ,0.22982368015441096 +2025-08-12,002008.SZ,0.22771020603755476 +2025-08-13,002008.SZ,0.23131806194428878 +2025-08-13,301502.SZ,0.2307438579473121 +2025-08-13,000070.SZ,0.23014332501690687 +2025-08-13,601137.SH,0.23013709786631759 +2025-08-13,301486.SZ,0.22829000873235972 +2025-08-14,601137.SH,0.2314037475914237 +2025-08-14,002820.SZ,0.23079988869612267 +2025-08-14,600737.SH,0.23061795259042359 +2025-08-14,002941.SZ,0.2288707603510977 +2025-08-14,002052.SZ,0.22821872783650082 +2025-08-15,002052.SZ,0.23200154958236427 +2025-08-15,603256.SH,0.23168402064138338 +2025-08-15,601137.SH,0.2311868011967853 +2025-08-15,603158.SH,0.23020310451566908 +2025-08-15,600737.SH,0.22921909783696878 +2025-08-18,603256.SH,0.23286502489933023 +2025-08-18,002939.SZ,0.23175845087964264 +2025-08-18,600658.SH,0.23166084581163762 +2025-08-18,002871.SZ,0.23111174017910396 +2025-08-18,603158.SH,0.23084960470657062 +2025-08-19,301226.SZ,0.23108701667436576 +2025-08-19,002871.SZ,0.23099831174427785 +2025-08-19,002939.SZ,0.2309302233190329 +2025-08-19,002158.SZ,0.2302637965727327 +2025-08-19,601609.SH,0.22985064290111068 +2025-08-20,603222.SH,0.2350853977737948 +2025-08-20,603219.SH,0.2311713042082473 +2025-08-20,002158.SZ,0.23023160064061973 +2025-08-20,603626.SH,0.22931801933449347 +2025-08-20,003020.SZ,0.22907272108650267 +2025-08-21,603626.SH,0.2328126333819828 +2025-08-21,000799.SZ,0.23069804084724768 +2025-08-21,603601.SH,0.22950949239212068 +2025-08-21,002158.SZ,0.2294564927132247 +2025-08-21,301002.SZ,0.22942201335190696 +2025-08-22,605028.SH,0.23135165310549152 +2025-08-22,000063.SZ,0.22984348392701265 +2025-08-22,605303.SH,0.22942201335190696 +2025-08-22,002190.SZ,0.22747032711552045 +2025-08-22,603101.SH,0.22718203143304969 +2025-08-25,301617.SZ,0.23044692246556805 +2025-08-25,000799.SZ,0.22926149018401154 +2025-08-25,002217.SZ,0.22841052556535285 +2025-08-25,000753.SZ,0.22826816582718484 +2025-08-25,301002.SZ,0.22821872783650082 +2025-08-26,600246.SH,0.2321041321367038 +2025-08-26,301617.SZ,0.2313223113353718 +2025-08-26,301002.SZ,0.23069804084724768 +2025-08-26,002212.SZ,0.23002430435484691 +2025-08-26,002953.SZ,0.22984545132714257 +2025-08-27,002378.SZ,0.2328960314616916 +2025-08-27,600728.SH,0.22993794847360816 +2025-08-27,301617.SZ,0.22992059059892117 +2025-08-27,600284.SH,0.22884050556500274 +2025-08-27,605255.SH,0.22721495800094893 +2025-08-28,002916.SZ,0.2318276149641588 +2025-08-28,301377.SZ,0.23135165310549152 +2025-08-28,002232.SZ,0.2309202647247353 +2025-08-28,301396.SZ,0.22974311206395945 +2025-08-28,603382.SH,0.22953353165800197 +2025-08-29,301326.SZ,0.23200154958236427 +2025-08-29,002851.SZ,0.23105514112674522 +2025-08-29,002053.SZ,0.23080342197645543 +2025-08-29,600118.SH,0.23079988869612267 +2025-08-29,002256.SZ,0.22967431926670714 +2025-09-01,002195.SZ,0.22886693877070635 +2025-09-01,002115.SZ,0.2288369900106201 +2025-09-01,301389.SZ,0.2285694735238394 +2025-09-01,002053.SZ,0.22856321405455865 +2025-09-01,002256.SZ,0.22798875442239444 +2025-09-02,601929.SH,0.23432795739767806 +2025-09-02,002256.SZ,0.23018361151658853 +2025-09-02,301488.SZ,0.22931714451153992 +2025-09-02,000831.SZ,0.22774546204501875 +2025-09-02,600021.SH,0.2262470311282916 +2025-09-03,002975.SZ,0.23152617440799203 +2025-09-03,002210.SZ,0.22857419292034112 +2025-09-03,603032.SH,0.22671858154485022 +2025-09-03,301489.SZ,0.22630120676508222 +2025-09-03,603659.SH,0.22574883751474428 +2025-09-04,603839.SH,0.22797884891446651 +2025-09-04,002269.SZ,0.22771020603755476 +2025-09-04,601069.SH,0.2276390890420281 +2025-09-04,603099.SH,0.22673521328785007 +2025-09-04,002975.SZ,0.22407032401677884 +2025-09-05,600697.SH,0.22758883351120401 +2025-09-05,601069.SH,0.22688723308537798 +2025-09-05,002150.SZ,0.22671858154485022 +2025-09-05,002846.SZ,0.22576272200919495 +2025-09-05,600376.SH,0.225460379649476 +2025-09-08,301538.SZ,0.2322386909311028 +2025-09-08,600376.SH,0.23200154958236427 +2025-09-08,603709.SH,0.23170503760361796 +2025-09-08,002150.SZ,0.2306783658457242 +2025-09-08,603179.SH,0.22898297292859465 +2025-09-09,600376.SH,0.2331070736551817 +2025-09-09,002067.SZ,0.2282308465186668 +2025-09-09,002709.SZ,0.22803329301145953 +2025-09-09,002759.SZ,0.22778261637702965 +2025-09-09,002407.SZ,0.22657292237815316 +2025-09-10,600376.SH,0.23423361305334178 +2025-09-10,603101.SH,0.2327240200943366 +2025-09-10,600977.SH,0.23021611740575312 +2025-09-10,301016.SZ,0.2291604854896366 +2025-09-10,600173.SH,0.22798875442239444 +2025-09-11,301200.SZ,0.23791815853596635 +2025-09-11,603516.SH,0.2320639141175815 +2025-09-11,002384.SZ,0.23168402064138338 +2025-09-11,603978.SH,0.23168402064138338 +2025-09-11,301225.SZ,0.23152617440799203 +2025-09-12,301200.SZ,0.23501472990802144 +2025-09-12,000757.SZ,0.22883104010865973 +2025-09-12,603359.SH,0.22880091690399557 +2025-09-12,603301.SH,0.2286803576324974 +2025-09-12,603516.SH,0.22797884891446651 +2025-09-15,301200.SZ,0.2331070736551817 +2025-09-15,601116.SH,0.22974311206395945 +2025-09-15,002335.SZ,0.22928060518536417 +2025-09-15,000718.SZ,0.22770301422308023 +2025-09-15,600846.SH,0.2263906525845519 +2025-09-16,600629.SH,0.23821467051471265 +2025-09-16,603019.SH,0.23554831470241502 +2025-09-16,000981.SZ,0.23432795739767806 +2025-09-16,603228.SH,0.23247629883999324 +2025-09-16,603083.SH,0.2324014117721889 +2025-09-17,600629.SH,0.23740387263685386 +2025-09-17,301600.SZ,0.2324014117721889 +2025-09-17,603959.SH,0.23210388285177125 +2025-09-17,600162.SH,0.2311313737875676 +2025-09-17,603019.SH,0.2291255013731606 +2025-09-18,603959.SH,0.23042421635948687 +2025-09-18,002067.SZ,0.22880091690399557 +2025-09-18,301008.SZ,0.22797884891446651 +2025-09-18,600170.SH,0.22762488526122224 +2025-09-18,600651.SH,0.22747032711552045 +2025-09-19,603297.SH,0.23168402064138338 +2025-09-19,603618.SH,0.23168402064138338 +2025-09-19,301008.SZ,0.23120715081085333 +2025-09-19,002549.SZ,0.22898332554987907 +2025-09-19,301421.SZ,0.22889525102449282 +2025-09-22,301008.SZ,0.23821467051471265 +2025-09-22,002549.SZ,0.2331070736551817 +2025-09-22,603618.SH,0.23286502489933023 +2025-09-22,600635.SH,0.23061795259042359 +2025-09-22,301421.SZ,0.23025239829330468 +2025-09-23,301421.SZ,0.23148159597315374 +2025-09-23,002059.SZ,0.2312575536627041 +2025-09-23,301013.SZ,0.23117404126893187 +2025-09-23,603618.SH,0.2305773875742705 +2025-09-23,603686.SH,0.22722118515153822 +2025-09-24,301052.SZ,0.2327240200943366 +2025-09-24,603322.SH,0.230496638476016 +2025-09-24,002246.SZ,0.2285154773606544 +2025-09-24,002513.SZ,0.22713036433749395 +2025-09-24,002453.SZ,0.22709338760350226 +2025-09-25,301209.SZ,0.2321041321367038 +2025-09-25,002029.SZ,0.23044692246556805 +2025-09-25,600167.SH,0.22825742705483212 +2025-09-25,002298.SZ,0.22748275173635854 +2025-09-25,605358.SH,0.2271536727532343 +2025-09-26,002246.SZ,0.22930345589250042 +2025-09-26,603090.SH,0.22882059190551904 +2025-09-26,002513.SZ,0.2267296401021717 +2025-09-26,600167.SH,0.22641531630328687 +2025-09-26,301209.SZ,0.22595337573957266 +2025-09-29,002513.SZ,0.234041128138347 +2025-09-29,301358.SZ,0.22967416067824822 +2025-09-29,301209.SZ,0.22792221585775446 +2025-09-29,601218.SH,0.22410626638670203 +2025-09-29,603156.SH,0.22388823630410423 +2025-09-30,301358.SZ,0.23279496726507296 +2025-09-30,002295.SZ,0.22826816582718484 +2025-09-30,603026.SH,0.2282308465186668 +2025-09-30,002513.SZ,0.22814317651125238 +2025-09-30,001301.SZ,0.22630120676508222 +2025-10-09,600362.SH,0.23351926793667402 +2025-10-09,000630.SZ,0.23286502489933023 +2025-10-09,301292.SZ,0.23286502489933023 +2025-10-09,002759.SZ,0.2320639141175815 +2025-10-09,600711.SH,0.23200154958236427 +2025-10-10,301292.SZ,0.2318076201579575 +2025-10-10,600021.SH,0.23135165310549152 +2025-10-10,600711.SH,0.22989596042397956 +2025-10-10,002208.SZ,0.22944628399676648 +2025-10-10,601212.SH,0.22722118515153822 +2025-10-13,301357.SZ,0.2324014117721889 +2025-10-13,301292.SZ,0.22771020603755476 +2025-10-13,600635.SH,0.22760629621501938 +2025-10-13,301518.SZ,0.22734284649450032 +2025-10-13,603026.SH,0.22714216866836204 +2025-10-14,301357.SZ,0.2328126333819828 +2025-10-14,603011.SH,0.23200154958236427 +2025-10-14,600234.SH,0.22853960381814914 +2025-10-14,600490.SH,0.22818223335063675 +2025-10-14,000969.SZ,0.2280051280539736 +2025-10-15,301120.SZ,0.2313450713937874 +2025-10-15,601611.SH,0.23084960470657062 +2025-10-15,600268.SH,0.23026498635986897 +2025-10-15,600234.SH,0.229860636494973 +2025-10-15,002942.SZ,0.22846910777882823 +2025-10-16,600234.SH,0.23381963672908218 +2025-10-16,605188.SH,0.2322386909311028 +2025-10-16,002370.SZ,0.23170503760361796 +2025-10-16,002942.SZ,0.23103133207627882 +2025-10-16,002171.SZ,0.23041601155244695 +2025-10-17,002370.SZ,0.2322386909311028 +2025-10-17,301323.SZ,0.2320992384209717 +2025-10-17,603938.SH,0.23137385253543152 +2025-10-17,000626.SZ,0.22873773892853494 +2025-10-17,002571.SZ,0.2272266331068819 +2025-10-20,600617.SH,0.23093160374902197 +2025-10-20,000626.SZ,0.23018361151658853 +2025-10-20,603938.SH,0.22867288324584878 +2025-10-20,301075.SZ,0.2284053678211673 +2025-10-20,301617.SZ,0.22818470798067597 +2025-10-21,002083.SZ,0.23300626931754756 +2025-10-21,301468.SZ,0.23120989739030362 +2025-10-21,603938.SH,0.23091895552352654 +2025-10-21,301365.SZ,0.23020310451566908 +2025-10-21,301158.SZ,0.22898297292859465 +2025-10-22,603933.SH,0.23200154958236427 +2025-10-22,301468.SZ,0.23117331097222668 +2025-10-22,301158.SZ,0.23101795963026073 +2025-10-22,600681.SH,0.2303385262484142 +2025-10-22,600748.SH,0.22956762436836656 +2025-10-23,002490.SZ,0.23288590784637628 +2025-10-23,301468.SZ,0.23079988869612267 +2025-10-23,600681.SH,0.2304962912474615 +2025-10-23,000609.SZ,0.2282308465186668 +2025-10-23,301158.SZ,0.2280120628381348 +2025-10-24,301231.SZ,0.2321614689722936 +2025-10-24,002278.SZ,0.22821872783650082 +2025-10-24,301377.SZ,0.22684462413817974 +2025-10-24,000852.SZ,0.22614882933476102 +2025-10-24,002748.SZ,0.22613505075740306 +2025-10-27,002278.SZ,0.23409753818125476 +2025-10-27,601231.SH,0.2328126333819828 +2025-10-27,001309.SZ,0.23194217895235644 +2025-10-27,002512.SZ,0.22821872783650082 +2025-10-27,001231.SZ,0.2280120628381348 +2025-10-28,301097.SZ,0.23235062003383078 +2025-10-28,000599.SZ,0.22713366518768222 +2025-10-28,000592.SZ,0.22707595437782194 +2025-10-28,603378.SH,0.22694432195448075 +2025-10-28,002337.SZ,0.2261018037452989 +2025-10-29,301097.SZ,0.23002430435484691 +2025-10-29,000593.SZ,0.2285694735238394 +2025-10-29,000555.SZ,0.22856321405455865 +2025-10-29,603378.SH,0.22759235356251123 +2025-10-29,301205.SZ,0.22734284649450032 +2025-10-30,603378.SH,0.2316710281748434 +2025-10-30,603122.SH,0.22982368015441096 +2025-10-30,603067.SH,0.22950949239212068 +2025-10-30,002545.SZ,0.2291255013731606 +2025-10-30,301333.SZ,0.22825129306459713 +2025-10-31,002759.SZ,0.23740387263685386 +2025-10-31,603122.SH,0.23126832608805042 +2025-10-31,600302.SH,0.2310510070778023 +2025-10-31,603686.SH,0.22734284649450032 +2025-10-31,002975.SZ,0.2265576843200323 +2025-11-03,603122.SH,0.23204897857760898 +2025-11-03,600302.SH,0.2315270074994865 +2025-11-03,002163.SZ,0.23135165310549152 +2025-11-03,002759.SZ,0.22830792612130918 +2025-11-03,301333.SZ,0.2280120628381348 +2025-11-04,301333.SZ,0.22949900672054888 +2025-11-04,603686.SH,0.22931801933449347 +2025-11-04,001203.SZ,0.22865453722530327 +2025-11-04,000572.SZ,0.22850110743970067 +2025-11-04,002181.SZ,0.2283035423863406 +2025-11-05,603021.SH,0.2282308465186668 +2025-11-05,002181.SZ,0.22759453398436374 +2025-11-05,002255.SZ,0.22722118515153822 +2025-11-05,601929.SH,0.22713366518768222 +2025-11-05,000572.SZ,0.22669359303187595 +2025-11-06,002431.SZ,0.23224489700293668 +2025-11-06,600550.SH,0.22883104010865973 +2025-11-06,000993.SZ,0.2287686875363102 +2025-11-06,002591.SZ,0.22752314508562826 +2025-11-06,002478.SZ,0.22727641729074566 +2025-11-07,600550.SH,0.23042421635948687 +2025-11-07,001209.SZ,0.22925736321113704 +2025-11-07,000973.SZ,0.22918995624117472 +2025-11-07,000993.SZ,0.2288369900106201 +2025-11-07,603052.SH,0.22839386728889643 +2025-11-10,600939.SH,0.2324014117721889 +2025-11-10,002451.SZ,0.2317781258811661 +2025-11-10,603663.SH,0.2310510070778023 +2025-11-10,600550.SH,0.231044624327323 +2025-11-10,002136.SZ,0.23063865483182971 +2025-11-11,600939.SH,0.2322386909311028 +2025-11-11,600078.SH,0.23200154958236427 +2025-11-11,002136.SZ,0.23175169968586468 +2025-11-11,002451.SZ,0.22962599245561197 +2025-11-11,002478.SZ,0.22949900672054888 +2025-11-12,001309.SZ,0.22911788434427807 +2025-11-12,600429.SH,0.22907272108650267 +2025-11-12,002326.SZ,0.22889525102449282 +2025-11-12,002083.SZ,0.22783730931259244 +2025-11-12,000803.SZ,0.22771020603755476 +2025-11-13,002309.SZ,0.23320907568847302 +2025-11-13,301069.SZ,0.23217978686124688 +2025-11-13,600113.SH,0.23200154958236427 +2025-11-13,600429.SH,0.23122375727937983 +2025-11-13,301518.SZ,0.23069804084724768 +2025-11-14,600113.SH,0.23281056167643535 +2025-11-14,301201.SZ,0.2324014117721889 +2025-11-14,600429.SH,0.23079988869612267 +2025-11-14,002780.SZ,0.22994634207387732 +2025-11-14,301017.SZ,0.22925736321113704 +2025-11-17,301150.SZ,0.23168402064138338 +2025-11-17,000695.SZ,0.23126555669364401 +2025-11-17,601566.SH,0.23122375727937983 +2025-11-17,301201.SZ,0.22956999236455042 +2025-11-17,002682.SZ,0.2282780122084303 +2025-11-18,000547.SZ,0.23212412694290516 +2025-11-18,301201.SZ,0.2315270074994865 +2025-11-18,000798.SZ,0.23014332501690687 +2025-11-18,600340.SH,0.22900624482945742 +2025-11-18,001216.SZ,0.22837060349584962 +2025-11-19,000547.SZ,0.23135165310549152 +2025-11-19,000798.SZ,0.2309795170966685 +2025-11-19,600340.SH,0.2308704438202707 +2025-11-19,301228.SZ,0.2295834653924801 +2025-11-19,605255.SH,0.22928060518536417 +2025-11-20,301256.SZ,0.23320907568847302 +2025-11-20,002474.SZ,0.2322386909311028 +2025-11-20,000798.SZ,0.23018361151658853 +2025-11-20,001216.SZ,0.22735004799252562 +2025-11-20,002877.SZ,0.22639170875486245 +2025-11-21,301171.SZ,0.23286502489933023 +2025-11-21,603216.SH,0.23135165310549152 +2025-11-21,000859.SZ,0.23079988869612267 +2025-11-21,000017.SZ,0.22789894400486893 +2025-11-21,603829.SH,0.22625065537505776 +2025-11-24,603216.SH,0.23212412694290516 +2025-11-24,000859.SZ,0.2310510070778023 +2025-11-24,301256.SZ,0.23084960470657062 +2025-11-24,000798.SZ,0.22814317651125238 +2025-11-24,301171.SZ,0.2249891959935712 +2025-11-25,301171.SZ,0.22949841079799682 +2025-11-25,600734.SH,0.22862147928629398 +2025-11-25,000859.SZ,0.22798875442239444 +2025-11-25,000070.SZ,0.22655450064977609 +2025-11-25,603216.SH,0.2259736898823654 +2025-11-26,000892.SZ,0.2322386909311028 +2025-11-26,600343.SH,0.23168402064138338 +2025-11-26,301159.SZ,0.23029945282092193 +2025-11-26,600734.SH,0.22883104010865973 +2025-11-26,301083.SZ,0.2282308465186668 +2025-11-27,301111.SZ,0.23247629883999324 +2025-11-27,002264.SZ,0.23168402064138338 +2025-11-27,000952.SZ,0.22931801933449347 +2025-11-27,600343.SH,0.22866411025362068 +2025-11-27,600828.SH,0.22830792612130918 +2025-11-28,003018.SZ,0.23821467051471265 +2025-11-28,603778.SH,0.23821467051471265 +2025-11-28,002702.SZ,0.23821467051471265 +2025-11-28,000078.SZ,0.23554831470241502 +2025-11-28,002792.SZ,0.23432795739767806 +2025-12-01,002702.SZ,0.23821467051471265 +2025-12-01,002632.SZ,0.23465186383683181 +2025-12-01,000078.SZ,0.23465186383683181 +2025-12-01,000510.SZ,0.23428306605002913 +2025-12-01,603933.SH,0.2331070736551817 +2025-12-02,603933.SH,0.2331070736551817 +2025-12-02,002632.SZ,0.23212412694290516 +2025-12-02,000078.SZ,0.23200154958236427 +2025-12-02,600981.SH,0.2297442183125055 +2025-12-02,600828.SH,0.22973139420394875 +2025-12-03,002519.SZ,0.23135165310549152 +2025-12-03,600151.SH,0.23044692246556805 +2025-12-03,301148.SZ,0.23039163584718722 +2025-12-03,301043.SZ,0.23029711116791424 +2025-12-03,603696.SH,0.22942201335190696 +2025-12-04,000547.SZ,0.23821467051471265 +2025-12-04,600151.SH,0.23135165310549152 +2025-12-04,603327.SH,0.2308754758099887 +2025-12-04,301510.SZ,0.2304962912474615 +2025-12-04,002565.SZ,0.23021960389995177 +2025-12-05,002348.SZ,0.23448312435021076 +2025-12-05,301148.SZ,0.23157672350993444 +2025-12-05,603327.SH,0.2294564927132247 +2025-12-05,603386.SH,0.2287206222302545 +2025-12-05,605299.SH,0.2283852746120141 +2025-12-08,603386.SH,0.2320772357610368 +2025-12-08,002348.SZ,0.23129310809633574 +2025-12-08,002836.SZ,0.23105514112674522 +2025-12-08,002589.SZ,0.22993783839538778 +2025-12-08,301526.SZ,0.22975543681079774 +2025-12-09,603386.SH,0.2317781258811661 +2025-12-09,301517.SZ,0.23023538453375358 +2025-12-09,002589.SZ,0.22853305457479645 +2025-12-09,301486.SZ,0.2280120628381348 +2025-12-09,301526.SZ,0.2278142284944237 +2025-12-10,301005.SZ,0.23212412694290516 +2025-12-10,002512.SZ,0.23200154958236427 +2025-12-10,301486.SZ,0.23135165310549152 +2025-12-10,605299.SH,0.23073505223931165 +2025-12-10,600693.SH,0.2285694735238394 +2025-12-11,600105.SH,0.23279496726507296 +2025-12-11,600693.SH,0.23279496726507296 +2025-12-11,002725.SZ,0.23044692246556805 +2025-12-11,301517.SZ,0.22971951558405893 +2025-12-11,001360.SZ,0.22942695975067617 +2025-12-12,003031.SZ,0.23079988869612267 +2025-12-12,600693.SH,0.22880091690399557 +2025-12-12,603306.SH,0.22852105047075577 +2025-12-12,301285.SZ,0.22828923912155863 +2025-12-12,603601.SH,0.22645966369026602 +2025-12-15,600865.SH,0.2295434058023592 +2025-12-15,000890.SZ,0.22950949239212068 +2025-12-15,001208.SZ,0.22904166520899966 +2025-12-15,002471.SZ,0.22829000873235972 +2025-12-15,600936.SH,0.22788534548995037 +2025-12-16,001208.SZ,0.2348185872546558 +2025-12-16,600865.SH,0.2291904395718046 +2025-12-16,001331.SZ,0.22837494935157604 +2025-12-16,002471.SZ,0.2280120628381348 +2025-12-16,000592.SZ,0.22630120676508222 +2025-12-17,000890.SZ,0.2288219696577047 +2025-12-17,001331.SZ,0.22669359303187595 +2025-12-17,600865.SH,0.22639170875486245 +2025-12-17,002853.SZ,0.2262470311282916 +2025-12-17,001317.SZ,0.2256355191018716 +2025-12-18,301408.SZ,0.23584482668116133 +2025-12-18,301017.SZ,0.23105514112674522 +2025-12-18,002703.SZ,0.2280120628381348 +2025-12-18,002788.SZ,0.2272430280567131 +2025-12-18,002837.SZ,0.22585838310972373 +2025-12-19,301408.SZ,0.23821467051471265 +2025-12-19,002910.SZ,0.23322275595792766 +2025-12-19,301017.SZ,0.2327240200943366 +2025-12-19,603585.SH,0.23170503760361796 +2025-12-19,600838.SH,0.23138750866263708 +2025-12-22,301338.SZ,0.2322386909311028 +2025-12-22,002910.SZ,0.23212412694290516 +2025-12-22,301123.SZ,0.23165581508343489 +2025-12-22,600838.SH,0.23135165310549152 +2025-12-22,301488.SZ,0.22998626706835698 +2025-12-23,301338.SZ,0.23740387263685386 +2025-12-23,001336.SZ,0.2331070736551817 +2025-12-23,301017.SZ,0.23194217895235644 +2025-12-23,301123.SZ,0.23192250775540177 +2025-12-23,600838.SH,0.23135165310549152 +2025-12-24,002228.SZ,0.23821467051471265 +2025-12-24,301338.SZ,0.23152617440799203 +2025-12-24,002361.SZ,0.2315043013934053 +2025-12-24,600179.SH,0.2296940702840302 +2025-12-24,301235.SZ,0.22826698677612403 +2025-12-25,002228.SZ,0.23821467051471265 +2025-12-25,002163.SZ,0.23791815853596635 +2025-12-25,600179.SH,0.23465186383683181 +2025-12-25,603696.SH,0.2331070736551817 +2025-12-25,000551.SZ,0.2295434058023592 +2025-12-26,002163.SZ,0.23821467051471265 +2025-12-26,603163.SH,0.23821467051471265 +2025-12-26,605598.SH,0.23584482668116133 +2025-12-26,301611.SZ,0.23200154958236427 +2025-12-26,002151.SZ,0.22956136811575215 +2025-12-29,301005.SZ,0.23740387263685386 +2025-12-29,301232.SZ,0.23710736065810756 +2025-12-29,301246.SZ,0.23314347823094114 +2025-12-29,002652.SZ,0.2306783658457242 +2025-12-29,301225.SZ,0.22909189616308853 +2025-12-30,002931.SZ,0.23821467051471265 +2025-12-30,002471.SZ,0.2320639141175815 +2025-12-30,002347.SZ,0.23168402064138338 +2025-12-30,301005.SZ,0.23168402064138338 +2025-12-30,002009.SZ,0.23002430435484691 +2025-12-31,002009.SZ,0.2294564927132247 +2025-12-31,301550.SZ,0.22942201335190696 +2025-12-31,000659.SZ,0.22942201335190696 +2025-12-31,002196.SZ,0.22930345589250042 +2025-12-31,601698.SH,0.2283125635548306 diff --git a/src/experiment/regression.py b/src/experiment/regression.py new file mode 100644 index 0000000..734552b --- /dev/null +++ b/src/experiment/regression.py @@ -0,0 +1,457 @@ +"""LightGBM 回归训练示例 - 使用因子字符串表达式 + +使用字符串表达式定义因子,训练 LightGBM 回归模型预测未来5日收益率。 +Label: return_5 = (close / ts_delay(close, 5)) - 1 +""" + +import os +from typing import List, Tuple + +import polars as pl + +from src.factors import FactorEngine +from src.training import ( + DateSplitter, + LightGBMModel, + StandardScaler, + StockFilterConfig, + StockPoolManager, + Trainer, + Winsorizer, +) +from src.training.config import TrainingConfig + + +def create_factors_with_strings(engine: FactorEngine) -> List[str]: + """使用字符串表达式定义因子 + + Args: + engine: FactorEngine 实例 + + Returns: + 特征因子名称列表(不包含 label) + """ + print("=" * 80) + print("使用字符串表达式定义因子") + print("=" * 80) + + # 定义所有因子(使用字典,方便维护和扩展) + # 新增因子只需在此处添加一行即可 + factor_definitions = { + # 1. 价格动量因子 + "ma5": "ts_mean(close, 5)", + "ma10": "ts_mean(close, 10)", + "ma20": "ts_mean(close, 20)", + "ma_ratio": "ts_mean(close, 5) / ts_mean(close, 20) - 1", + # 2. 波动率因子 + "volatility_5": "ts_std(close, 5)", + "volatility_20": "ts_std(close, 20)", + "vol_ratio": "ts_std(close, 5) / (ts_std(close, 20) + 1e-8)", + # 3. 收益率动量因子(return_5 是 label,需要单独注册) + "return_10": "(close / ts_delay(close, 10)) - 1", + "return_20": "(close / ts_delay(close, 20)) - 1", + # 4. 收益率变化因子(使用完整表达式,不引用其他因子) + "return_diff": "(close / ts_delay(close, 5)) - 1 - ((close / ts_delay(close, 10)) - 1)", + # 5. 成交量因子 + "vol_ma5": "ts_mean(vol, 5)", + "vol_ma20": "ts_mean(vol, 20)", + "vol_ratio": "ts_mean(vol, 5) / (ts_mean(vol, 20) + 1e-8)", + # 6. 市值因子(截面排名) + "market_cap_rank": "cs_rank(total_mv)", + # 7. 价格位置因子 + "high_low_ratio": "(close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-8)", + } + + # Label 因子(单独定义,不参与训练) + label_factor = { + "return_5": "(close / ts_delay(close, 5)) - 1", + } + + # 注册所有特征因子 + print("\n注册特征因子:") + for name, expr in factor_definitions.items(): + engine.add_factor(name, expr) + print(f" - {name}: {expr}") + + # 注册 label 因子 + print("\n注册 Label 因子:") + for name, expr in label_factor.items(): + engine.add_factor(name, expr) + print(f" - {name}: {expr}") + + # 从字典自动获取特征列(keys() 方法) + feature_cols = list(factor_definitions.keys()) + + print(f"\n特征因子数: {len(feature_cols)}") + print(f"Label: {list(label_factor.keys())[0]}") + print(f"已注册因子总数: {len(engine.list_registered())}") + + return feature_cols + + +def prepare_data( + engine: FactorEngine, + feature_cols: List[str], + start_date: str, + end_date: str, +) -> pl.DataFrame: + """准备数据:计算因子 + + Args: + engine: FactorEngine 实例 + feature_cols: 特征列名列表 + start_date: 开始日期 + end_date: 结束日期 + + Returns: + 因子数据 DataFrame + """ + print("\n" + "=" * 80) + print("准备数据") + print("=" * 80) + + # 计算因子(全市场数据) + print(f"\n计算因子: {start_date} - {end_date}") + factor_names = feature_cols + ["return_5"] # 包含 label + + data = engine.compute( + factor_names=factor_names, + start_date=start_date, + end_date=end_date, + ) + + print(f"数据形状: {data.shape}") + print(f"数据列: {data.columns}") + print(f"\n前5行预览:") + print(data.head()) + + return data + + +def train_regression_model(): + """训练 LightGBM 回归模型""" + print("\n" + "=" * 80) + print("LightGBM 回归模型训练") + print("=" * 80) + + # 1. 创建 FactorEngine + print("\n[1] 创建 FactorEngine") + engine = FactorEngine() + + # 2. 使用字符串表达式定义因子 + print("\n[2] 定义因子(字符串表达式)") + feature_cols = create_factors_with_strings(engine) + target_col = "return_5" + + # 3. 准备数据 + print("\n[3] 准备数据") + train_start, train_end = "20200101", "20241231" + test_start, test_end = "20250101", "20251231" + + data = prepare_data( + engine=engine, + feature_cols=feature_cols, + start_date=train_start, + end_date=test_end, + ) + + # 4. 创建配置 + config = TrainingConfig( + feature_cols=feature_cols, + target_col=target_col, + date_col="trade_date", + code_col="ts_code", + train_start=train_start, + train_end=train_end, + test_start=test_start, + test_end=test_end, + model_type="lightgbm", + model_params={ + "objective": "regression", + "metric": "rmse", + "num_leaves": 31, + "learning_rate": 0.05, + "n_estimators": 100, + }, + processors=[ + {"name": "winsorizer", "params": {"lower": 0.01, "upper": 0.99}}, + {"name": "cs_standard_scaler", "params": {}}, + ], + persist_model=False, + model_save_path=None, + output_dir="output/regression", + save_predictions=True, + ) + + print(f"\n[配置] 训练期: {train_start} - {train_end}") + print(f"[配置] 测试期: {test_start} - {test_end}") + print(f"[配置] 特征数: {len(feature_cols)}") + print(f"[配置] 目标变量: {target_col}") + + # 5. 创建模型 + model = LightGBMModel( + objective="regression", + metric="rmse", + num_leaves=31, + learning_rate=0.05, + n_estimators=100, + ) + + # 6. 创建数据处理器 + processors = [ + Winsorizer(lower=0.01, upper=0.99), + StandardScaler(exclude_cols=["ts_code", "trade_date", target_col]), + ] + + # 7. 创建数据划分器 + splitter = DateSplitter( + train_start=train_start, + train_end=train_end, + test_start=test_start, + test_end=test_end, + ) + + # 8. 创建股票池管理器(可选) + pool_manager = StockPoolManager( + filter_config=StockFilterConfig( + exclude_cyb=True, + exclude_kcb=True, + exclude_bj=True, + exclude_st=True, + ), + selector_config=None, # 暂时不启用市值选择 + data_router=engine.router, # 从 FactorEngine 获取数据路由器 + ) + + # 9. 创建训练器 + trainer = Trainer( + model=model, + pool_manager=pool_manager, + processors=processors, + splitter=splitter, + target_col=target_col, + feature_cols=feature_cols, + persist_model=False, + ) + + # 10. 手动执行训练流程(增加详细打印) + print("\n" + "=" * 80) + print("开始训练") + print("=" * 80) + + # 10.1 股票池筛选 + print("\n[步骤 1/6] 股票池筛选") + print("-" * 60) + if pool_manager: + print(" 执行每日独立筛选股票池...") + filtered_data = pool_manager.filter_and_select_daily(data) + print(f" 筛选前数据规模: {data.shape}") + print(f" 筛选后数据规模: {filtered_data.shape}") + print(f" 筛选前股票数: {data['ts_code'].n_unique()}") + print(f" 筛选后股票数: {filtered_data['ts_code'].n_unique()}") + print(f" 删除记录数: {len(data) - len(filtered_data)}") + else: + filtered_data = data + print(" 未配置股票池管理器,跳过筛选") + + # 10.2 划分训练/测试集 + print("\n[步骤 2/6] 划分训练集和测试集") + print("-" * 60) + if splitter: + train_data, test_data = splitter.split(filtered_data) + print(f" 训练集数据规模: {train_data.shape}") + print(f" 测试集数据规模: {test_data.shape}") + print(f" 训练集股票数: {train_data['ts_code'].n_unique()}") + print(f" 测试集股票数: {test_data['ts_code'].n_unique()}") + print( + f" 训练集日期范围: {train_data['trade_date'].min()} - {train_data['trade_date'].max()}" + ) + print( + f" 测试集日期范围: {test_data['trade_date'].min()} - {test_data['trade_date'].max()}" + ) + + print("\n 训练集前5行预览:") + print(train_data.head()) + print("\n 测试集前5行预览:") + print(test_data.head()) + else: + train_data = filtered_data + test_data = filtered_data + print(" 未配置划分器,全部作为训练集") + + # 10.3 训练集数据处理 + print("\n[步骤 3/6] 训练集数据处理") + print("-" * 60) + fitted_processors = [] + if processors: + for i, processor in enumerate(processors, 1): + print( + f" [{i}/{len(processors)}] 应用处理器: {processor.__class__.__name__}" + ) + train_data_before = len(train_data) + train_data = processor.fit_transform(train_data) + train_data_after = len(train_data) + fitted_processors.append(processor) + print(f" 处理前记录数: {train_data_before}") + print(f" 处理后记录数: {train_data_after}") + if train_data_before != train_data_after: + print(f" 删除记录数: {train_data_before - train_data_after}") + + print("\n 训练集处理后前5行预览:") + print(train_data.head()) + print(f"\n 训练集特征统计:") + print(f" 特征数: {len(feature_cols)}") + print(f" 样本数: {len(train_data)}") + print(f" 缺失值统计:") + for col in feature_cols[:5]: # 只显示前5个特征的缺失值 + null_count = train_data[col].null_count() + if null_count > 0: + print( + f" {col}: {null_count} ({null_count / len(train_data) * 100:.2f}%)" + ) + + # 10.4 训练模型 + print("\n[步骤 4/6] 训练模型") + print("-" * 60) + print(f" 模型类型: LightGBM") + print(f" 训练样本数: {len(train_data)}") + print(f" 特征数: {len(feature_cols)}") + print(f" 目标变量: {target_col}") + + X_train = train_data.select(feature_cols) + y_train = train_data.select(target_col).to_series() + + print(f"\n 目标变量统计:") + print(f" 均值: {y_train.mean():.6f}") + print(f" 标准差: {y_train.std():.6f}") + print(f" 最小值: {y_train.min():.6f}") + print(f" 最大值: {y_train.max():.6f}") + print(f" 缺失值: {y_train.null_count()}") + + print("\n 开始训练...") + model.fit(X_train, y_train) + print(" 训练完成!") + + # 10.5 测试集数据处理 + print("\n[步骤 5/6] 测试集数据处理") + print("-" * 60) + if processors and test_data is not train_data: + for i, processor in enumerate(fitted_processors, 1): + print( + f" [{i}/{len(fitted_processors)}] 应用处理器: {processor.__class__.__name__}" + ) + test_data_before = len(test_data) + test_data = processor.transform(test_data) + test_data_after = len(test_data) + print(f" 处理前记录数: {test_data_before}") + print(f" 处理后记录数: {test_data_after}") + else: + print(" 跳过测试集处理") + + # 10.6 预测 + print("\n[步骤 6/6] 生成预测") + print("-" * 60) + X_test = test_data.select(feature_cols) + print(f" 测试样本数: {len(X_test)}") + print(f" 预测中...") + predictions = model.predict(X_test) + print(f" 预测完成!") + + print(f"\n 预测结果统计:") + print(f" 均值: {predictions.mean():.6f}") + print(f" 标准差: {predictions.std():.6f}") + print(f" 最小值: {predictions.min():.6f}") + print(f" 最大值: {predictions.max():.6f}") + + # 保存结果到 trainer + trainer.results = test_data.with_columns([pl.Series("prediction", predictions)]) + + # 11. 获取结果 + print("\n" + "=" * 80) + print("训练结果") + print("=" * 80) + + results = trainer.results + + print(f"\n结果数据形状: {results.shape}") + print(f"结果列: {results.columns}") + print(f"\n结果前10行预览:") + print(results.head(10)) + print(f"\n结果后5行预览:") + print(results.tail()) + + print(f"\n每日预测样本数统计:") + daily_counts = results.group_by("trade_date").agg(pl.count()).sort("trade_date") + print(f" 最小: {daily_counts['count'].min()}") + print(f" 最大: {daily_counts['count'].max()}") + print(f" 平均: {daily_counts['count'].mean():.2f}") + + # 展示某一天的前10个预测结果 + sample_date = results["trade_date"][0] + sample_data = results.filter(results["trade_date"] == sample_date).head(10) + print(f"\n示例日期 {sample_date} 的前10条预测:") + print(sample_data.select(["ts_code", "trade_date", target_col, "prediction"])) + + # 12. 保存结果(每日 top5) + output_dir = "D:\\PyProject\\ProStock\\src\\training\\output" + os.makedirs(output_dir, exist_ok=True) + + # 生成文件名:top_5_{开始日期}_{结束日期}.csv + from datetime import datetime + + start_dt = datetime.strptime(test_start, "%Y%m%d") + end_dt = datetime.strptime(test_end, "%Y%m%d") + filename = ( + f"top_5_{start_dt.strftime('%Y-%m-%d')}_{end_dt.strftime('%Y-%m-%d')}.csv" + ) + output_path = os.path.join(output_dir, filename) + + # 按日期分组,取每日 top5 + print("\n选取每日 Top 5 股票...") + top5_by_date = [] + unique_dates = results["trade_date"].unique().sort() + for date in unique_dates: + day_data = results.filter(results["trade_date"] == date) + # 按 prediction 降序排序,取前5 + top5 = day_data.sort("prediction", descending=True).head(5) + top5_by_date.append(top5) + + print(f" 处理完成: 共 {len(unique_dates)} 个交易日,每交易日取 top5") + + # 合并所有日期的 top5 + top5_results = pl.concat(top5_by_date) + + # 格式化日期并调整列顺序:日期、分数、股票 + results_to_save = top5_results.select( + [ + pl.col("trade_date").str.slice(0, 4) + + "-" + + pl.col("trade_date").str.slice(4, 2) + + "-" + + pl.col("trade_date").str.slice(6, 2), + pl.col("prediction").alias("score"), + pl.col("ts_code"), + ] + ).rename({"trade_date": "date"}) + results_to_save.write_csv(output_path, include_header=True) + print(f"\n预测结果已保存: {output_path}") + print(f"保存列: {results_to_save.columns}") + print(f"总行数: {len(results_to_save)}(每日 top5)") + print(f"\n保存数据预览:") + print(results_to_save.head(15)) + + # 13. 特征重要性 + importance = model.feature_importance() + if importance is not None: + print("\n特征重要性:") + print(importance.sort_values(ascending=False)) + + print("\n" + "=" * 80) + print("训练完成!") + print("=" * 80) + + return trainer, results + + +if __name__ == "__main__": + trainer, results = train_regression_model() diff --git a/src/factors/engine/schema_cache.py b/src/factors/engine/schema_cache.py index 51b07e8..2253ede 100644 --- a/src/factors/engine/schema_cache.py +++ b/src/factors/engine/schema_cache.py @@ -179,6 +179,17 @@ class SchemaCache: return False return field_name in self._field_to_table_map + def get_all_fields(self) -> Set[str]: + """获取所有可用字段的集合。 + + Returns: + 所有可用字段名的集合 + """ + self._ensure_scanned() + if self._field_to_table_map is None: + return set() + return set(self._field_to_table_map.keys()) + def match_fields_to_tables(self, field_names: Set[str]) -> Dict[str, List[str]]: """将字段集合按表分组。 @@ -199,10 +210,13 @@ class SchemaCache: table_to_fields[table] = [] table_to_fields[table].append(field) else: - # 字段不存在于任何表,归入 "daily" 表(默认表) - if "daily" not in table_to_fields: - table_to_fields["daily"] = [] - table_to_fields["daily"].append(field) + # 字段不存在于任何表,报错 + available_fields = self.get_all_fields() + raise ValueError( + f"字段 '{field}' 不存在于数据库的任何表中。\n" + f"可用字段: {sorted(available_fields)[:20]}...\n" + f"请检查字段名拼写或同步相关数据表。" + ) # 对字段列表排序以保持确定性输出 for fields in table_to_fields.values(): diff --git a/src/training/components/selectors.py b/src/training/components/selectors.py index b22daaa..86e5fb0 100644 --- a/src/training/components/selectors.py +++ b/src/training/components/selectors.py @@ -17,7 +17,7 @@ class StockFilterConfig: Attributes: exclude_cyb: 是否排除创业板(300xxx) exclude_kcb: 是否排除科创板(688xxx) - exclude_bj: 是否排除北交所(8xxxxxx, 4xxxxxx) + exclude_bj: 是否排除北交所(.BJ 后缀) exclude_st: 是否排除ST股票(需要外部数据支持) """ @@ -47,8 +47,8 @@ class StockFilterConfig: # 排除科创板(688xxx) if self.exclude_kcb and code.startswith("688"): continue - # 排除北交所(8xxxxxx 或 4xxxxxx) - if self.exclude_bj and (code.startswith("8") or code.startswith("4")): + # 排除北交所(.BJ 后缀) + if self.exclude_bj and code.endswith(".BJ"): continue result.append(code) return result