From 5a1f278df86441214985df868f47953da9b41feb Mon Sep 17 00:00:00 2001 From: liaozhaorun <1300336796@qq.com> Date: Thu, 5 Mar 2026 00:38:20 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E5=AE=9E=E9=AA=8C=E9=85=8D=E7=BD=AE=E5=92=8C=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=8F=82=E6=95=B0=20-=20=E5=B0=86=E5=9B=A0=E5=AD=90?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E3=80=81=E6=A8=A1=E5=9E=8B=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E3=80=81=E6=97=A5=E6=9C=9F=E9=85=8D=E7=BD=AE=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E4=B8=BA=E6=A8=A1=E5=9D=97=E7=BA=A7=E5=B8=B8=E9=87=8F=20-=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20LightGBM=20=E5=8F=82=E6=95=B0=EF=BC=88?= =?UTF-8?q?=E9=99=8D=E4=BD=8E=E8=BF=87=E6=8B=9F=E5=90=88=E9=A3=8E=E9=99=A9?= =?UTF-8?q?=EF=BC=89=20-=20LightGBMModel=20=E6=94=AF=E6=8C=81=20params=20?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=8F=82=E6=95=B0=E4=BC=A0=E5=85=A5=20-=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20StockFilter=20=E5=88=9B=E4=B8=9A=E6=9D=BF?= =?UTF-8?q?=E6=8E=92=E9=99=A4=E9=80=BB=E8=BE=91=EF=BC=88=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20301xxx=EF=BC=89=20-=20=E6=B7=BB=E5=8A=A0=20experiment/output?= =?UTF-8?q?=20=E5=88=B0=20.gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../output/regression/predictions.csv | 1216 ----------------- src/experiment/regression.py | 258 ++-- src/training/components/models/lightgbm.py | 52 +- src/training/components/selectors.py | 6 +- 5 files changed, 183 insertions(+), 1350 deletions(-) delete mode 100644 src/experiment/output/regression/predictions.csv diff --git a/.gitignore b/.gitignore index 5c3e46a..5917b4f 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,4 @@ src/training/output/* # AI Agent 工作目录 /.sisyphus/ +/src/experiment/output/ diff --git a/src/experiment/output/regression/predictions.csv b/src/experiment/output/regression/predictions.csv deleted file mode 100644 index 9022dd9..0000000 --- a/src/experiment/output/regression/predictions.csv +++ /dev/null @@ -1,1216 +0,0 @@ -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 index 2cdd243..e2e7c50 100644 --- a/src/experiment/regression.py +++ b/src/experiment/regression.py @@ -5,6 +5,7 @@ Label: return_5 = (close / ts_delay(close, 5)) - 1 """ import os +from datetime import datetime from typing import List, Tuple import polars as pl @@ -22,6 +23,95 @@ from src.training import ( ) from src.training.config import TrainingConfig +# ============================================================================= +# 因子定义(集中在此,方便修改) +# ============================================================================= + +# 特征因子定义字典:新增因子只需在此处添加一行 +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_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)", + "n_income": "n_income", +} + +# Label 因子定义(不参与训练,用于计算目标) +LABEL_FACTOR = { + "return_5": "(close / ts_delay(close, 5)) - 1", +} + +# ============================================================================= +# 训练参数配置(集中在此,方便修改) +# ============================================================================= + +# 日期范围配置 +TRAIN_START = "20200101" +TRAIN_END = "20241231" +TEST_START = "20250101" +TEST_END = "20251231" + +# 模型参数配置 +MODEL_PARAMS = { + "objective": "regression", + "metric": "mae", # 改为 MAE,对异常值更稳健 + # 树结构控制(防过拟合核心) + "num_leaves": 20, # 从31降为20,降低模型复杂度 + "max_depth": 4, # 显式限制深度,防止过度拟合噪声 + "min_child_samples": 50, # 叶子最小样本数,防止学习极端样本 + "min_child_weight": 0.001, + # 学习参数 + "learning_rate": 0.01, # 降低学习率,配合更多树 + "n_estimators": 1000, # 增加树数量,配合早停 + # 采样策略(关键防过拟合) + "subsample": 0.8, # 每棵树随机采样80%数据(行采样) + "subsample_freq": 5, # 每5轮迭代进行一次 subsample + "colsample_bytree": 0.8, # 每棵树随机选择80%特征(列采样) + # 正则化 + "reg_alpha": 0.1, # L1正则,增加稀疏性 + "reg_lambda": 1.0, # L2正则,平滑权重 + # 数值稳定性 + "verbose": -1, + "random_state": 42, +} + +# 数据处理器配置 +PROCESSOR_CONFIGS = [ + {"name": "winsorizer", "params": {"lower": 0.01, "upper": 0.99}}, + {"name": "cs_standard_scaler", "params": {}}, +] + +# 股票池筛选配置 +STOCK_FILTER_CONFIG = { + "exclude_cyb": True, # 排除创业板 + "exclude_kcb": True, # 排除科创板 + "exclude_bj": True, # 排除北交所 + "exclude_st": True, # 排除ST股票 +} + +# 输出配置(相对于本文件所在目录) +OUTPUT_DIR = "output" +SAVE_PREDICTIONS = True +PERSIST_MODEL = False + def create_factors_with_strings(engine: FactorEngine) -> List[str]: """使用字符串表达式定义因子 @@ -36,57 +126,24 @@ def create_factors_with_strings(engine: FactorEngine) -> List[str]: 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)", - "n_income": "n_income" - - } - - # Label 因子(单独定义,不参与训练) - label_factor = { - "return_5": "(close / ts_delay(close, 5)) - 1", - } - + # 使用模块级别的因子定义 # 注册所有特征因子 print("\n注册特征因子:") - for name, expr in factor_definitions.items(): + 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(): + for name, expr in LABEL_FACTOR.items(): engine.add_factor(name, expr) print(f" - {name}: {expr}") - # 从字典自动获取特征列(keys() 方法) - feature_cols = list(factor_definitions.keys()) + # 从字典自动获取特征列 + feature_cols = list(FACTOR_DEFINITIONS.keys()) print(f"\n特征因子数: {len(feature_cols)}") - print(f"Label: {list(label_factor.keys())[0]}") + print(f"Label: {list(LABEL_FACTOR.keys())[0]}") print(f"已注册因子总数: {len(engine.list_registered())}") return feature_cols @@ -146,82 +203,42 @@ def train_regression_model(): feature_cols = create_factors_with_strings(engine) target_col = "return_5" - # 3. 准备数据 + # 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, + 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}") + # 4. 打印配置信息(使用模块级别的配置常量) + 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, - ) + # 5. 创建模型(使用模块级别的模型参数) + model = LightGBMModel(params=MODEL_PARAMS) - # 6. 创建数据处理器 + # 6. 创建数据处理器(从 PROCESSOR_CONFIGS 解析) processors = [ - Winsorizer(lower=0.01, upper=0.99), - StandardScaler(exclude_cols=["ts_code", "trade_date", target_col]), + Winsorizer(**PROCESSOR_CONFIGS[0]["params"]), # type: ignore[arg-type] + StandardScaler(exclude_cols=["ts_code", "trade_date", target_col]), # type: ignore[call-arg] ] - # 7. 创建数据划分器 + # 7. 创建数据划分器(使用模块级别的日期配置) splitter = DateSplitter( - train_start=train_start, - train_end=train_end, - test_start=test_start, - test_end=test_end, + train_start=TRAIN_START, + train_end=TRAIN_END, + test_start=TEST_START, + test_end=TEST_END, ) - # 8. 创建股票池管理器(可选) + # 8. 创建股票池管理器(使用模块级别的筛选配置) pool_manager = StockPoolManager( - filter_config=StockFilterConfig( - exclude_cyb=True, - exclude_kcb=True, - exclude_bj=True, - exclude_st=True, - ), + filter_config=StockFilterConfig(**STOCK_FILTER_CONFIG), selector_config=None, # 暂时不启用市值选择 data_router=engine.router, # 从 FactorEngine 获取数据路由器 ) @@ -240,7 +257,7 @@ def train_regression_model(): splitter=splitter, target_col=target_col, feature_cols=feature_cols, - persist_model=False, + persist_model=PERSIST_MODEL, ) # 10. 手动执行训练流程(增加详细打印) @@ -401,22 +418,24 @@ def train_regression_model(): 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) + # 12. 保存结果 + print("\n" + "=" * 80) + print("保存预测结果") + print("=" * 80) - # 生成文件名:top_5_{开始日期}_{结束日期}.csv - from datetime import datetime + # 确保输出目录存在 + os.makedirs(OUTPUT_DIR, exist_ok=True) - 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) + # 生成时间戳 + start_dt = datetime.strptime(TEST_START, "%Y%m%d") + end_dt = datetime.strptime(TEST_END, "%Y%m%d") + date_str = f"{start_dt.strftime('%Y%m%d')}_{end_dt.strftime('%Y%m%d')}" + + # 12.1 保存每日 Top5 + print("\n[1/1] 保存每日 Top5 股票...") + top5_output_path = os.path.join(OUTPUT_DIR, f"top5_{date_str}.csv") # 按日期分组,取每日 top5 - print("\n选取每日 Top 5 股票...") top5_by_date = [] unique_dates = results["trade_date"].unique().sort() for date in unique_dates: @@ -425,29 +444,26 @@ def train_regression_model(): 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( + top5_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("trade_date").str.slice(6, 2).alias("date"), 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)) + ) + top5_to_save.write_csv(top5_output_path, include_header=True) + print(f" 保存路径: {top5_output_path}") + print(f" 保存行数: {len(top5_to_save)}({len(unique_dates)}个交易日 × 每日top5)") + print(f"\n 预览(前15行):") + print(top5_to_save.head(15)) # 13. 特征重要性 importance = model.feature_importance() diff --git a/src/training/components/models/lightgbm.py b/src/training/components/models/lightgbm.py index 3162eac..56638df 100644 --- a/src/training/components/models/lightgbm.py +++ b/src/training/components/models/lightgbm.py @@ -3,7 +3,7 @@ 提供 LightGBM 回归模型的实现,支持特征重要性和原生模型保存。 """ -from typing import Optional +from typing import Any, Optional import numpy as np import pandas as pd @@ -31,6 +31,7 @@ class LightGBMModel(BaseModel): def __init__( self, + params: Optional[dict] = None, objective: str = "regression", metric: str = "rmse", num_leaves: int = 31, @@ -40,23 +41,54 @@ class LightGBMModel(BaseModel): ): """初始化 LightGBM 模型 + 支持两种方式传入参数: + 1. 通过 params 字典传入所有参数(推荐方式) + 2. 通过独立参数传入(向后兼容) + Args: + params: LightGBM 参数字典,如果提供则直接使用此字典 objective: 目标函数,默认 "regression" metric: 评估指标,默认 "rmse" num_leaves: 叶子节点数,默认 31 learning_rate: 学习率,默认 0.05 n_estimators: 迭代次数,默认 100 **kwargs: 其他 LightGBM 参数 + + Examples: + >>> # 方式1:通过 params 字典(推荐) + >>> model = LightGBMModel(params={ + ... "objective": "regression", + ... "metric": "rmse", + ... "num_leaves": 31, + ... "learning_rate": 0.05, + ... "n_estimators": 100, + ... }) + >>> + >>> # 方式2:通过独立参数(向后兼容) + >>> model = LightGBMModel( + ... objective="regression", + ... num_leaves=31, + ... learning_rate=0.05, + ... ) """ - self.params = { - "objective": objective, - "metric": metric, - "num_leaves": num_leaves, - "learning_rate": learning_rate, - "verbose": -1, # 抑制训练输出 - **kwargs, - } - self.n_estimators = n_estimators + if params is not None: + # 方式1:直接使用 params 字典 + self.params = dict(params) # 复制一份,避免修改原始字典 + self.params.setdefault("verbose", -1) # 默认抑制训练输出 + # n_estimators 可能存在于 params 中 + self.n_estimators = self.params.pop("n_estimators", n_estimators) + else: + # 方式2:通过独立参数构建 params + self.params = { + "objective": objective, + "metric": metric, + "num_leaves": num_leaves, + "learning_rate": learning_rate, + "verbose": -1, # 抑制训练输出 + **kwargs, + } + self.n_estimators = n_estimators + self.model = None self.feature_names_: Optional[list] = None diff --git a/src/training/components/selectors.py b/src/training/components/selectors.py index 86e5fb0..911bf8b 100644 --- a/src/training/components/selectors.py +++ b/src/training/components/selectors.py @@ -15,7 +15,7 @@ class StockFilterConfig: 基于股票代码进行过滤,不依赖外部数据。 Attributes: - exclude_cyb: 是否排除创业板(300xxx) + exclude_cyb: 是否排除创业板(300xxx, 301xxx) exclude_kcb: 是否排除科创板(688xxx) exclude_bj: 是否排除北交所(.BJ 后缀) exclude_st: 是否排除ST股票(需要外部数据支持) @@ -41,8 +41,8 @@ class StockFilterConfig: """ result = [] for code in codes: - # 排除创业板(300xxx) - if self.exclude_cyb and code.startswith("300"): + # 排除创业板(300xxx, 301xxx) + if self.exclude_cyb and code.startswith(("300", "301")): continue # 排除科创板(688xxx) if self.exclude_kcb and code.startswith("688"):