feat: 完善 QMT 交易模块文档和配置展示功能
- 优化前端仪表盘界面 - 添加配置文件可视化展示 - 编写 QMT 模块配置文档 - 完善项目规则体系(KiloCode)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"execution_count": 1,
|
||||
"id": "18d1d622-b083-4cc4-a6f8-7c1ed2d0edd2",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -20,7 +20,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": 2,
|
||||
"id": "bc8f03e027027004",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -63,7 +63,7 @@
|
||||
" return True\n",
|
||||
" return False\n",
|
||||
"\n",
|
||||
"name_change_df = pd.read_hdf('../../data/name_change.h5', key='name_change')\n",
|
||||
"name_change_df = pd.read_hdf('/mnt/d/PyProject/NewStock/data/name_change.h5', key='name_change')\n",
|
||||
"name_change_df = name_change_df.drop_duplicates(keep='first')\n",
|
||||
"\n",
|
||||
"# 确保 name_change_df 的日期格式正确\n",
|
||||
@@ -81,7 +81,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"execution_count": 3,
|
||||
"id": "b151990c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -109,7 +109,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"execution_count": 4,
|
||||
"id": "553cfb36-f560-4cc4-b2bc-68323ccc5072",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -123,19 +123,184 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251230 完成\n",
|
||||
"任务 20251231 完成\n",
|
||||
"任务 20251229 完成\n",
|
||||
"任务 20251226 完成\n",
|
||||
"任务 20251225 完成\n",
|
||||
"任务 20251224 完成\n",
|
||||
"任务 20251223 完成\n",
|
||||
"任务 20251222 完成\n",
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n",
|
||||
"任务 20251120 完成\n",
|
||||
"任务 20251119 完成\n",
|
||||
"任务 20251118 完成\n",
|
||||
"任务 20251117 完成\n",
|
||||
"任务 20251114 完成\n",
|
||||
"任务 20251113 完成\n",
|
||||
"任务 20251112 完成\n",
|
||||
"任务 20251111 完成\n",
|
||||
"任务 20251110 完成\n",
|
||||
"任务 20251107 完成\n",
|
||||
"任务 20251106 完成\n",
|
||||
"任务 20251105 完成\n",
|
||||
"任务 20251104 完成\n",
|
||||
"任务 20251103 完成\n",
|
||||
"任务 20251031 完成\n",
|
||||
"任务 20251030 完成\n",
|
||||
"任务 20251029 完成\n",
|
||||
"任务 20251028 完成\n",
|
||||
"任务 20251027 完成\n",
|
||||
"任务 20251024 完成\n",
|
||||
"任务 20251023 完成\n",
|
||||
"任务 20251022 完成\n",
|
||||
"任务 20251021 完成\n",
|
||||
"任务 20251020 完成\n",
|
||||
"任务 20251017 完成\n",
|
||||
"任务 20251016 完成\n",
|
||||
"任务 20251015 完成\n",
|
||||
"任务 20251014 完成\n",
|
||||
"任务 20251013 完成\n",
|
||||
"任务 20251010 完成\n",
|
||||
"任务 20251009 完成\n",
|
||||
"任务 20250930 完成\n",
|
||||
"任务 20250929 完成\n",
|
||||
"任务 20250926 完成\n",
|
||||
"任务 20250925 完成\n",
|
||||
"任务 20250924 完成\n",
|
||||
"任务 20250923 完成\n",
|
||||
"任务 20250922 完成\n",
|
||||
"任务 20250919 完成\n",
|
||||
"任务 20250918 完成\n",
|
||||
"任务 20250917 完成\n",
|
||||
"任务 20250916 完成\n",
|
||||
"任务 20250915 完成\n",
|
||||
"任务 20250912 完成\n",
|
||||
"任务 20250911 完成\n",
|
||||
"任务 20250910 完成\n",
|
||||
"任务 20250909 完成\n",
|
||||
"任务 20250908 完成\n",
|
||||
"任务 20250905 完成\n",
|
||||
"任务 20250904 完成\n",
|
||||
"任务 20250903 完成\n",
|
||||
"任务 20250902 完成\n",
|
||||
"任务 20250901 完成\n",
|
||||
"任务 20250829 完成\n",
|
||||
"任务 20250828 完成\n",
|
||||
"任务 20250827 完成\n",
|
||||
"任务 20250826 完成\n",
|
||||
"任务 20250825 完成\n",
|
||||
"任务 20250822 完成\n",
|
||||
"任务 20250821 完成\n",
|
||||
"任务 20250820 完成\n",
|
||||
"任务 20250819 完成\n",
|
||||
"任务 20250818 完成\n",
|
||||
"任务 20250815 完成\n",
|
||||
"任务 20250814 完成\n",
|
||||
"任务 20250813 完成\n",
|
||||
"任务 20250812 完成\n",
|
||||
"任务 20250811 完成\n",
|
||||
"任务 20250808 完成\n",
|
||||
"任务 20250807 完成\n",
|
||||
"任务 20250806 完成\n",
|
||||
"任务 20250805 完成\n",
|
||||
"任务 20250804 完成\n",
|
||||
"任务 20250801 完成\n",
|
||||
"任务 20250731 完成\n",
|
||||
"任务 20250730 完成\n",
|
||||
"任务 20250729 完成\n",
|
||||
"任务 20250728 完成\n",
|
||||
"任务 20250725 完成\n",
|
||||
"任务 20250724 完成\n",
|
||||
"任务 20250723 完成\n",
|
||||
"任务 20250722 完成\n",
|
||||
"任务 20250721 完成\n",
|
||||
"任务 20250718 完成\n",
|
||||
"任务 20250717 完成\n",
|
||||
"任务 20250716 完成\n",
|
||||
"任务 20250715 完成\n",
|
||||
"任务 20250714 完成\n",
|
||||
"任务 20250711 完成\n",
|
||||
"任务 20250710 完成\n",
|
||||
"任务 20250709 完成\n",
|
||||
"任务 20250708 完成\n",
|
||||
"任务 20250707 完成\n",
|
||||
"任务 20250704 完成\n",
|
||||
"任务 20250703 完成\n",
|
||||
"任务 20250702 完成\n",
|
||||
"任务 20250701 完成\n",
|
||||
"任务 20250630 完成\n",
|
||||
"任务 20250627 完成\n",
|
||||
"任务 20250626 完成\n",
|
||||
"任务 20250625 完成\n",
|
||||
"任务 20250624 完成\n",
|
||||
"任务 20250623 完成\n",
|
||||
"任务 20250620 完成\n",
|
||||
"任务 20250619 完成\n",
|
||||
"任务 20250618 完成\n",
|
||||
"任务 20250617 完成\n",
|
||||
"任务 20250616 完成\n",
|
||||
"任务 20250613 完成\n",
|
||||
"任务 20250612 完成\n",
|
||||
"任务 20250611 完成\n",
|
||||
"任务 20250610 完成\n",
|
||||
"任务 20250609 完成\n",
|
||||
"任务 20250606 完成\n",
|
||||
"任务 20250605 完成\n",
|
||||
"任务 20250604 完成\n",
|
||||
"任务 20250603 完成\n",
|
||||
"任务 20250530 完成\n",
|
||||
"任务 20250529 完成\n",
|
||||
"任务 20250528 完成\n",
|
||||
"任务 20250527 完成\n",
|
||||
"任务 20250526 完成\n",
|
||||
"任务 20250523 完成\n",
|
||||
"任务 20250522 完成\n",
|
||||
"任务 20250521 完成\n",
|
||||
"任务 20250520 完成\n",
|
||||
"任务 20250519 完成\n",
|
||||
"任务 20250516 完成\n",
|
||||
"任务 20250515 完成\n",
|
||||
"任务 20250514 完成\n",
|
||||
"任务 20250513 完成\n",
|
||||
"任务 20250512 完成\n",
|
||||
"任务 20250509 完成\n",
|
||||
"任务 20250508 完成\n",
|
||||
"任务 20250507 完成\n",
|
||||
"任务 20250506 完成\n",
|
||||
"任务 20250430 完成\n",
|
||||
"任务 20250429 完成\n",
|
||||
"任务 20250428 完成\n",
|
||||
"任务 20250425 完成\n",
|
||||
"任务 20250424 完成\n",
|
||||
"任务 20250423 完成\n",
|
||||
"任务 20250421 完成\n",
|
||||
"任务 20250422 完成\n",
|
||||
"任务 20250421 完成\n",
|
||||
"任务 20250418 完成\n",
|
||||
"任务 20250417 完成\n",
|
||||
"任务 20250416 完成\n",
|
||||
"任务 20250414 完成\n",
|
||||
"任务 20250415 完成\n",
|
||||
"任务 20250414 完成\n",
|
||||
"任务 20250411 完成\n",
|
||||
"任务 20250410 完成\n",
|
||||
"任务 20250409 完成\n",
|
||||
@@ -156,11 +321,11 @@
|
||||
"任务 20250318 完成\n",
|
||||
"任务 20250317 完成\n",
|
||||
"任务 20250314 完成\n",
|
||||
"任务 20250312 完成\n",
|
||||
"任务 20250313 完成\n",
|
||||
"任务 20250312 完成\n",
|
||||
"任务 20250311 完成\n",
|
||||
"任务 20250307 完成\n",
|
||||
"任务 20250310 完成\n",
|
||||
"任务 20250307 完成\n",
|
||||
"任务 20250306 完成\n",
|
||||
"任务 20250305 完成\n",
|
||||
"任务 20250304 完成\n",
|
||||
@@ -225,8 +390,8 @@
|
||||
"任务 20241202 完成\n",
|
||||
"任务 20241129 完成\n",
|
||||
"任务 20241128 完成\n",
|
||||
"任务 20241126 完成\n",
|
||||
"任务 20241127 完成\n",
|
||||
"任务 20241126 完成\n",
|
||||
"任务 20241125 完成\n",
|
||||
"任务 20241122 完成\n",
|
||||
"任务 20241121 完成\n",
|
||||
@@ -253,8 +418,8 @@
|
||||
"任务 20241023 完成\n",
|
||||
"任务 20241022 完成\n",
|
||||
"任务 20241021 完成\n",
|
||||
"任务 20241017 完成\n",
|
||||
"任务 20241018 完成\n",
|
||||
"任务 20241017 完成\n",
|
||||
"任务 20241016 完成\n",
|
||||
"任务 20241015 完成\n",
|
||||
"任务 20241014 完成\n",
|
||||
@@ -262,11 +427,11 @@
|
||||
"任务 20241010 完成\n",
|
||||
"任务 20241009 完成\n",
|
||||
"任务 20241008 完成\n",
|
||||
"任务 20240930 完成\n",
|
||||
"任务 20240927 完成\n",
|
||||
"任务 20240930 完成\n",
|
||||
"任务 20240926 完成\n",
|
||||
"任务 20240924 完成\n",
|
||||
"任务 20240925 完成\n",
|
||||
"任务 20240924 完成\n",
|
||||
"任务 20240923 完成\n",
|
||||
"任务 20240920 完成\n",
|
||||
"任务 20240919 完成\n",
|
||||
@@ -334,8 +499,8 @@
|
||||
"任务 20240621 完成\n",
|
||||
"任务 20240620 完成\n",
|
||||
"任务 20240619 完成\n",
|
||||
"任务 20240617 完成\n",
|
||||
"任务 20240618 完成\n",
|
||||
"任务 20240617 完成\n",
|
||||
"任务 20240614 完成\n",
|
||||
"任务 20240613 完成\n",
|
||||
"任务 20240612 完成\n",
|
||||
@@ -380,14 +545,14 @@
|
||||
"任务 20240412 完成\n",
|
||||
"任务 20240411 完成\n",
|
||||
"任务 20240410 完成\n",
|
||||
"任务 20240408 完成\n",
|
||||
"任务 20240409 完成\n",
|
||||
"任务 20240408 完成\n",
|
||||
"任务 20240403 完成\n",
|
||||
"任务 20240402 完成\n",
|
||||
"任务 20240401 完成\n",
|
||||
"任务 20240329 完成\n",
|
||||
"任务 20240327 完成\n",
|
||||
"任务 20240328 完成\n",
|
||||
"任务 20240327 完成\n",
|
||||
"任务 20240326 完成\n",
|
||||
"任务 20240325 完成\n",
|
||||
"任务 20240322 完成\n",
|
||||
@@ -416,10 +581,10 @@
|
||||
"任务 20240220 完成\n",
|
||||
"任务 20240219 完成\n",
|
||||
"任务 20240208 完成\n",
|
||||
"任务 20240206 完成\n",
|
||||
"任务 20240207 完成\n",
|
||||
"任务 20240202 完成\n",
|
||||
"任务 20240206 完成\n",
|
||||
"任务 20240205 完成\n",
|
||||
"任务 20240202 完成\n",
|
||||
"任务 20240201 完成\n",
|
||||
"任务 20240131 完成\n",
|
||||
"任务 20240130 完成\n",
|
||||
@@ -434,24 +599,24 @@
|
||||
"任务 20240117 完成\n",
|
||||
"任务 20240116 完成\n",
|
||||
"任务 20240115 完成\n",
|
||||
"任务 20240111 完成\n",
|
||||
"任务 20240112 完成\n",
|
||||
"任务 20240111 完成\n",
|
||||
"任务 20240110 完成\n",
|
||||
"任务 20240109 完成\n",
|
||||
"任务 20240108 完成\n",
|
||||
"任务 20240105 完成\n",
|
||||
"任务 20240104 完成\n",
|
||||
"任务 20240103 完成\n",
|
||||
"任务 20231229 完成\n",
|
||||
"任务 20240102 完成\n",
|
||||
"任务 20231229 完成\n",
|
||||
"任务 20231228 完成\n",
|
||||
"任务 20231227 完成\n",
|
||||
"任务 20231226 完成\n",
|
||||
"任务 20231225 完成\n",
|
||||
"任务 20231222 完成\n",
|
||||
"任务 20231221 完成\n",
|
||||
"任务 20231219 完成\n",
|
||||
"任务 20231220 完成\n",
|
||||
"任务 20231219 完成\n",
|
||||
"任务 20231218 完成\n",
|
||||
"任务 20231215 完成\n",
|
||||
"任务 20231214 完成\n",
|
||||
@@ -491,8 +656,8 @@
|
||||
"任务 20231027 完成\n",
|
||||
"任务 20231026 完成\n",
|
||||
"任务 20231025 完成\n",
|
||||
"任务 20231024 完成\n",
|
||||
"任务 20231023 完成\n",
|
||||
"任务 20231024 完成\n",
|
||||
"任务 20231020 完成\n",
|
||||
"任务 20231019 完成\n",
|
||||
"任务 20231018 完成\n",
|
||||
@@ -516,24 +681,24 @@
|
||||
"任务 20230914 完成\n",
|
||||
"任务 20230913 完成\n",
|
||||
"任务 20230912 完成\n",
|
||||
"任务 20230911 完成\n",
|
||||
"任务 20230908 完成\n",
|
||||
"任务 20230911 完成\n",
|
||||
"任务 20230907 完成\n",
|
||||
"任务 20230906 完成\n",
|
||||
"任务 20230905 完成\n",
|
||||
"任务 20230904 完成\n",
|
||||
"任务 20230901 完成\n",
|
||||
"任务 20230831 完成\n",
|
||||
"任务 20230830 完成\n",
|
||||
"任务 20230831 完成\n",
|
||||
"任务 20230829 完成\n",
|
||||
"任务 20230828 完成\n",
|
||||
"任务 20230825 完成\n",
|
||||
"任务 20230824 完成\n",
|
||||
"任务 20230825 完成\n",
|
||||
"任务 20230823 完成\n",
|
||||
"任务 20230822 完成\n",
|
||||
"任务 20230821 完成\n",
|
||||
"任务 20230817 完成\n",
|
||||
"任务 20230818 完成\n",
|
||||
"任务 20230817 完成\n",
|
||||
"任务 20230816 完成\n",
|
||||
"任务 20230815 完成\n",
|
||||
"任务 20230814 完成\n",
|
||||
@@ -622,8 +787,8 @@
|
||||
"任务 20230412 完成\n",
|
||||
"任务 20230411 完成\n",
|
||||
"任务 20230410 完成\n",
|
||||
"任务 20230406 完成\n",
|
||||
"任务 20230407 完成\n",
|
||||
"任务 20230406 完成\n",
|
||||
"任务 20230404 完成\n",
|
||||
"任务 20230403 完成\n",
|
||||
"任务 20230331 完成\n",
|
||||
@@ -640,12 +805,12 @@
|
||||
"任务 20230316 完成\n",
|
||||
"任务 20230315 完成\n",
|
||||
"任务 20230314 完成\n",
|
||||
"任务 20230310 完成\n",
|
||||
"任务 20230313 完成\n",
|
||||
"任务 20230308 完成\n",
|
||||
"任务 20230310 完成\n",
|
||||
"任务 20230309 完成\n",
|
||||
"任务 20230306 完成\n",
|
||||
"任务 20230308 完成\n",
|
||||
"任务 20230307 完成\n",
|
||||
"任务 20230306 完成\n",
|
||||
"任务 20230303 完成\n",
|
||||
"任务 20230302 完成\n",
|
||||
"任务 20230301 完成\n",
|
||||
@@ -730,8 +895,8 @@
|
||||
"任务 20221102 完成\n",
|
||||
"任务 20221101 完成\n",
|
||||
"任务 20221031 完成\n",
|
||||
"任务 20221027 完成\n",
|
||||
"任务 20221028 完成\n",
|
||||
"任务 20221027 完成\n",
|
||||
"任务 20221026 完成\n",
|
||||
"任务 20221025 完成\n",
|
||||
"任务 20221024 完成\n",
|
||||
@@ -808,8 +973,8 @@
|
||||
"任务 20220707 完成\n",
|
||||
"任务 20220706 完成\n",
|
||||
"任务 20220705 完成\n",
|
||||
"任务 20220701 完成\n",
|
||||
"任务 20220704 完成\n",
|
||||
"任务 20220701 完成\n",
|
||||
"任务 20220630 完成\n",
|
||||
"任务 20220629 完成\n",
|
||||
"任务 20220628 完成\n",
|
||||
@@ -896,11 +1061,11 @@
|
||||
"任务 20220225 完成\n",
|
||||
"任务 20220224 完成\n",
|
||||
"任务 20220223 完成\n",
|
||||
"任务 20220221 完成\n",
|
||||
"任务 20220222 完成\n",
|
||||
"任务 20220221 完成\n",
|
||||
"任务 20220218 完成\n",
|
||||
"任务 20220216 完成\n",
|
||||
"任务 20220217 完成\n",
|
||||
"任务 20220216 完成\n",
|
||||
"任务 20220215 完成\n",
|
||||
"任务 20220214 完成\n",
|
||||
"任务 20220211 完成\n",
|
||||
@@ -909,16 +1074,16 @@
|
||||
"任务 20220208 完成\n",
|
||||
"任务 20220207 完成\n",
|
||||
"任务 20220128 完成\n",
|
||||
"任务 20220127 完成\n",
|
||||
"任务 20220126 完成\n",
|
||||
"任务 20220127 完成\n",
|
||||
"任务 20220125 完成\n",
|
||||
"任务 20220124 完成\n",
|
||||
"任务 20220121 完成\n",
|
||||
"任务 20220120 完成\n",
|
||||
"任务 20220119 完成\n",
|
||||
"任务 20220117 完成\n",
|
||||
"任务 20220118 完成\n",
|
||||
"任务 20220114 完成\n",
|
||||
"任务 20220117 完成\n",
|
||||
"任务 20220113 完成\n",
|
||||
"任务 20220112 完成\n",
|
||||
"任务 20220111 完成\n",
|
||||
@@ -973,8 +1138,8 @@
|
||||
"任务 20211102 完成\n",
|
||||
"任务 20211101 完成\n",
|
||||
"任务 20211029 完成\n",
|
||||
"任务 20211027 完成\n",
|
||||
"任务 20211028 完成\n",
|
||||
"任务 20211027 完成\n",
|
||||
"任务 20211026 完成\n",
|
||||
"任务 20211025 完成\n",
|
||||
"任务 20211022 完成\n",
|
||||
@@ -1043,8 +1208,8 @@
|
||||
"任务 20210716 完成\n",
|
||||
"任务 20210715 完成\n",
|
||||
"任务 20210714 完成\n",
|
||||
"任务 20210712 完成\n",
|
||||
"任务 20210713 完成\n",
|
||||
"任务 20210712 完成\n",
|
||||
"任务 20210709 完成\n",
|
||||
"任务 20210708 完成\n",
|
||||
"任务 20210707 完成\n",
|
||||
@@ -1063,8 +1228,8 @@
|
||||
"任务 20210618 完成\n",
|
||||
"任务 20210617 完成\n",
|
||||
"任务 20210616 完成\n",
|
||||
"任务 20210611 完成\n",
|
||||
"任务 20210615 完成\n",
|
||||
"任务 20210611 完成\n",
|
||||
"任务 20210610 完成\n",
|
||||
"任务 20210609 完成\n",
|
||||
"任务 20210608 完成\n",
|
||||
@@ -1162,8 +1327,8 @@
|
||||
"任务 20210118 完成\n",
|
||||
"任务 20210115 完成\n",
|
||||
"任务 20210114 完成\n",
|
||||
"任务 20210112 完成\n",
|
||||
"任务 20210113 完成\n",
|
||||
"任务 20210112 完成\n",
|
||||
"任务 20210111 完成\n",
|
||||
"任务 20210108 完成\n",
|
||||
"任务 20210107 完成\n",
|
||||
@@ -1230,8 +1395,8 @@
|
||||
"任务 20201013 完成\n",
|
||||
"任务 20201012 完成\n",
|
||||
"任务 20201009 完成\n",
|
||||
"任务 20200930 完成\n",
|
||||
"任务 20200929 完成\n",
|
||||
"任务 20200930 完成\n",
|
||||
"任务 20200928 完成\n",
|
||||
"任务 20200925 完成\n",
|
||||
"任务 20200924 完成\n",
|
||||
@@ -1272,8 +1437,8 @@
|
||||
"任务 20200806 完成\n",
|
||||
"任务 20200805 完成\n",
|
||||
"任务 20200804 完成\n",
|
||||
"任务 20200731 完成\n",
|
||||
"任务 20200803 完成\n",
|
||||
"任务 20200731 完成\n",
|
||||
"任务 20200730 完成\n",
|
||||
"任务 20200729 完成\n",
|
||||
"任务 20200728 完成\n",
|
||||
@@ -1288,8 +1453,8 @@
|
||||
"任务 20200715 完成\n",
|
||||
"任务 20200714 完成\n",
|
||||
"任务 20200713 完成\n",
|
||||
"任务 20200709 完成\n",
|
||||
"任务 20200710 完成\n",
|
||||
"任务 20200709 完成\n",
|
||||
"任务 20200708 完成\n",
|
||||
"任务 20200707 完成\n",
|
||||
"任务 20200706 完成\n",
|
||||
@@ -1320,10 +1485,10 @@
|
||||
"任务 20200528 完成\n",
|
||||
"任务 20200527 完成\n",
|
||||
"任务 20200526 完成\n",
|
||||
"任务 20200522 完成\n",
|
||||
"任务 20200525 完成\n",
|
||||
"任务 20200520 完成\n",
|
||||
"任务 20200522 完成\n",
|
||||
"任务 20200521 完成\n",
|
||||
"任务 20200520 完成\n",
|
||||
"任务 20200519 完成\n",
|
||||
"任务 20200518 完成\n",
|
||||
"任务 20200515 完成\n",
|
||||
@@ -1514,8 +1679,8 @@
|
||||
"任务 20190807 完成\n",
|
||||
"任务 20190806 完成\n",
|
||||
"任务 20190805 完成\n",
|
||||
"任务 20190801 完成\n",
|
||||
"任务 20190802 完成\n",
|
||||
"任务 20190801 完成\n",
|
||||
"任务 20190731 完成\n",
|
||||
"任务 20190730 完成\n",
|
||||
"任务 20190729 完成\n",
|
||||
@@ -1526,8 +1691,8 @@
|
||||
"任务 20190722 完成\n",
|
||||
"任务 20190719 完成\n",
|
||||
"任务 20190718 完成\n",
|
||||
"任务 20190716 完成\n",
|
||||
"任务 20190717 完成\n",
|
||||
"任务 20190716 完成\n",
|
||||
"任务 20190715 完成\n",
|
||||
"任务 20190712 完成\n",
|
||||
"任务 20190711 完成\n",
|
||||
@@ -1660,8 +1825,8 @@
|
||||
"任务 20181228 完成\n",
|
||||
"任务 20181227 完成\n",
|
||||
"任务 20181226 完成\n",
|
||||
"任务 20181224 完成\n",
|
||||
"任务 20181225 完成\n",
|
||||
"任务 20181224 完成\n",
|
||||
"任务 20181221 完成\n",
|
||||
"任务 20181220 完成\n",
|
||||
"任务 20181219 完成\n",
|
||||
@@ -1800,14 +1965,14 @@
|
||||
"任务 20180606 完成\n",
|
||||
"任务 20180605 完成\n",
|
||||
"任务 20180604 完成\n",
|
||||
"任务 20180531 完成\n",
|
||||
"任务 20180601 完成\n",
|
||||
"任务 20180531 完成\n",
|
||||
"任务 20180530 完成\n",
|
||||
"任务 20180529 完成\n",
|
||||
"任务 20180528 完成\n",
|
||||
"任务 20180525 完成\n",
|
||||
"任务 20180523 完成\n",
|
||||
"任务 20180524 完成\n",
|
||||
"任务 20180523 完成\n",
|
||||
"任务 20180522 完成\n",
|
||||
"任务 20180521 完成\n",
|
||||
"任务 20180518 完成\n",
|
||||
@@ -1854,8 +2019,8 @@
|
||||
"任务 20180316 完成\n",
|
||||
"任务 20180315 完成\n",
|
||||
"任务 20180314 完成\n",
|
||||
"任务 20180312 完成\n",
|
||||
"任务 20180313 完成\n",
|
||||
"任务 20180312 完成\n",
|
||||
"任务 20180309 完成\n",
|
||||
"任务 20180308 完成\n",
|
||||
"任务 20180307 完成\n",
|
||||
@@ -2073,8 +2238,8 @@
|
||||
"任务 20170425 完成\n",
|
||||
"任务 20170424 完成\n",
|
||||
"任务 20170421 完成\n",
|
||||
"任务 20170419 完成\n",
|
||||
"任务 20170420 完成\n",
|
||||
"任务 20170419 完成\n",
|
||||
"任务 20170418 完成\n",
|
||||
"任务 20170417 完成\n",
|
||||
"任务 20170414 完成\n",
|
||||
@@ -2103,8 +2268,8 @@
|
||||
"任务 20170310 完成\n",
|
||||
"任务 20170309 完成\n",
|
||||
"任务 20170308 完成\n",
|
||||
"任务 20170306 完成\n",
|
||||
"任务 20170307 完成\n",
|
||||
"任务 20170306 完成\n",
|
||||
"任务 20170303 完成\n",
|
||||
"任务 20170302 完成\n",
|
||||
"任务 20170301 完成\n",
|
||||
@@ -2154,7 +2319,7 @@
|
||||
"from concurrent.futures import ThreadPoolExecutor, as_completed\n",
|
||||
"\n",
|
||||
"# 获取交易日历\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250601')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260101')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal['cal_date'].tolist() # 获取所有交易日期列表\n",
|
||||
"\n",
|
||||
@@ -2180,7 +2345,7 @@
|
||||
"\n",
|
||||
"\n",
|
||||
"# 遍历每个交易日期并获取数据\n",
|
||||
"with ThreadPoolExecutor(max_workers=2) as executor:\n",
|
||||
"with ThreadPoolExecutor(max_workers=4) as executor:\n",
|
||||
" future_to_date = {executor.submit(get_data, td): td for td in trade_dates}\n",
|
||||
"\n",
|
||||
" for future in as_completed(future_to_date):\n",
|
||||
@@ -2208,7 +2373,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"execution_count": 5,
|
||||
"id": "97fdf8be-a86c-4404-bf0c-701f002cd81c",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -2222,58 +2387,58 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"0 603848.SH 20250430 14.36 0.5401 4.6897 \n",
|
||||
"1 300290.SZ 20250430 16.30 2.8540 3.5686 \n",
|
||||
"2 603877.SH 20250430 15.90 0.3794 1.2707 \n",
|
||||
"3 834639.BJ 20250430 8.37 6.1158 7.8866 \n",
|
||||
"4 000909.SZ 20250430 5.72 0.6104 1.0424 \n",
|
||||
"0 603633.SH 20251219 10.07 2.0093 3.0279 \n",
|
||||
"1 001323.SZ 20251219 26.33 1.0493 1.1340 \n",
|
||||
"2 000404.SZ 20251219 6.88 0.8559 1.2359 \n",
|
||||
"3 002052.SZ 20251219 12.10 2.2154 3.1269 \n",
|
||||
"4 002034.SZ 20251219 15.95 0.6112 1.3289 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"8599133 600708.SH 20170103 9.03 0.7694 1.0169 \n",
|
||||
"8599134 600712.SH 20170103 10.29 0.5859 0.8028 \n",
|
||||
"8599135 001872.SZ 20170103 19.33 1.0970 5.4258 \n",
|
||||
"8599136 001914.SZ 20170103 12.37 3.2627 6.6991 \n",
|
||||
"8599137 302132.SZ 20170103 23.28 0.4912 1.5149 \n",
|
||||
"9449465 600708.SH 20170103 9.03 0.7694 1.0169 \n",
|
||||
"9449466 600712.SH 20170103 10.29 0.5859 0.8028 \n",
|
||||
"9449467 001872.SZ 20170103 19.33 1.0970 5.4258 \n",
|
||||
"9449468 001914.SZ 20170103 12.37 3.2627 6.6991 \n",
|
||||
"9449469 302132.SZ 20170103 23.28 0.4912 1.5149 \n",
|
||||
"\n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm \\\n",
|
||||
"0 1.31 23.3421 25.6176 2.3433 3.7254 3.8065 \n",
|
||||
"1 1.00 NaN NaN 13.1076 13.5867 13.5756 \n",
|
||||
"2 0.98 29.1494 33.6975 1.6522 1.1075 1.1304 \n",
|
||||
"3 0.87 70.0984 215.1863 2.0171 0.8405 0.8329 \n",
|
||||
"4 0.55 NaN NaN 2.3539 7.7727 8.2925 \n",
|
||||
"... ... ... ... ... ... ... \n",
|
||||
"8599133 0.85 23.3367 22.2458 1.4847 0.9613 0.9248 \n",
|
||||
"8599134 0.67 202.4855 287.1454 5.1852 2.3682 2.5386 \n",
|
||||
"8599135 0.77 23.6158 23.1883 2.7052 6.6556 6.5584 \n",
|
||||
"8599136 1.02 20.5631 15.1595 2.1186 1.4950 1.2600 \n",
|
||||
"8599137 0.74 91.3908 84.6980 6.9391 8.9531 8.8570 \n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"0 0.90 58.4795 266.7119 2.2164 2.9326 2.7555 0.5065 \n",
|
||||
"1 0.65 14.9293 16.0911 2.5942 2.0447 2.0882 6.0585 \n",
|
||||
"2 0.82 10.6360 10.5440 1.1261 0.4002 0.4118 3.6337 \n",
|
||||
"3 1.10 130.7943 28.8305 27.3538 15.1883 8.9348 0.0000 \n",
|
||||
"4 0.63 12.3417 11.5393 1.0093 2.1815 2.0983 3.1024 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"9449465 0.85 23.3367 22.2458 1.4847 0.9613 0.9248 1.1074 \n",
|
||||
"9449466 0.67 202.4855 287.1454 5.1852 2.3682 2.5386 0.1555 \n",
|
||||
"9449467 0.77 23.6158 23.1883 2.7052 6.6556 6.5584 2.1211 \n",
|
||||
"9449468 1.02 20.5631 15.1595 2.1186 1.4950 1.2600 0.4042 \n",
|
||||
"9449469 0.74 91.3908 84.6980 6.9391 8.9531 8.8570 0.2291 \n",
|
||||
"\n",
|
||||
" dv_ratio dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"0 2.0904 2.0904 40391.1511 40240.6511 4634.6511 5.800169e+05 \n",
|
||||
"1 0.0000 NaN 63973.2569 63922.1969 51122.1969 1.042764e+06 \n",
|
||||
"2 3.7471 3.7471 47382.5333 46932.3226 14014.3219 7.533823e+05 \n",
|
||||
"3 NaN NaN 20160.0000 11721.5883 9089.7537 1.687392e+05 \n",
|
||||
"4 0.0000 NaN 43771.4245 43771.0570 25634.2299 2.503725e+05 \n",
|
||||
"... ... ... ... ... ... ... \n",
|
||||
"8599133 1.1074 1.1074 131871.9966 75088.9215 56812.2811 1.190804e+06 \n",
|
||||
"8599134 0.1555 0.1555 54465.5360 53795.9475 39266.3119 5.604504e+05 \n",
|
||||
"8599135 2.1211 2.1211 64476.3730 46486.6050 9398.8050 1.246328e+06 \n",
|
||||
"8599136 0.4042 0.4042 66696.1416 66678.0666 32475.1786 8.250313e+05 \n",
|
||||
"8599137 0.2291 0.2291 39384.0333 30419.3588 9862.3809 9.168603e+05 \n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"0 0.2658 42681.0818 42681.0818 28323.2496 4.297985e+05 \n",
|
||||
"1 1.6997 43508.0764 8969.4954 8299.8264 1.145568e+06 \n",
|
||||
"2 4.3605 69599.5979 69271.9572 47972.4600 4.788452e+05 \n",
|
||||
"3 NaN 75243.9694 68938.7155 48843.7703 9.104520e+05 \n",
|
||||
"4 3.0720 43398.4982 43183.1194 19861.7302 6.922060e+05 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"9449465 1.1074 131871.9966 75088.9215 56812.2811 1.190804e+06 \n",
|
||||
"9449466 0.1555 54465.5360 53795.9475 39266.3119 5.604504e+05 \n",
|
||||
"9449467 2.1211 64476.3730 46486.6050 9398.8050 1.246328e+06 \n",
|
||||
"9449468 0.4042 66696.1416 66678.0666 32475.1786 8.250313e+05 \n",
|
||||
"9449469 0.2291 39384.0333 30419.3588 9862.3809 9.168603e+05 \n",
|
||||
"\n",
|
||||
" circ_mv is_st \n",
|
||||
"0 5.778557e+05 False \n",
|
||||
"1 1.041932e+06 False \n",
|
||||
"2 7.462239e+05 False \n",
|
||||
"3 9.810969e+04 False \n",
|
||||
"4 2.503704e+05 True \n",
|
||||
"... ... ... \n",
|
||||
"8599133 6.780530e+05 False \n",
|
||||
"8599134 5.535603e+05 False \n",
|
||||
"8599135 8.985861e+05 False \n",
|
||||
"8599136 8.248077e+05 False \n",
|
||||
"8599137 7.081627e+05 False \n",
|
||||
" circ_mv is_st \n",
|
||||
"0 429798.4937 False \n",
|
||||
"1 236166.8139 False \n",
|
||||
"2 476591.0655 False \n",
|
||||
"3 834158.4576 False \n",
|
||||
"4 688770.7544 False \n",
|
||||
"... ... ... \n",
|
||||
"9449465 678052.9611 False \n",
|
||||
"9449466 553560.2998 False \n",
|
||||
"9449467 898586.0747 False \n",
|
||||
"9449468 824807.6838 False \n",
|
||||
"9449469 708162.6729 False \n",
|
||||
"\n",
|
||||
"[8599138 rows x 19 columns]\n"
|
||||
"[9449470 rows x 19 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2284,7 +2449,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"execution_count": 6,
|
||||
"id": "2b58a8bf-ffc5-4482-8e4d-bf24da9277de",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -2303,14 +2468,14 @@
|
||||
],
|
||||
"source": [
|
||||
"# 将数据保存为 HDF5 文件(table 格式)\n",
|
||||
"all_daily_data_df.to_hdf('../../data/daily_basic.h5', key='daily_basic', mode='w', format='table', data_columns=True)\n",
|
||||
"all_daily_data_df.to_hdf('/mnt/d/PyProject/NewStock/data/daily_basic.h5', key='daily_basic', mode='w', format='table', data_columns=True)\n",
|
||||
"\n",
|
||||
"print(\"所有每日基础数据获取并保存完毕!\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
"execution_count": 7,
|
||||
"id": "57ac1d86-5ce8-4bc9-812f-b45dcc2a3b4c",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -2324,58 +2489,58 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"2091 603021.SH 20250430 3.01 12.8015 21.6289 \n",
|
||||
"9902 603021.SH 20250429 2.94 0.1629 0.2752 \n",
|
||||
"12107 603021.SH 20250428 3.09 0.4293 0.7253 \n",
|
||||
"21450 603021.SH 20250425 3.25 0.0824 0.1392 \n",
|
||||
"26081 603021.SH 20250424 3.42 0.0789 0.1333 \n",
|
||||
"4440 603021.SH 20251219 4.60 1.6344 2.7613 \n",
|
||||
"5462 603021.SH 20251217 4.73 2.0569 3.4752 \n",
|
||||
"11387 603021.SH 20251218 4.66 1.2692 2.1444 \n",
|
||||
"19849 603021.SH 20251216 4.50 3.1881 5.3865 \n",
|
||||
"21982 603021.SH 20251215 4.58 0.5972 1.0089 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"8586274 603021.SH 20170109 46.84 5.9412 6.5949 \n",
|
||||
"8589108 603021.SH 20170106 47.55 6.4862 7.1998 \n",
|
||||
"8591964 603021.SH 20170105 50.08 5.2368 5.8130 \n",
|
||||
"8594806 603021.SH 20170104 51.73 5.3821 5.9743 \n",
|
||||
"8598822 603021.SH 20170103 50.79 2.3801 2.6419 \n",
|
||||
"9436606 603021.SH 20170109 46.84 5.9412 6.5949 \n",
|
||||
"9439440 603021.SH 20170106 47.55 6.4862 7.1998 \n",
|
||||
"9442296 603021.SH 20170105 50.08 5.2368 5.8130 \n",
|
||||
"9445138 603021.SH 20170104 51.73 5.3821 5.9743 \n",
|
||||
"9449154 603021.SH 20170103 50.79 2.3801 2.6419 \n",
|
||||
"\n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"2091 76.02 NaN NaN 34.7434 2.3383 2.3991 0.0000 \n",
|
||||
"9902 0.27 NaN NaN 33.9354 2.2840 2.3433 0.0000 \n",
|
||||
"12107 0.42 NaN NaN 17.9426 2.4005 2.4005 0.0000 \n",
|
||||
"21450 0.05 NaN NaN 18.8716 2.5248 2.5248 0.0000 \n",
|
||||
"26081 0.04 NaN NaN 19.8587 2.6569 2.6569 0.0000 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"8586274 1.31 115.0810 102.7773 4.2761 7.9402 8.4422 0.3657 \n",
|
||||
"8589108 1.40 116.8254 104.3352 4.3409 8.0606 8.5702 0.3603 \n",
|
||||
"8591964 1.05 123.0413 109.8866 4.5719 8.4894 9.0262 0.3421 \n",
|
||||
"8594806 0.97 127.0952 113.5070 4.7225 8.7691 9.3236 0.3311 \n",
|
||||
"8598822 0.37 124.7857 111.4445 4.6367 8.6098 9.1541 0.3373 \n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"4440 0.84 NaN NaN NaN 3.5735 3.7322 0.0000 \n",
|
||||
"5462 1.23 NaN NaN NaN 3.6745 3.8377 0.0000 \n",
|
||||
"11387 0.70 NaN NaN NaN 3.6202 3.7809 0.0000 \n",
|
||||
"19849 2.60 NaN NaN NaN 3.4959 3.6510 0.0000 \n",
|
||||
"21982 0.45 NaN NaN NaN 3.5580 3.7160 0.0000 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"9436606 1.31 115.0810 102.7773 4.2761 7.9402 8.4422 0.3657 \n",
|
||||
"9439440 1.40 116.8254 104.3352 4.3409 8.0606 8.5702 0.3603 \n",
|
||||
"9442296 1.05 123.0413 109.8866 4.5719 8.4894 9.0262 0.3421 \n",
|
||||
"9445138 0.97 127.0952 113.5070 4.7225 8.7691 9.3236 0.3311 \n",
|
||||
"9449154 0.37 124.7857 111.4445 4.6367 8.6098 9.1541 0.3373 \n",
|
||||
"\n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"2091 NaN 31994.807 31994.807 18936.7934 96304.3691 \n",
|
||||
"9902 NaN 31994.807 31994.807 18936.7934 94064.7326 \n",
|
||||
"12107 NaN 31994.807 31994.807 18936.7934 98863.9536 \n",
|
||||
"21450 NaN 31994.807 31994.807 18936.7934 103983.1228 \n",
|
||||
"26081 NaN 31994.807 31994.807 18936.7934 109422.2399 \n",
|
||||
"4440 NaN 31994.807 31994.807 18936.7934 147176.1122 \n",
|
||||
"5462 NaN 31994.807 31994.807 18936.7934 151335.4371 \n",
|
||||
"11387 NaN 31994.807 31994.807 18936.7934 149095.8006 \n",
|
||||
"19849 NaN 31994.807 31994.807 18936.7934 143976.6315 \n",
|
||||
"21982 NaN 31994.807 31994.807 18936.7934 146536.2161 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"8586274 0.3657 12305.695 6396.000 5762.0400 576398.7538 \n",
|
||||
"8589108 0.3603 12305.695 6396.000 5762.0400 585135.7973 \n",
|
||||
"8591964 0.3421 12305.695 6396.000 5762.0400 616269.2056 \n",
|
||||
"8594806 0.3311 12305.695 6396.000 5762.0400 636573.6024 \n",
|
||||
"8598822 0.3373 12305.695 6396.000 5762.0400 625006.2491 \n",
|
||||
"9436606 0.3657 12305.695 6396.000 5762.0400 576398.7538 \n",
|
||||
"9439440 0.3603 12305.695 6396.000 5762.0400 585135.7973 \n",
|
||||
"9442296 0.3421 12305.695 6396.000 5762.0400 616269.2056 \n",
|
||||
"9445138 0.3311 12305.695 6396.000 5762.0400 636573.6024 \n",
|
||||
"9449154 0.3373 12305.695 6396.000 5762.0400 625006.2491 \n",
|
||||
"\n",
|
||||
" circ_mv is_st \n",
|
||||
"2091 96304.3691 True \n",
|
||||
"9902 94064.7326 True \n",
|
||||
"12107 98863.9536 True \n",
|
||||
"21450 103983.1228 True \n",
|
||||
"26081 109422.2399 True \n",
|
||||
"4440 147176.1122 True \n",
|
||||
"5462 151335.4371 True \n",
|
||||
"11387 149095.8006 True \n",
|
||||
"19849 143976.6315 True \n",
|
||||
"21982 146536.2161 True \n",
|
||||
"... ... ... \n",
|
||||
"8586274 299588.6400 False \n",
|
||||
"8589108 304129.8000 False \n",
|
||||
"8591964 320311.6800 False \n",
|
||||
"8594806 330865.0800 False \n",
|
||||
"8598822 324852.8400 False \n",
|
||||
"9436606 299588.6400 False \n",
|
||||
"9439440 304129.8000 False \n",
|
||||
"9442296 320311.6800 False \n",
|
||||
"9445138 330865.0800 False \n",
|
||||
"9449154 324852.8400 False \n",
|
||||
"\n",
|
||||
"[1932 rows x 19 columns]\n"
|
||||
"[2089 rows x 19 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2386,7 +2551,7 @@
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "new_trader",
|
||||
"display_name": "stock",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
@@ -2400,7 +2565,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.11"
|
||||
"version": "3.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -83,32 +83,32 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close open high low \\\n",
|
||||
"0 000905.SH 20251121 6817.4103 6955.7485 6986.7784 6817.4103 \n",
|
||||
"1 000905.SH 20251120 7061.9497 7174.1046 7180.7320 7056.9003 \n",
|
||||
"2 000905.SH 20251119 7122.7465 7141.2641 7178.1495 7086.1232 \n",
|
||||
"3 000905.SH 20251118 7151.0176 7215.0302 7230.5416 7118.4085 \n",
|
||||
"4 000905.SH 20251117 7235.3512 7248.9216 7262.3306 7202.5932 \n",
|
||||
"0 000905.SH 20260123 8590.1659 8422.3561 8590.1659 8417.7520 \n",
|
||||
"1 000905.SH 20260122 8387.5950 8355.6781 8396.1328 8337.1950 \n",
|
||||
"2 000905.SH 20260121 8340.1133 8196.5565 8351.4545 8196.5565 \n",
|
||||
"3 000905.SH 20260120 8247.8049 8307.6416 8342.8738 8142.1424 \n",
|
||||
"4 000905.SH 20260119 8287.9470 8199.4986 8318.3703 8195.0890 \n",
|
||||
"... ... ... ... ... ... ... \n",
|
||||
"13900 399006.SZ 20100607 1069.4680 1005.0280 1075.2250 1001.7020 \n",
|
||||
"13901 399006.SZ 20100604 1027.6810 989.6810 1027.6810 986.5040 \n",
|
||||
"13902 399006.SZ 20100603 998.3940 1002.3550 1026.7020 997.7750 \n",
|
||||
"13903 399006.SZ 20100602 997.1190 967.6090 997.1190 952.6110 \n",
|
||||
"13904 399006.SZ 20100601 973.2330 986.0150 994.7930 948.1180 \n",
|
||||
"14029 399006.SZ 20100607 1069.4680 1005.0280 1075.2250 1001.7020 \n",
|
||||
"14030 399006.SZ 20100604 1027.6810 989.6810 1027.6810 986.5040 \n",
|
||||
"14031 399006.SZ 20100603 998.3940 1002.3550 1026.7020 997.7750 \n",
|
||||
"14032 399006.SZ 20100602 997.1190 967.6090 997.1190 952.6110 \n",
|
||||
"14033 399006.SZ 20100601 973.2330 986.0150 994.7930 948.1180 \n",
|
||||
"\n",
|
||||
" pre_close change pct_chg vol amount \n",
|
||||
"0 7061.9497 -244.5394 -3.4628 2.089334e+08 3.109687e+08 \n",
|
||||
"1 7122.7465 -60.7968 -0.8536 1.596187e+08 2.541582e+08 \n",
|
||||
"2 7151.0176 -28.2711 -0.3953 1.627866e+08 2.567551e+08 \n",
|
||||
"3 7235.3512 -84.3336 -1.1656 2.022141e+08 3.065400e+08 \n",
|
||||
"4 7235.4617 -0.1105 -0.0015 2.030506e+08 3.108232e+08 \n",
|
||||
"0 8387.5950 202.5709 2.4151 3.196901e+08 6.394214e+08 \n",
|
||||
"1 8340.1133 47.4817 0.5693 2.688052e+08 5.461381e+08 \n",
|
||||
"2 8247.8049 92.3084 1.1192 2.433044e+08 5.175922e+08 \n",
|
||||
"3 8287.9470 -40.1421 -0.4843 2.898645e+08 5.881715e+08 \n",
|
||||
"4 8232.6740 55.2730 0.6714 2.614974e+08 5.609261e+08 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"13900 1027.6810 41.7870 4.0661 2.655275e+06 9.106095e+06 \n",
|
||||
"13901 998.3940 29.2870 2.9334 1.500295e+06 5.269441e+06 \n",
|
||||
"13902 997.1190 1.2750 0.1279 1.616805e+06 6.240835e+06 \n",
|
||||
"13903 973.2330 23.8860 2.4543 1.074628e+06 4.001206e+06 \n",
|
||||
"13904 1000.0000 -26.7670 -2.6767 1.356285e+06 4.924177e+06 \n",
|
||||
"14029 1027.6810 41.7870 4.0661 2.655275e+06 9.106095e+06 \n",
|
||||
"14030 998.3940 29.2870 2.9334 1.500295e+06 5.269441e+06 \n",
|
||||
"14031 997.1190 1.2750 0.1279 1.616805e+06 6.240835e+06 \n",
|
||||
"14032 973.2330 23.8860 2.4543 1.074628e+06 4.001206e+06 \n",
|
||||
"14033 1000.0000 -26.7670 -2.6767 1.356285e+06 4.924177e+06 \n",
|
||||
"\n",
|
||||
"[13905 rows x 11 columns]\n"
|
||||
"[14034 rows x 11 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -137,7 +137,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.2"
|
||||
"version": "3.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 1,
|
||||
"id": "f74ce078-f7e8-4733-a14c-14d8815a3626",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": 2,
|
||||
"id": "44dd8d87-e60b-49e5-aed9-efaa7f92d4fe",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -39,15 +39,15 @@
|
||||
"3 000006.SZ 20250312\n",
|
||||
"4 000007.SZ 20250312\n",
|
||||
"... ... ...\n",
|
||||
"21755 920978.BJ 20251117\n",
|
||||
"21756 920981.BJ 20251117\n",
|
||||
"21757 920982.BJ 20251117\n",
|
||||
"21758 920985.BJ 20251117\n",
|
||||
"21759 920992.BJ 20251117\n",
|
||||
"27277 920978.BJ 20260112\n",
|
||||
"27278 920981.BJ 20260112\n",
|
||||
"27279 920982.BJ 20260112\n",
|
||||
"27280 920985.BJ 20260112\n",
|
||||
"27281 920992.BJ 20260112\n",
|
||||
"\n",
|
||||
"[8385278 rows x 2 columns]\n",
|
||||
"20251120\n",
|
||||
"start_date: 20251121\n"
|
||||
"[8597722 rows x 2 columns]\n",
|
||||
"20260116\n",
|
||||
"start_date: 20260119\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -64,7 +64,7 @@
|
||||
" max_date = df['trade_date'].max()\n",
|
||||
"\n",
|
||||
"print(max_date)\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20251220')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260201')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n",
|
||||
"start_date = min(trade_dates)\n",
|
||||
@@ -73,7 +73,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 3,
|
||||
"id": "747acc47-0884-4f76-90fb-276f6494e31d",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -86,27 +86,16 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n"
|
||||
"任务 20260130 完成\n",
|
||||
"任务 20260129 完成\n",
|
||||
"任务 20260128 完成\n",
|
||||
"任务 20260127 完成\n",
|
||||
"任务 20260126 完成\n",
|
||||
"任务 20260123 完成\n",
|
||||
"任务 20260122 完成\n",
|
||||
"任务 20260121 完成\n",
|
||||
"任务 20260120 完成\n",
|
||||
"任务 20260119 完成\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -143,7 +132,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 4,
|
||||
"id": "c6765638-481f-40d8-a259-2e7b25362618",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
|
||||
@@ -32,22 +32,22 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date\n",
|
||||
"0 801001.SI 20250221\n",
|
||||
"1 801002.SI 20250221\n",
|
||||
"2 801003.SI 20250221\n",
|
||||
"3 801005.SI 20250221\n",
|
||||
"4 801010.SI 20250221\n",
|
||||
".. ... ...\n",
|
||||
"873 859811.SI 20251120\n",
|
||||
"874 859821.SI 20251120\n",
|
||||
"875 859822.SI 20251120\n",
|
||||
"876 859852.SI 20251120\n",
|
||||
"877 859951.SI 20251120\n",
|
||||
" ts_code trade_date\n",
|
||||
"0 801001.SI 20250221\n",
|
||||
"1 801002.SI 20250221\n",
|
||||
"2 801003.SI 20250221\n",
|
||||
"3 801005.SI 20250221\n",
|
||||
"4 801010.SI 20250221\n",
|
||||
"... ... ...\n",
|
||||
"2190 859811.SI 20260112\n",
|
||||
"2191 859821.SI 20260112\n",
|
||||
"2192 859822.SI 20260112\n",
|
||||
"2193 859852.SI 20260112\n",
|
||||
"2194 859951.SI 20260112\n",
|
||||
"\n",
|
||||
"[1123852 rows x 2 columns]\n",
|
||||
"20251120\n",
|
||||
"start_date: 20251121\n"
|
||||
"[1140973 rows x 2 columns]\n",
|
||||
"20260116\n",
|
||||
"start_date: 20260119\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -64,7 +64,7 @@
|
||||
" max_date = df['trade_date'].max()\n",
|
||||
"\n",
|
||||
"print(max_date)\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20251220')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260201')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n",
|
||||
"start_date = min(trade_dates)\n",
|
||||
@@ -86,27 +86,16 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n"
|
||||
"任务 20260130 完成\n",
|
||||
"任务 20260129 完成\n",
|
||||
"任务 20260128 完成\n",
|
||||
"任务 20260127 完成\n",
|
||||
"任务 20260126 完成\n",
|
||||
"任务 20260123 完成\n",
|
||||
"任务 20260122 完成\n",
|
||||
"任务 20260121 完成\n",
|
||||
"任务 20260120 完成\n",
|
||||
"任务 20260119 完成\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -188,7 +177,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.2"
|
||||
"version": "3.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -94,17 +94,17 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"Index: 9335158 entries, 0 to 21759\n",
|
||||
"Index: 9547667 entries, 0 to 27281\n",
|
||||
"Data columns (total 2 columns):\n",
|
||||
" # Column Dtype \n",
|
||||
"--- ------ ----- \n",
|
||||
" 0 ts_code object\n",
|
||||
" 1 trade_date object\n",
|
||||
"dtypes: object(2)\n",
|
||||
"memory usage: 213.7+ MB\n",
|
||||
"memory usage: 218.5+ MB\n",
|
||||
"None\n",
|
||||
"20251120\n",
|
||||
"20251121\n"
|
||||
"20260116\n",
|
||||
"20260119\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -121,7 +121,7 @@
|
||||
" max_date = df['trade_date'].max()\n",
|
||||
"\n",
|
||||
"print(max_date)\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20251220')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260201')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n",
|
||||
"start_date = min(trade_dates)\n",
|
||||
@@ -144,27 +144,22 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n"
|
||||
"任务 20260130 完成\n",
|
||||
"任务 20260129 完成\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20260127 完成\n",
|
||||
"任务 20260128 完成\n",
|
||||
"任务 20260126 完成\n",
|
||||
"任务 20260123 完成\n",
|
||||
"任务 20260122 完成\n",
|
||||
"任务 20260121 完成\n",
|
||||
"任务 20260120 完成\n",
|
||||
"任务 20260119 完成\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -234,59 +229,59 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"0 000559.SZ 20251121 11.64 4.8762 13.4563 \n",
|
||||
"1 002981.SZ 20251121 27.84 1.5833 4.5574 \n",
|
||||
"2 301053.SZ 20251121 32.50 1.0110 2.9907 \n",
|
||||
"3 603093.SH 20251121 18.29 0.7403 3.2151 \n",
|
||||
"4 600269.SH 20251121 5.25 0.8423 1.8459 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5439 600243.SH 20251121 4.78 1.7524 2.1078 \n",
|
||||
"5440 300759.SZ 20251121 28.39 1.0514 1.6405 \n",
|
||||
"5441 600054.SH 20251121 11.10 1.3130 3.1101 \n",
|
||||
"5442 603579.SH 20251121 23.85 2.2265 4.3412 \n",
|
||||
"5443 002528.SZ 20251121 3.03 1.9087 4.0726 \n",
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"0 301586.SZ 20260123 52.80 4.4195 6.0484 \n",
|
||||
"1 600871.SH 20260123 2.63 3.5599 17.1067 \n",
|
||||
"2 002067.SZ 20260123 5.91 9.5542 9.8833 \n",
|
||||
"3 601225.SH 20260123 21.41 0.4692 1.3502 \n",
|
||||
"4 688800.SH 20260123 90.22 4.3421 7.2546 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"27321 688659.SH 20260119 10.42 1.7256 3.1386 \n",
|
||||
"27322 301021.SZ 20260119 55.92 5.8451 10.3979 \n",
|
||||
"27323 300102.SZ 20260119 34.23 14.1090 22.0304 \n",
|
||||
"27324 300088.SZ 20260119 6.36 1.9148 2.3308 \n",
|
||||
"27325 002261.SZ 20260119 33.77 4.6567 5.1897 \n",
|
||||
"\n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"0 1.09 40.5790 38.2942 4.1055 2.9989 2.7785 1.2842 \n",
|
||||
"1 1.44 33.9003 28.1141 3.4000 2.2070 1.9328 0.9280 \n",
|
||||
"2 1.24 56.6010 98.7688 4.0251 4.4406 4.0870 0.2389 \n",
|
||||
"3 1.21 24.3641 24.7359 2.5390 1.9536 5.0927 0.3609 \n",
|
||||
"4 1.32 9.5849 6.9841 0.6165 2.0486 2.1055 3.0476 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"5439 1.37 NaN NaN 3.3110 8.8659 8.4702 0.0000 \n",
|
||||
"5440 0.86 28.1501 33.3780 3.4547 4.1124 3.7273 0.7056 \n",
|
||||
"5441 1.53 25.7012 28.5474 1.6912 4.1924 3.9403 1.8829 \n",
|
||||
"5442 1.23 25.2677 30.2644 1.7649 3.0372 3.0683 3.8598 \n",
|
||||
"5443 0.61 NaN NaN 35.8962 3.8438 6.1411 0.0000 \n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"0 0.98 43.6343 68.1615 3.4308 6.9893 5.8003 0.9091 \n",
|
||||
"1 1.91 78.9369 79.8327 5.2226 0.6148 0.6127 NaN \n",
|
||||
"2 0.80 122.3105 140.3743 1.3170 1.5908 1.5491 NaN \n",
|
||||
"3 1.02 9.2832 10.8507 2.1981 1.1272 1.1740 5.9699 \n",
|
||||
"4 0.79 105.8709 61.3816 8.0916 7.6847 5.8974 0.2971 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"27321 1.01 NaN NaN 3.1071 2.6478 2.4387 NaN \n",
|
||||
"27322 0.72 391.5181 198.4990 8.4757 19.1357 17.1491 0.1772 \n",
|
||||
"27323 0.69 327.8681 232.9793 7.4375 12.9485 9.5346 0.1313 \n",
|
||||
"27324 0.52 44.5231 45.4726 1.8179 1.4366 1.3961 0.9198 \n",
|
||||
"27325 0.38 NaN NaN 16.3185 10.3586 13.1287 NaN \n",
|
||||
"\n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"0 1.5410 331535.8444 331454.4214 120110.9588 3.859077e+06 \n",
|
||||
"1 0.9187 13748.6115 11941.3915 4148.6777 3.827613e+05 \n",
|
||||
"2 0.8961 8421.7803 7749.4689 2619.7738 2.737079e+05 \n",
|
||||
"3 0.4117 61006.5893 61006.5893 14046.4993 1.115811e+06 \n",
|
||||
"4 3.2381 233540.7014 233540.7014 106564.7107 1.226089e+06 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5439 NaN 43885.0000 43885.0000 36485.0000 2.097703e+05 \n",
|
||||
"5440 0.7045 177819.5525 141938.4613 90967.4278 5.048297e+06 \n",
|
||||
"5441 1.5495 72937.9440 51330.0000 21670.4250 8.096112e+05 \n",
|
||||
"5442 1.2636 20335.5564 20335.5564 10429.5044 4.850030e+05 \n",
|
||||
"5443 NaN 119867.5082 105021.9577 49219.1551 3.631985e+05 \n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"0 0.3788 8.297550e+03 5.291107e+03 3866.1069 4.381107e+05 \n",
|
||||
"1 NaN 1.895705e+06 1.354701e+06 281911.5987 4.985703e+06 \n",
|
||||
"2 NaN 1.474854e+05 1.337604e+05 129305.3853 8.716386e+05 \n",
|
||||
"3 5.4881 9.695000e+05 9.695000e+05 336903.9335 2.075700e+07 \n",
|
||||
"4 0.2971 2.056743e+04 2.056743e+04 12310.0935 1.855594e+06 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"27321 NaN 1.600000e+04 1.600000e+04 8796.6880 1.667200e+05 \n",
|
||||
"27322 0.1772 1.528528e+04 1.527393e+04 8586.0802 8.547528e+05 \n",
|
||||
"27323 0.1313 9.203339e+04 9.163399e+04 58685.2206 3.150303e+06 \n",
|
||||
"27324 0.9198 2.497734e+05 2.485504e+05 204186.7350 1.588559e+06 \n",
|
||||
"27325 NaN 1.259831e+05 1.145652e+05 102798.2760 4.254451e+06 \n",
|
||||
"\n",
|
||||
" circ_mv is_st \n",
|
||||
"0 3.858129e+06 False \n",
|
||||
"1 3.324483e+05 False \n",
|
||||
"2 2.518577e+05 False \n",
|
||||
"3 1.115811e+06 False \n",
|
||||
"4 1.226089e+06 False \n",
|
||||
"... ... ... \n",
|
||||
"5439 2.097703e+05 True \n",
|
||||
"5440 4.029633e+06 False \n",
|
||||
"5441 5.697630e+05 False \n",
|
||||
"5442 4.850030e+05 False \n",
|
||||
"5443 3.182165e+05 True \n",
|
||||
" circ_mv is_st \n",
|
||||
"0 2.793704e+05 False \n",
|
||||
"1 3.562864e+06 False \n",
|
||||
"2 7.905239e+05 False \n",
|
||||
"3 2.075700e+07 False \n",
|
||||
"4 1.855594e+06 False \n",
|
||||
"... ... ... \n",
|
||||
"27321 1.667200e+05 False \n",
|
||||
"27322 8.541180e+05 False \n",
|
||||
"27323 3.136631e+06 False \n",
|
||||
"27324 1.580780e+06 False \n",
|
||||
"27325 3.868868e+06 False \n",
|
||||
"\n",
|
||||
"[5444 rows x 19 columns]\n"
|
||||
"[27326 rows x 19 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -310,59 +305,59 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"55 000909.SZ 20251121 5.63 0.5785 0.9877 \n",
|
||||
"62 002485.SZ 20251121 4.61 0.9593 3.9009 \n",
|
||||
"134 300096.SZ 20251121 7.31 1.6490 1.9675 \n",
|
||||
"154 300343.SZ 20251121 5.48 4.1298 4.7019 \n",
|
||||
"166 600525.SH 20251121 3.53 1.8869 2.7053 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5340 300368.SZ 20251121 14.86 7.3423 10.4878 \n",
|
||||
"5381 300020.SZ 20251121 3.63 1.9995 2.2386 \n",
|
||||
"5383 000506.SZ 20251121 11.55 2.5685 3.8339 \n",
|
||||
"5439 600243.SH 20251121 4.78 1.7524 2.1078 \n",
|
||||
"5443 002528.SZ 20251121 3.03 1.9087 4.0726 \n",
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"54 000615.SZ 20260123 3.32 0.7420 0.9114 \n",
|
||||
"60 600228.SH 20260123 5.63 3.4275 4.8943 \n",
|
||||
"88 000430.SZ 20260123 7.30 1.4748 2.3665 \n",
|
||||
"96 603389.SH 20260123 48.20 0.8319 2.1042 \n",
|
||||
"110 000752.SZ 20260123 10.96 1.4753 1.8177 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"27130 002586.SZ 20260119 4.68 1.7164 2.9874 \n",
|
||||
"27154 600265.SH 20260119 19.29 0.2879 0.8066 \n",
|
||||
"27193 688287.SH 20260119 6.44 0.9802 1.9881 \n",
|
||||
"27195 300338.SZ 20260119 3.61 1.4127 1.5675 \n",
|
||||
"27223 000669.SZ 20260119 2.79 1.1437 1.4424 \n",
|
||||
"\n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"55 0.99 NaN NaN 2.4818 7.6504 7.4923 0.0 \n",
|
||||
"62 0.51 NaN NaN 2.1295 3.0458 3.2777 0.0 \n",
|
||||
"134 0.81 NaN 50.1694 8.9654 5.6290 6.2215 0.0 \n",
|
||||
"154 0.72 267.9489 106.2988 3.0411 6.7430 6.5207 0.0 \n",
|
||||
"166 0.72 NaN NaN 1.2373 0.5912 0.5968 0.0 \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"5340 0.94 NaN NaN 42.1875 42.9123 57.8502 0.0 \n",
|
||||
"5381 1.00 NaN NaN 1.0776 5.2649 21.5375 0.0 \n",
|
||||
"5383 0.78 NaN 239.4225 16.7572 32.2021 20.7023 0.0 \n",
|
||||
"5439 1.37 NaN NaN 3.3110 8.8659 8.4702 0.0 \n",
|
||||
"5443 0.61 NaN NaN 35.8962 3.8438 6.1411 0.0 \n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n",
|
||||
"54 0.72 NaN NaN NaN 5.4217 5.8063 NaN \n",
|
||||
"60 1.60 NaN NaN 5.6813 9.6204 6.3997 NaN \n",
|
||||
"88 1.11 NaN NaN 22.0731 13.6938 12.9047 NaN \n",
|
||||
"96 0.95 NaN NaN 54.1434 62.5718 60.6578 NaN \n",
|
||||
"110 0.96 110.3513 19.6504 4.7026 6.8589 6.4652 NaN \n",
|
||||
"... ... ... ... ... ... ... ... \n",
|
||||
"27130 1.55 NaN NaN 1.7970 2.1568 2.2158 NaN \n",
|
||||
"27154 0.79 NaN NaN 288.1848 5.6010 10.1170 NaN \n",
|
||||
"27193 0.59 NaN NaN 3.1120 26.5172 26.3673 NaN \n",
|
||||
"27195 0.58 NaN NaN NaN 8.5110 10.1280 NaN \n",
|
||||
"27223 0.84 NaN NaN NaN 1.4522 1.5001 NaN \n",
|
||||
"\n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"55 NaN 43771.4245 43771.0570 25634.2299 2.464331e+05 \n",
|
||||
"62 NaN 54400.0000 54400.0000 13377.7333 2.507840e+05 \n",
|
||||
"134 NaN 43000.0000 43000.0000 36039.3251 3.143300e+05 \n",
|
||||
"154 NaN 106896.9119 106621.9389 93649.7579 5.857951e+05 \n",
|
||||
"166 NaN 131878.0152 131878.0152 91981.1744 4.655294e+05 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5340 NaN 52894.3475 52894.3475 37030.2475 7.860100e+05 \n",
|
||||
"5381 NaN 79467.7974 76663.9584 68475.6577 2.884681e+05 \n",
|
||||
"5383 NaN 92901.7761 92858.4361 62210.1427 1.073016e+06 \n",
|
||||
"5439 NaN 43885.0000 43885.0000 36485.0000 2.097703e+05 \n",
|
||||
"5443 NaN 119867.5082 105021.9577 49219.1551 3.631985e+05 \n",
|
||||
" dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"54 NaN 178749.2693 92531.6398 75331.7788 5.934476e+05 \n",
|
||||
"60 NaN 41667.2427 41603.7177 29135.5053 2.345866e+05 \n",
|
||||
"88 NaN 80963.5372 37055.6486 23092.8156 5.910338e+05 \n",
|
||||
"96 NaN 26275.2000 26275.2000 10387.7487 1.266465e+06 \n",
|
||||
"110 NaN 26375.8491 26375.8491 21407.3042 2.890793e+05 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"27130 NaN 114422.3714 108751.8003 62484.0799 5.354967e+05 \n",
|
||||
"27154 NaN 12980.0000 12980.0000 4633.1947 2.503842e+05 \n",
|
||||
"27193 NaN 37051.5600 37051.5600 18267.2898 2.386120e+05 \n",
|
||||
"27195 NaN 40262.4692 34936.1242 31485.3582 1.453475e+05 \n",
|
||||
"27223 NaN 68040.8797 68040.8797 53950.9653 1.898341e+05 \n",
|
||||
"\n",
|
||||
" circ_mv is_st \n",
|
||||
"55 2.464311e+05 True \n",
|
||||
"62 2.507840e+05 True \n",
|
||||
"134 3.143300e+05 True \n",
|
||||
"154 5.842882e+05 True \n",
|
||||
"166 4.655294e+05 True \n",
|
||||
"... ... ... \n",
|
||||
"5340 7.860100e+05 True \n",
|
||||
"5381 2.782902e+05 True \n",
|
||||
"5383 1.072515e+06 True \n",
|
||||
"5439 2.097703e+05 True \n",
|
||||
"5443 3.182165e+05 True \n",
|
||||
" circ_mv is_st \n",
|
||||
"54 3.072050e+05 True \n",
|
||||
"60 2.342289e+05 True \n",
|
||||
"88 2.705062e+05 True \n",
|
||||
"96 1.266465e+06 True \n",
|
||||
"110 2.890793e+05 True \n",
|
||||
"... ... ... \n",
|
||||
"27130 5.089584e+05 True \n",
|
||||
"27154 2.503842e+05 True \n",
|
||||
"27193 2.386120e+05 True \n",
|
||||
"27195 1.261194e+05 True \n",
|
||||
"27223 1.898341e+05 True \n",
|
||||
"\n",
|
||||
"[186 rows x 19 columns]\n"
|
||||
"[886 rows x 19 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -412,7 +407,7 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"Index: 9340602 entries, 0 to 5443\n",
|
||||
"Index: 9574993 entries, 0 to 27325\n",
|
||||
"Data columns (total 3 columns):\n",
|
||||
" # Column Dtype \n",
|
||||
"--- ------ ----- \n",
|
||||
@@ -420,7 +415,7 @@
|
||||
" 1 trade_date object\n",
|
||||
" 2 is_st bool \n",
|
||||
"dtypes: bool(1), object(2)\n",
|
||||
"memory usage: 222.7+ MB\n",
|
||||
"memory usage: 228.3+ MB\n",
|
||||
"None\n"
|
||||
]
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,244 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "17cc645336d4eb18",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-02-08T16:55:19.819017Z",
|
||||
"start_time": "2025-02-08T16:55:18.958639Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import tushare as ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "48ae71ed02d61819",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-02-08T16:55:27.578361Z",
|
||||
"start_time": "2025-02-08T16:55:19.882313Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "FileNotFoundError",
|
||||
"evalue": "File ../../../data/daily_basic.h5 does not exist",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
||||
"\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)",
|
||||
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m daily_basic = \u001b[43mpd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mread_hdf\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43m../../../data/daily_basic.h5\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mdaily_basic\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n",
|
||||
"\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/stock/lib/python3.12/site-packages/pandas/io/pytables.py:437\u001b[39m, in \u001b[36mread_hdf\u001b[39m\u001b[34m(path_or_buf, key, mode, errors, where, start, stop, columns, iterator, chunksize, **kwargs)\u001b[39m\n\u001b[32m 434\u001b[39m exists = \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[32m 436\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m exists:\n\u001b[32m--> \u001b[39m\u001b[32m437\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mFile \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_buf\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m does not exist\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 439\u001b[39m store = HDFStore(path_or_buf, mode=mode, errors=errors, **kwargs)\n\u001b[32m 440\u001b[39m \u001b[38;5;66;03m# can't auto open/close if we are using an iterator\u001b[39;00m\n\u001b[32m 441\u001b[39m \u001b[38;5;66;03m# so delegate to the iterator\u001b[39;00m\n",
|
||||
"\u001b[31mFileNotFoundError\u001b[39m: File ../../../data/daily_basic.h5 does not exist"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"daily_basic = pd.read_hdf('../../../data/daily_basic.h5', key='daily_basic')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e6606a96e5728b8",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-02-08T16:55:27.938078Z",
|
||||
"start_time": "2025-02-08T16:55:27.584226Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from datetime import datetime\n",
|
||||
"import warnings\n",
|
||||
"\n",
|
||||
"warnings.filterwarnings(\"ignore\")\n",
|
||||
"def filter_rows(df):\n",
|
||||
" # 按照 name 和 start_date 分组\n",
|
||||
" def select_row(group):\n",
|
||||
" # 如果有 end_date 不为 NaT 的行,优先保留这些行\n",
|
||||
" valid_rows = group[group['end_date'].notna()]\n",
|
||||
" if not valid_rows.empty:\n",
|
||||
" return valid_rows.iloc[0] # 返回第一个有效行\n",
|
||||
" else:\n",
|
||||
" return group.iloc[0] # 如果没有有效行,返回第一行\n",
|
||||
"\n",
|
||||
" filtered_df = df.groupby(['name', 'start_date'], group_keys=False).apply(select_row)\n",
|
||||
" filtered_df = filtered_df.reset_index(drop=True)\n",
|
||||
" return filtered_df\n",
|
||||
"\n",
|
||||
"def is_st(name_change_dict, stock_code, target_date):\n",
|
||||
" target_date = datetime.strptime(target_date, '%Y%m%d')\n",
|
||||
" if stock_code not in name_change_dict.keys():\n",
|
||||
" return False\n",
|
||||
" df = name_change_dict[stock_code]\n",
|
||||
" for i in range(len(df)):\n",
|
||||
" sds = df.iloc[i, 2]\n",
|
||||
" eds = df.iloc[i, 3]\n",
|
||||
" if eds is None or eds is pd.NaT:\n",
|
||||
" eds = datetime.now()\n",
|
||||
" if (target_date - sds).days >= 0 and (target_date - eds).days <= 0:\n",
|
||||
" return True\n",
|
||||
" return False\n",
|
||||
"\n",
|
||||
"name_change_df = pd.read_hdf('../../../data/name_change.h5', key='name_change')\n",
|
||||
"name_change_df = name_change_df.drop_duplicates(keep='first')\n",
|
||||
"\n",
|
||||
"# 确保 name_change_df 的日期格式正确\n",
|
||||
"name_change_df['start_date'] = pd.to_datetime(name_change_df['start_date'], format='%Y%m%d')\n",
|
||||
"name_change_df['end_date'] = pd.to_datetime(name_change_df['end_date'], format='%Y%m%d', errors='coerce')\n",
|
||||
"name_change_df = name_change_df[name_change_df.name.str.contains('ST')]\n",
|
||||
"name_change_dict = {}\n",
|
||||
"for ts_code, group in name_change_df.groupby('ts_code'):\n",
|
||||
" # 只保留 'ST' 和 '*ST' 的记录\n",
|
||||
" # st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n",
|
||||
" st_data = group[group['name'].str.contains('ST')]\n",
|
||||
" if not st_data.empty:\n",
|
||||
" name_change_dict[ts_code] = filter_rows(st_data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "41bc125d",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date close turnover_rate turnover_rate_f \\\n",
|
||||
"0 603848.SH 20250430 14.36 0.5401 4.6897 \n",
|
||||
"1 300290.SZ 20250430 16.30 2.8540 3.5686 \n",
|
||||
"2 603877.SH 20250430 15.90 0.3794 1.2707 \n",
|
||||
"3 834639.BJ 20250430 8.37 6.1158 7.8866 \n",
|
||||
"4 000909.SZ 20250430 5.72 0.6104 1.0424 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"8594006 600708.SH 20170103 9.03 0.7694 1.0169 \n",
|
||||
"8594007 600712.SH 20170103 10.29 0.5859 0.8028 \n",
|
||||
"8594008 001872.SZ 20170103 19.33 1.0970 5.4258 \n",
|
||||
"8594009 001914.SZ 20170103 12.37 3.2627 6.6991 \n",
|
||||
"8594010 302132.SZ 20170103 23.28 0.4912 1.5149 \n",
|
||||
"\n",
|
||||
" volume_ratio pe pe_ttm pb ps ps_ttm \\\n",
|
||||
"0 1.31 23.3421 25.6176 2.3433 3.7254 3.8065 \n",
|
||||
"1 1.00 NaN NaN 13.1076 13.5867 13.5756 \n",
|
||||
"2 0.98 29.1494 33.6975 1.6522 1.1075 1.1304 \n",
|
||||
"3 0.87 70.0984 215.1863 2.0171 0.8405 0.8329 \n",
|
||||
"4 0.55 NaN NaN 2.3539 7.7727 8.2925 \n",
|
||||
"... ... ... ... ... ... ... \n",
|
||||
"8594006 0.85 23.3367 22.2458 1.4847 0.9613 0.9248 \n",
|
||||
"8594007 0.67 202.4855 287.1454 5.1852 2.3682 2.5386 \n",
|
||||
"8594008 0.77 23.6158 23.1883 2.7052 6.6556 6.5584 \n",
|
||||
"8594009 1.02 20.5631 15.1595 2.1186 1.4950 1.2600 \n",
|
||||
"8594010 0.74 91.3908 84.6980 6.9391 8.9531 8.8570 \n",
|
||||
"\n",
|
||||
" dv_ratio dv_ttm total_share float_share free_share total_mv \\\n",
|
||||
"0 2.0904 2.0904 40391.1511 40240.6511 4634.6511 5.800169e+05 \n",
|
||||
"1 0.0000 NaN 63973.2569 63922.1969 51122.1969 1.042764e+06 \n",
|
||||
"2 3.7471 3.7471 47382.5333 46932.3226 14014.3219 7.533823e+05 \n",
|
||||
"3 NaN NaN 20160.0000 11721.5883 9089.7537 1.687392e+05 \n",
|
||||
"4 0.0000 NaN 43771.4245 43771.0570 25634.2299 2.503725e+05 \n",
|
||||
"... ... ... ... ... ... ... \n",
|
||||
"8594006 1.1074 1.1074 131871.9966 75088.9215 56812.2811 1.190804e+06 \n",
|
||||
"8594007 0.1555 0.1555 54465.5360 53795.9475 39266.3119 5.604504e+05 \n",
|
||||
"8594008 2.1211 2.1211 64476.3730 46486.6050 9398.8050 1.246328e+06 \n",
|
||||
"8594009 0.4042 0.4042 66696.1416 66678.0666 32475.1786 8.250313e+05 \n",
|
||||
"8594010 0.2291 0.2291 39384.0333 30419.3588 9862.3809 9.168603e+05 \n",
|
||||
"\n",
|
||||
" circ_mv is_st \n",
|
||||
"0 5.778557e+05 False \n",
|
||||
"1 1.041932e+06 False \n",
|
||||
"2 7.462239e+05 False \n",
|
||||
"3 9.810969e+04 False \n",
|
||||
"4 2.503704e+05 True \n",
|
||||
"... ... ... \n",
|
||||
"8594006 6.780530e+05 False \n",
|
||||
"8594007 5.535603e+05 False \n",
|
||||
"8594008 8.985861e+05 False \n",
|
||||
"8594009 8.248077e+05 False \n",
|
||||
"8594010 7.081627e+05 False \n",
|
||||
"\n",
|
||||
"[8594011 rows x 19 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(daily_basic)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "initial_id",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-02-08T16:59:20.537632Z",
|
||||
"start_time": "2025-02-08T16:55:27.971219Z"
|
||||
},
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"is st...\n",
|
||||
" ts_code trade_date is_st\n",
|
||||
"0 603848.SH 20250430 False\n",
|
||||
"1 300290.SZ 20250430 False\n",
|
||||
"2 603877.SH 20250430 False\n",
|
||||
"3 834639.BJ 20250430 False\n",
|
||||
"4 000909.SZ 20250430 True\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from datetime import datetime\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"print('is st...')\n",
|
||||
"# 创建一个新的列 is_st,判断每只股票是否是 ST\n",
|
||||
"daily_basic['is_st'] = daily_basic.apply(\n",
|
||||
" lambda row: is_st(name_change_dict, row['ts_code'], row['trade_date']), axis=1\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# 保存结果到新的 HDF5 文件\n",
|
||||
"daily_basic.to_hdf('../../../data/daily_basic.h5', key='daily_basic', mode='w', format='table')\n",
|
||||
"\n",
|
||||
"# 输出部分结果\n",
|
||||
"print(daily_basic[['ts_code', 'trade_date', 'is_st']].head())\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "stock",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -34,17 +34,17 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"Index: 9134824 entries, 0 to 20632\n",
|
||||
"Index: 9336127 entries, 0 to 25845\n",
|
||||
"Data columns (total 2 columns):\n",
|
||||
" # Column Dtype \n",
|
||||
"--- ------ ----- \n",
|
||||
" 0 ts_code object\n",
|
||||
" 1 trade_date object\n",
|
||||
"dtypes: object(2)\n",
|
||||
"memory usage: 209.1+ MB\n",
|
||||
"memory usage: 213.7+ MB\n",
|
||||
"None\n",
|
||||
"20251120\n",
|
||||
"start_date: 20251121\n"
|
||||
"20260116\n",
|
||||
"start_date: 20260119\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -61,7 +61,7 @@
|
||||
" max_date = df['trade_date'].max()\n",
|
||||
"\n",
|
||||
"print(max_date)\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20251220')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260201')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n",
|
||||
"start_date = min(trade_dates)\n",
|
||||
@@ -84,27 +84,16 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n"
|
||||
"任务 20260129 完成\n",
|
||||
"任务 20260130 完成\n",
|
||||
"任务 20260128 完成\n",
|
||||
"任务 20260127 完成\n",
|
||||
"任务 20260126 完成\n",
|
||||
"任务 20260123 完成\n",
|
||||
"任务 20260122 完成\n",
|
||||
"任务 20260121 完成\n",
|
||||
"任务 20260120 完成\n",
|
||||
"任务 20260119 完成\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -193,59 +182,72 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date buy_sm_vol buy_sm_amount sell_sm_vol \\\n",
|
||||
"0 002593.SZ 20251121 369428 21109.32 239444 \n",
|
||||
"1 300405.SZ 20251121 173424 11775.01 115988 \n",
|
||||
"2 001336.SZ 20251121 11378 2729.92 10423 \n",
|
||||
"3 002403.SZ 20251121 24219 3104.96 19841 \n",
|
||||
"4 688268.SH 20251121 12369 7423.62 12330 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5156 000881.SZ 20251121 146959 11936.56 155068 \n",
|
||||
"5157 300676.SZ 20251121 21428 9913.61 15092 \n",
|
||||
"5158 603138.SH 20251121 31243 4558.85 30559 \n",
|
||||
"5159 301526.SZ 20251121 172815 9552.38 105860 \n",
|
||||
"5160 300903.SZ 20251121 124772 20586.88 96098 \n",
|
||||
" ts_code trade_date buy_sm_vol buy_sm_amount sell_sm_vol \\\n",
|
||||
"0 300284.SZ 20260123 57213 4682.01 45561 \n",
|
||||
"1 002835.SZ 20260123 10930 1886.39 9809 \n",
|
||||
"2 603175.SH 20260123 28945 21106.65 29993 \n",
|
||||
"3 600284.SH 20260123 62561 5324.31 55101 \n",
|
||||
"4 300855.SZ 20260123 41944 15903.55 33566 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"25876 600211.SH 20260119 10915 4796.09 12174 \n",
|
||||
"25877 601229.SH 20260119 225161 21704.91 267726 \n",
|
||||
"25878 003042.SZ 20260119 17500 2893.60 11703 \n",
|
||||
"25879 601155.SH 20260119 75731 11076.12 70817 \n",
|
||||
"25880 600169.SH 20260119 81734 2005.16 84188 \n",
|
||||
"\n",
|
||||
" sell_sm_amount buy_md_vol buy_md_amount sell_md_vol sell_md_amount \\\n",
|
||||
"0 13673.67 256325 14655.03 298786 17088.39 \n",
|
||||
"1 7859.14 154296 10473.88 176589 11973.97 \n",
|
||||
"2 2498.94 5274 1266.93 5893 1415.57 \n",
|
||||
"3 2546.44 17292 2218.64 18180 2333.03 \n",
|
||||
"4 7430.97 16104 9682.18 16670 10042.76 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5156 12623.78 107103 8717.66 97089 7896.18 \n",
|
||||
"5157 6975.73 17857 8249.34 16607 7679.15 \n",
|
||||
"5158 4458.47 15126 2208.57 11879 1733.73 \n",
|
||||
"5159 5855.69 155749 8607.76 160962 8892.48 \n",
|
||||
"5160 15867.99 92082 15223.39 105748 17449.56 \n",
|
||||
" sell_sm_amount buy_md_vol buy_md_amount sell_md_vol sell_md_amount \\\n",
|
||||
"0 3728.28 48486 3966.28 59366 4856.95 \n",
|
||||
"1 1693.39 6499 1121.44 6017 1038.84 \n",
|
||||
"2 21840.97 22701 16511.38 23142 16835.79 \n",
|
||||
"3 4687.48 68181 5800.70 62114 5285.81 \n",
|
||||
"4 12712.79 35383 13409.44 40111 15213.47 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"25876 5348.74 9594 4215.26 8253 3626.54 \n",
|
||||
"25877 25799.99 204041 19664.19 207361 19990.67 \n",
|
||||
"25878 1933.74 11780 1946.25 14398 2379.72 \n",
|
||||
"25879 10351.64 45622 6659.41 46251 6765.59 \n",
|
||||
"25880 2063.68 129391 3172.21 137053 3360.95 \n",
|
||||
"\n",
|
||||
" buy_lg_vol buy_lg_amount sell_lg_vol sell_lg_amount buy_elg_vol \\\n",
|
||||
"0 125303 7153.65 190306 10868.03 13733 \n",
|
||||
"1 68396 4621.42 100633 6820.12 12166 \n",
|
||||
"2 326 77.32 662 159.66 0 \n",
|
||||
"3 7131 916.27 8891 1137.58 0 \n",
|
||||
"4 9155 5523.81 9780 5877.77 2793 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5156 63727 5186.84 54928 4460.74 8415 \n",
|
||||
"5157 12528 5781.44 16425 7596.83 3906 \n",
|
||||
"5158 5884 857.88 8048 1175.32 0 \n",
|
||||
"5159 63089 3481.66 115498 6376.52 13568 \n",
|
||||
"5160 58186 9624.92 77536 12811.46 25445 \n",
|
||||
" buy_lg_vol buy_lg_amount sell_lg_vol sell_lg_amount buy_elg_vol \\\n",
|
||||
"0 39133 3201.55 32920 2693.69 6576 \n",
|
||||
"1 4067 702.11 4633 799.04 241 \n",
|
||||
"2 11291 8249.67 11377 8302.90 3400 \n",
|
||||
"3 46517 3960.29 57644 4906.75 23366 \n",
|
||||
"4 24315 9212.24 24640 9342.34 5111 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"25876 5507 2419.57 5204 2286.10 2 \n",
|
||||
"25877 134694 12983.30 86737 8363.03 24453 \n",
|
||||
"25878 4038 668.49 7218 1194.87 0 \n",
|
||||
"25879 23725 3458.86 23634 3453.46 21891 \n",
|
||||
"25880 63062 1545.61 49278 1208.05 5904 \n",
|
||||
"\n",
|
||||
" buy_elg_amount sell_elg_vol sell_elg_amount net_mf_vol net_mf_amount \n",
|
||||
"0 781.20 36253 2069.12 -103672 -5866.51 \n",
|
||||
"1 813.01 15071 1030.08 -34131 -2297.62 \n",
|
||||
"2 0.00 0 0.00 -1180 -271.00 \n",
|
||||
"3 0.00 1730 222.81 194 30.22 \n",
|
||||
"4 1708.30 1640 986.41 476 282.30 \n",
|
||||
"... ... ... ... ... ... \n",
|
||||
"5156 686.43 19119 1546.77 -50922 -4113.23 \n",
|
||||
"5157 1805.21 7595 3497.90 -4085 -1873.36 \n",
|
||||
"5158 0.00 1768 257.78 713 110.42 \n",
|
||||
"5159 744.87 22900 1261.99 -64224 -3539.76 \n",
|
||||
"5160 4179.40 21103 3485.60 -29335 -4855.38 \n",
|
||||
" buy_elg_amount sell_elg_vol sell_elg_amount net_mf_vol \\\n",
|
||||
"0 539.18 13561 1110.11 -4914 \n",
|
||||
"1 41.60 1278 220.26 1923 \n",
|
||||
"2 2437.55 1825 1325.59 1620 \n",
|
||||
"3 1991.65 25767 2196.91 46602 \n",
|
||||
"4 1934.73 8437 3191.36 -19491 \n",
|
||||
"... ... ... ... ... \n",
|
||||
"25876 0.88 388 170.41 -44 \n",
|
||||
"25877 2359.23 26525 2557.95 -37774 \n",
|
||||
"25878 0.00 0 0.00 6587 \n",
|
||||
"25879 3125.39 26267 3749.10 28653 \n",
|
||||
"25880 144.65 9571 234.95 -10865 \n",
|
||||
"\n",
|
||||
"[5161 rows x 20 columns]\n"
|
||||
" net_mf_amount \n",
|
||||
"0 -391.89 \n",
|
||||
"1 333.04 \n",
|
||||
"2 1372.40 \n",
|
||||
"3 3982.07 \n",
|
||||
"4 -7354.89 \n",
|
||||
"... ... \n",
|
||||
"25876 -16.04 \n",
|
||||
"25877 -3603.98 \n",
|
||||
"25878 1092.73 \n",
|
||||
"25879 4152.29 \n",
|
||||
"25880 -256.23 \n",
|
||||
"\n",
|
||||
"[25881 rows x 20 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@@ -34,23 +34,23 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" ts_code trade_date\n",
|
||||
"4915 600221.SH 20251120\n",
|
||||
"4916 600222.SH 20251120\n",
|
||||
"4917 600223.SH 20251120\n",
|
||||
"4919 600227.SH 20251120\n",
|
||||
"3693 301448.SZ 20251120\n",
|
||||
"4959 600211.SH 20260116\n",
|
||||
"4960 600212.SH 20260116\n",
|
||||
"4961 600215.SH 20260116\n",
|
||||
"4949 600197.SH 20260116\n",
|
||||
"3732 301501.SZ 20260116\n",
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"Index: 11412627 entries, 0 to 29456\n",
|
||||
"Index: 11701107 entries, 0 to 37139\n",
|
||||
"Data columns (total 2 columns):\n",
|
||||
" # Column Dtype \n",
|
||||
"--- ------ ----- \n",
|
||||
" 0 ts_code object\n",
|
||||
" 1 trade_date object\n",
|
||||
"dtypes: object(2)\n",
|
||||
"memory usage: 261.2+ MB\n",
|
||||
"memory usage: 267.8+ MB\n",
|
||||
"None\n",
|
||||
"20251120\n",
|
||||
"20251121\n"
|
||||
"20260116\n",
|
||||
"20260119\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -68,7 +68,7 @@
|
||||
" max_date = df['trade_date'].max()\n",
|
||||
"\n",
|
||||
"print(max_date)\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20251220')\n",
|
||||
"trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20260201')\n",
|
||||
"trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n",
|
||||
"trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n",
|
||||
"start_date = min(trade_dates)\n",
|
||||
@@ -91,27 +91,22 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20251219 完成\n",
|
||||
"任务 20251218 完成\n",
|
||||
"任务 20251217 完成\n",
|
||||
"任务 20251216 完成\n",
|
||||
"任务 20251215 完成\n",
|
||||
"任务 20251212 完成\n",
|
||||
"任务 20251211 完成\n",
|
||||
"任务 20251210 完成\n",
|
||||
"任务 20251209 完成\n",
|
||||
"任务 20251208 完成\n",
|
||||
"任务 20251205 完成\n",
|
||||
"任务 20251204 完成\n",
|
||||
"任务 20251203 完成\n",
|
||||
"任务 20251202 完成\n",
|
||||
"任务 20251201 完成\n",
|
||||
"任务 20251128 完成\n",
|
||||
"任务 20251127 完成\n",
|
||||
"任务 20251126 完成\n",
|
||||
"任务 20251125 完成\n",
|
||||
"任务 20251124 完成\n",
|
||||
"任务 20251121 完成\n"
|
||||
"任务 20260130 完成\n",
|
||||
"任务 20260129 完成\n",
|
||||
"任务 20260128 完成\n",
|
||||
"任务 20260127 完成\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"任务 20260126 完成\n",
|
||||
"任务 20260123 完成\n",
|
||||
"任务 20260122 完成\n",
|
||||
"任务 20260121 完成\n",
|
||||
"任务 20260120 完成\n",
|
||||
"任务 20260119 完成\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -163,19 +158,71 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[ trade_date ts_code up_limit down_limit\n",
|
||||
"0 20251121 000001.SZ 13.04 10.67\n",
|
||||
"1 20251121 000002.SZ 6.82 5.58\n",
|
||||
"2 20251121 000004.SZ 11.64 10.54\n",
|
||||
"3 20251121 000006.SZ 12.07 9.87\n",
|
||||
"4 20251121 000007.SZ 11.00 9.00\n",
|
||||
"0 20260123 000001.SZ 12.18 9.96\n",
|
||||
"1 20260123 000002.SZ 5.45 4.46\n",
|
||||
"2 20260123 000004.SZ 12.59 11.39\n",
|
||||
"3 20260123 000006.SZ 10.62 8.69\n",
|
||||
"4 20260123 000007.SZ 12.47 10.21\n",
|
||||
"... ... ... ... ...\n",
|
||||
"7363 20251121 920978.BJ 49.06 26.42\n",
|
||||
"7364 20251121 920981.BJ 46.99 25.31\n",
|
||||
"7365 20251121 920982.BJ 300.67 161.91\n",
|
||||
"7366 20251121 920985.BJ 11.75 6.33\n",
|
||||
"7367 20251121 920992.BJ 24.06 12.96\n",
|
||||
"7435 20260123 920978.BJ 44.56 24.00\n",
|
||||
"7436 20260123 920981.BJ 45.61 24.57\n",
|
||||
"7437 20260123 920982.BJ 295.08 158.90\n",
|
||||
"7438 20260123 920985.BJ 10.20 5.50\n",
|
||||
"7439 20260123 920992.BJ 24.32 13.10\n",
|
||||
"\n",
|
||||
"[7368 rows x 4 columns]]\n"
|
||||
"[7440 rows x 4 columns], trade_date ts_code up_limit down_limit\n",
|
||||
"0 20260122 000001.SZ 12.18 9.96\n",
|
||||
"1 20260122 000002.SZ 5.51 4.51\n",
|
||||
"2 20260122 000004.SZ 11.99 10.85\n",
|
||||
"3 20260122 000006.SZ 10.62 8.69\n",
|
||||
"4 20260122 000007.SZ 12.41 10.15\n",
|
||||
"... ... ... ... ...\n",
|
||||
"7433 20260122 920978.BJ 45.48 24.50\n",
|
||||
"7434 20260122 920981.BJ 45.61 24.57\n",
|
||||
"7435 20260122 920982.BJ 301.76 162.50\n",
|
||||
"7436 20260122 920985.BJ 9.84 5.30\n",
|
||||
"7437 20260122 920992.BJ 23.95 12.91\n",
|
||||
"\n",
|
||||
"[7438 rows x 4 columns], trade_date ts_code up_limit down_limit\n",
|
||||
"0 20260121 000001.SZ 12.28 10.04\n",
|
||||
"1 20260121 000002.SZ 5.27 4.31\n",
|
||||
"2 20260121 000004.SZ 12.02 10.88\n",
|
||||
"3 20260121 000006.SZ 10.27 8.41\n",
|
||||
"4 20260121 000007.SZ 12.08 9.88\n",
|
||||
"... ... ... ... ...\n",
|
||||
"7433 20260121 920978.BJ 45.60 24.56\n",
|
||||
"7434 20260121 920981.BJ 43.81 23.59\n",
|
||||
"7435 20260121 920982.BJ 304.34 163.88\n",
|
||||
"7436 20260121 920985.BJ 9.90 5.34\n",
|
||||
"7437 20260121 920992.BJ 24.11 12.99\n",
|
||||
"\n",
|
||||
"[7438 rows x 4 columns], trade_date ts_code up_limit down_limit\n",
|
||||
"0 20260120 000001.SZ 12.23 10.01\n",
|
||||
"1 20260120 000002.SZ 5.20 4.26\n",
|
||||
"2 20260120 000004.SZ 11.46 10.36\n",
|
||||
"3 20260120 000006.SZ 10.07 8.24\n",
|
||||
"4 20260120 000007.SZ 12.49 10.22\n",
|
||||
"... ... ... ... ...\n",
|
||||
"7431 20260120 920978.BJ 46.41 24.99\n",
|
||||
"7432 20260120 920981.BJ 44.26 23.84\n",
|
||||
"7433 20260120 920982.BJ 310.42 167.16\n",
|
||||
"7434 20260120 920985.BJ 9.97 5.37\n",
|
||||
"7435 20260120 920992.BJ 24.49 13.19\n",
|
||||
"\n",
|
||||
"[7436 rows x 4 columns], trade_date ts_code up_limit down_limit\n",
|
||||
"0 20260119 000001.SZ 12.31 10.07\n",
|
||||
"1 20260119 000002.SZ 5.20 4.26\n",
|
||||
"2 20260119 000004.SZ 11.70 10.58\n",
|
||||
"3 20260119 000006.SZ 10.13 8.29\n",
|
||||
"4 20260119 000007.SZ 12.43 10.17\n",
|
||||
"... ... ... ... ...\n",
|
||||
"7429 20260119 920978.BJ 46.26 24.92\n",
|
||||
"7430 20260119 920981.BJ 45.51 24.51\n",
|
||||
"7431 20260119 920982.BJ 305.50 164.50\n",
|
||||
"7432 20260119 920985.BJ 9.88 5.32\n",
|
||||
"7433 20260119 920992.BJ 24.28 13.08\n",
|
||||
"\n",
|
||||
"[7434 rows x 4 columns]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@@ -78,88 +78,6 @@ from .momentum_factors import (
|
||||
VolatilityFactor,
|
||||
MomentumFactor,
|
||||
MomentumAcceleration,
|
||||
TrendEfficiency
|
||||
TrendEfficiency,
|
||||
SimpleVolatilityFactor
|
||||
)
|
||||
|
||||
|
||||
# 导入统一因子计算模块
|
||||
from .all_factors import calculate_all_factors, compute_factors
|
||||
|
||||
# 导入算子框架
|
||||
from .operator_framework import StockWiseFactor, DateWiseFactor, FactorGraph
|
||||
|
||||
# 定义所有因子类的列表,便于统一管理
|
||||
ALL_STOCK_FACTORS = [
|
||||
SMAFactor,
|
||||
EMAFactor,
|
||||
ATRFactor,
|
||||
OBVFactor,
|
||||
MACDFactor,
|
||||
RSI_Factor,
|
||||
LGFlowFactor,
|
||||
FlowIntensityFactor,
|
||||
FlowDivergenceFactor,
|
||||
FlowStructureFactor,
|
||||
FlowAccelerationFactor,
|
||||
ChipConcentrationFactor,
|
||||
ChipSkewnessFactor,
|
||||
FloatingChipFactor,
|
||||
CostSupportFactor,
|
||||
WinnerPriceZoneFactor,
|
||||
SentimentPanicGreedFactor,
|
||||
SentimentBreadthFactor,
|
||||
SentimentReversalFactor,
|
||||
PriceDeductionFactor,
|
||||
PriceDeductionRatioFactor,
|
||||
CashflowToEVFactor,
|
||||
BookToPriceFactor,
|
||||
DebtToEquityFactor,
|
||||
ProfitMarginFactor,
|
||||
LimitFactor,
|
||||
VolumeRatioFactor,
|
||||
BBI_RATIO_FACTOR,
|
||||
VolatilitySlopeFactor,
|
||||
PriceVolumeTrendFactor
|
||||
]
|
||||
|
||||
ALL_DATE_FACTORS = [
|
||||
CrossSectionalRankFactor,
|
||||
IndustryMomentumFactor,
|
||||
MarketBreadthFactor,
|
||||
SectorRotationFactor
|
||||
]
|
||||
|
||||
__all__ = [
|
||||
# 技术指标因子
|
||||
'SMAFactor', 'EMAFactor', 'ATRFactor', 'OBVFactor', 'MACDFactor', 'RSI_Factor',
|
||||
|
||||
# 资金流因子
|
||||
'LGFlowFactor', 'FlowIntensityFactor', 'FlowDivergenceFactor',
|
||||
'FlowStructureFactor', 'FlowAccelerationFactor',
|
||||
|
||||
# 筹码分布因子
|
||||
'ChipConcentrationFactor', 'ChipSkewnessFactor', 'FloatingChipFactor',
|
||||
'CostSupportFactor', 'WinnerPriceZoneFactor',
|
||||
|
||||
# 市场情绪因子
|
||||
'SentimentPanicGreedFactor', 'SentimentBreadthFactor', 'SentimentReversalFactor',
|
||||
'PriceDeductionFactor', 'PriceDeductionRatioFactor',
|
||||
|
||||
# 行业/横截面因子
|
||||
'CrossSectionalRankFactor', 'IndustryMomentumFactor', 'MarketBreadthFactor',
|
||||
'SectorRotationFactor',
|
||||
|
||||
# 财务因子
|
||||
'CashflowToEVFactor', 'BookToPriceFactor', 'ROEFactor', 'DebtToEquityFactor',
|
||||
'ProfitMarginFactor',
|
||||
|
||||
# 特殊因子
|
||||
'LimitFactor', 'VolumeRatioFactor', 'BBI_RATIO_FACTOR',
|
||||
'VolatilitySlopeFactor', 'PriceVolumeTrendFactor',
|
||||
|
||||
# 统一因子计算
|
||||
'calculate_all_factors', 'compute_factors', 'get_available_stock_factors', 'get_available_date_factors',
|
||||
|
||||
# # 算子框架
|
||||
# 'StockWiseFactor', 'DateWiseFactor'
|
||||
]
|
||||
@@ -65,6 +65,7 @@ from main.factor import (
|
||||
BBI_RATIO_FACTOR,
|
||||
VolatilitySlopeFactor,
|
||||
PriceVolumeTrendFactor,
|
||||
SimpleVolatilityFactor
|
||||
)
|
||||
|
||||
|
||||
@@ -168,6 +169,10 @@ def calculate_all_factors(
|
||||
"class": CrossSectionalRankFactor,
|
||||
"params": {"column": "circ_mv", "name": "size_rank"},
|
||||
},
|
||||
{
|
||||
"class": SimpleVolatilityFactor,
|
||||
"params": {"high", "low", "vol"}
|
||||
}
|
||||
]
|
||||
|
||||
if date_factor_configs is None:
|
||||
|
||||
@@ -122,53 +122,38 @@ class TrendEfficiency(StockWiseFactor):
|
||||
|
||||
return efficiency_ratio
|
||||
|
||||
# -------------------- 统一计算函数 --------------------
|
||||
def calculate_momentum_factors(df: pl.DataFrame) -> pl.DataFrame:
|
||||
"""
|
||||
统一计算动量因子的函数
|
||||
|
||||
Parameters:
|
||||
df (pl.DataFrame): 输入的股票数据表,必须包含以下列:
|
||||
ts_code, trade_date, close, pct_chg, high, low, vol
|
||||
|
||||
Returns:
|
||||
pl.DataFrame: 包含所有动量因子的DataFrame
|
||||
"""
|
||||
# 初始化结果DataFrame
|
||||
result_df = df.clone()
|
||||
|
||||
# 定义要计算的因子列表
|
||||
# 先计算股票截面因子(时间序列因子)
|
||||
stock_operators = [
|
||||
ReturnFactor(5),
|
||||
ReturnFactor(20),
|
||||
VolatilityFactor(10),
|
||||
VolatilityFactor(30),
|
||||
MomentumFactor(10),
|
||||
MomentumFactor(30),
|
||||
RSI_Factor(14)
|
||||
]
|
||||
|
||||
# 依次应用股票截面因子算子
|
||||
for operator in stock_operators:
|
||||
try:
|
||||
result_df = operator.apply(result_df)
|
||||
except Exception as e:
|
||||
print(f"计算股票截面因子 {operator.factor_id} 时出错: {e}")
|
||||
|
||||
# 再计算日期截面因子(横截面排序因子)
|
||||
date_operators = [
|
||||
CrossSectionalRanking("return_5d"),
|
||||
CrossSectionalRanking("return_20d"),
|
||||
CrossSectionalRanking("volatility_10d"),
|
||||
CrossSectionalRanking("momentum_10d")
|
||||
]
|
||||
|
||||
# 依次应用日期截面因子算子
|
||||
for operator in date_operators:
|
||||
try:
|
||||
result_df = operator.apply(result_df)
|
||||
except Exception as e:
|
||||
print(f"计算日期截面因子 {operator.factor_id} 时出错: {e}")
|
||||
|
||||
return result_df
|
||||
class SimpleVolatilityFactor(StockWiseFactor):
|
||||
factor_id = "simple_volatility"
|
||||
required_factor_ids = ["high", "low", "vol"]
|
||||
|
||||
def __init__(self):
|
||||
super(SimpleVolatilityFactor, self).__init__(
|
||||
name=self.factor_id,
|
||||
parameters={},
|
||||
required_factor_ids=self.required_factor_ids
|
||||
)
|
||||
|
||||
def calc_factor(self, g: pl.DataFrame) -> pl.Series:
|
||||
high = g["high"]
|
||||
low = g["low"]
|
||||
vol = g["vol"]
|
||||
|
||||
# Step 1: 计算 EM_i,t
|
||||
# 注意:shift(1) 得到 t-1 的值
|
||||
em = ((high + low) - (high.shift(1) + low.shift(1))) / 2.0
|
||||
em = em.fill_null(0.0) # 第一天无前值,设为0
|
||||
|
||||
# Step 2: 计算 BR_i,t
|
||||
# 避免除零:若 High == Low,设 BR = 0
|
||||
range_ = high - low
|
||||
br = vol / range_
|
||||
br = br.fill_null(0.0).replace({float('inf'): 0.0, float('-inf'): 0.0})
|
||||
|
||||
# Step 3: 计算 MM_i,t = EM / BR
|
||||
mm = em / br
|
||||
mm = mm.fill_null(0.0).replace({float('inf'): 0.0, float('-inf'): 0.0})
|
||||
|
||||
# Step 4: 计算 239 日简单移动平均
|
||||
emv = mm.rolling_mean(window_size=239, min_periods=1)
|
||||
|
||||
return emv.alias(self.factor_id)
|
||||
|
||||
@@ -12,7 +12,6 @@ import pandas as pd
|
||||
|
||||
def prepare_data(
|
||||
polars_df: pl.DataFrame,
|
||||
label_horizon: int = 5,
|
||||
open_col: str = "open",
|
||||
date_col: str = "trade_date",
|
||||
code_col: str = "ts_code",
|
||||
@@ -24,13 +23,13 @@ def prepare_data(
|
||||
|
||||
df = polars_df.sort([code_col, date_col])
|
||||
|
||||
# 获取 T+1 日的开盘价(作为买入价)
|
||||
df = df.with_columns([
|
||||
pl.col(open_col).shift(-1).over(code_col).alias("__buy_price"),
|
||||
pl.col(open_col).shift(-(1 + label_horizon)).over(code_col).alias("__sell_price"),
|
||||
]).with_columns([
|
||||
(pl.col("__sell_price") / pl.col("__buy_price") - 1).alias("label")
|
||||
]).drop(["__buy_price", "__sell_price"])
|
||||
# # 获取 T+1 日的开盘价(作为买入价)
|
||||
# df = df.with_columns([
|
||||
# pl.col(open_col).shift(-1).over(code_col).alias("__buy_price"),
|
||||
# pl.col(open_col).shift(-(1 + label_horizon)).over(code_col).alias("__sell_price"),
|
||||
# ]).with_columns([
|
||||
# (pl.col("__sell_price") / pl.col("__buy_price") - 1).alias("label")
|
||||
# ]).drop(["__buy_price", "__sell_price"])
|
||||
|
||||
# 转 pandas
|
||||
df = df.to_pandas()
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -15,18 +15,7 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/mnt/d/PyProject/NewStock/main/train\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "ModuleNotFoundError",
|
||||
"evalue": "No module named 'main.factor'; 'main' is not a package",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
||||
"\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)",
|
||||
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 11\u001b[39m\n\u001b[32m 9\u001b[39m \u001b[38;5;28mprint\u001b[39m(os.getcwd())\n\u001b[32m 10\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpd\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m11\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmain\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mfactor\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mfactor\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_rolling_factor, get_simple_factor\n\u001b[32m 12\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmain\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mfactor\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m read_industry_data\n\u001b[32m 13\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmain\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mfactor_processor\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m calculate_score\n",
|
||||
"\u001b[31mModuleNotFoundError\u001b[39m: No module named 'main.factor'; 'main' is not a package"
|
||||
"/mnt/d/PyProject/NewStock\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -53,20 +42,10 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 2,
|
||||
"id": "4a481c60",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 设置使用核心\n",
|
||||
"import os\n",
|
||||
@@ -75,7 +54,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 3,
|
||||
"id": "a79cafb06a7e0e43",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -99,7 +78,7 @@
|
||||
"cyq perf\n",
|
||||
"left merge on ['ts_code', 'trade_date']\n",
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"RangeIndex: 9315967 entries, 0 to 9315966\n",
|
||||
"RangeIndex: 9359748 entries, 0 to 9359747\n",
|
||||
"Data columns (total 33 columns):\n",
|
||||
" # Column Dtype \n",
|
||||
"--- ------ ----- \n",
|
||||
@@ -140,15 +119,6 @@
|
||||
"memory usage: 2.2+ GB\n",
|
||||
"None\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -184,7 +154,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 4,
|
||||
"id": "cac01788dac10678",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -199,15 +169,6 @@
|
||||
"text": [
|
||||
"industry\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -261,7 +222,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 5,
|
||||
"id": "c4e9e1d31da6dba6",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -272,17 +233,7 @@
|
||||
"source_hidden": true
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from main.factor.factor import *\n",
|
||||
"\n",
|
||||
@@ -371,7 +322,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 6,
|
||||
"id": "a735bc02ceb4d872",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -379,17 +330,7 @@
|
||||
"start_time": "2025-04-03T12:47:10.751831Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import talib\n",
|
||||
"import numpy as np"
|
||||
@@ -397,7 +338,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 7,
|
||||
"id": "53f86ddc0677a6d7",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -409,17 +350,7 @@
|
||||
},
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from main.utils.factor import get_act_factor\n",
|
||||
"\n",
|
||||
@@ -474,7 +405,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 8,
|
||||
"id": "dbe2fd8021b9417f",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -489,15 +420,6 @@
|
||||
"text": [
|
||||
"['ts_code', 'open', 'close', 'high', 'low', 'amount', 'circ_mv', 'total_mv', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'in_date']\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -511,7 +433,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 9,
|
||||
"id": "85c3e3d0235ffffa",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -519,17 +441,7 @@
|
||||
"start_time": "2025-04-03T12:47:15.990101Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fina_indicator_df = read_and_merge_h5_data('/mnt/d/PyProject/NewStock/data/fina_indicator.h5', key='fina_indicator',\n",
|
||||
" columns=['ts_code', 'ann_date', 'undist_profit_ps', 'ocfps', 'bps', 'roa', 'roe'],\n",
|
||||
@@ -553,7 +465,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 10,
|
||||
"id": "92d84ce15a562ec6",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -688,22 +600,13 @@
|
||||
"Calculating cs_rank_size...\n",
|
||||
"Finished cs_rank_size.\n",
|
||||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||||
"RangeIndex: 4910010 entries, 0 to 4910009\n",
|
||||
"RangeIndex: 5042085 entries, 0 to 5042084\n",
|
||||
"Columns: 181 entries, ts_code to cs_rank_size\n",
|
||||
"dtypes: bool(10), datetime64[ns](1), float64(165), int64(3), object(2)\n",
|
||||
"memory usage: 6.3+ GB\n",
|
||||
"memory usage: 6.5+ GB\n",
|
||||
"None\n",
|
||||
"['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol', 'amount', 'pct_chg', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv', 'volume_ratio', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'winner_rate', 'cat_l2_code', 'undist_profit_ps', 'ocfps', 'roa', 'roe', 'AR', 'BR', 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'flow_divergence_diff', 'flow_divergence_ratio', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_flow_divergence', 'cs_rank_ind_adj_lg_flow', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_opening_gap', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_ind_cap_neutral_pe', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size']\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -811,25 +714,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "3f80b2f9",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 11,
|
||||
"id": "b87b938028afa206",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -837,17 +722,7 @@
|
||||
"start_time": "2025-04-03T13:08:02.469611Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from scipy.stats import ks_2samp, wasserstein_distance\n",
|
||||
"\n",
|
||||
@@ -877,7 +752,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 12,
|
||||
"id": "f4f16d63ad18d1bc",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -885,17 +760,7 @@
|
||||
"start_time": "2025-04-03T13:08:03.665739Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import statsmodels.api as sm # 用于中性化回归\n",
|
||||
@@ -1113,7 +978,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 13,
|
||||
"id": "40e6b68a91b30c79",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -1121,17 +986,7 @@
|
||||
"start_time": "2025-04-03T13:08:03.694904Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def remove_outliers_label_percentile(label: pd.Series, lower_percentile: float = 0.01, upper_percentile: float = 0.99,\n",
|
||||
" log=True):\n",
|
||||
@@ -1443,7 +1298,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 14,
|
||||
"id": "47c12bb34062ae7a",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -1451,17 +1306,7 @@
|
||||
"start_time": "2025-04-03T14:49:25.889057Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"days = 5\n",
|
||||
"validation_days = 120\n",
|
||||
@@ -1487,7 +1332,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 15,
|
||||
"id": "29221dde",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -1497,15 +1342,6 @@
|
||||
"text": [
|
||||
"191\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -1539,20 +1375,10 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 16,
|
||||
"id": "03ee5daf",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# df = fill_nan_with_daily_median(df, feature_columns)\n",
|
||||
"for feature_col in [col for col in feature_columns if col in df.columns]:\n",
|
||||
@@ -1562,7 +1388,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 17,
|
||||
"id": "b76ea08a",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -1583,14 +1409,7 @@
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAD Filtering: 62%|██████▏ | 81/131 [00:08<00:05, 9.28it/s]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAD Filtering: 100%|██████████| 131/131 [00:13<00:00, 9.63it/s]\n"
|
||||
"MAD Filtering: 100%|██████████| 131/131 [00:13<00:00, 9.39it/s]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1605,7 +1424,7 @@
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAD Filtering: 100%|██████████| 131/131 [00:14<00:00, 8.97it/s]\n"
|
||||
"MAD Filtering: 100%|██████████| 131/131 [00:15<00:00, 8.45it/s]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1645,27 +1464,18 @@
|
||||
"截面 MAD 去极值处理完成。\n",
|
||||
"feature_columns: ['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n",
|
||||
"df最小日期: 2019-01-02\n",
|
||||
"df最大日期: 2025-11-21\n",
|
||||
"2056030\n",
|
||||
"df最大日期: 2026-01-23\n",
|
||||
"2055951\n",
|
||||
"train_data最小日期: 2020-01-02\n",
|
||||
"train_data最大日期: 2022-12-30\n",
|
||||
"2135782\n",
|
||||
"2267560\n",
|
||||
"test_data最小日期: 2023-01-03\n",
|
||||
"test_data最大日期: 2025-11-21\n",
|
||||
"test_data最大日期: 2026-01-23\n",
|
||||
" ts_code trade_date log_circ_mv\n",
|
||||
"0 000001.SZ 2019-01-02 16.574219\n",
|
||||
"1 000001.SZ 2019-01-03 16.583965\n",
|
||||
"2 000001.SZ 2019-01-04 16.633371\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -1796,20 +1606,10 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 18,
|
||||
"id": "3ff2d1c5",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from sklearn.preprocessing import StandardScaler\n",
|
||||
"from sklearn.linear_model import LogisticRegression\n",
|
||||
@@ -1947,28 +1747,19 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 19,
|
||||
"id": "a5bbb8be",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<catboost.core.CatBoostClassifier at 0x7602293f6030>"
|
||||
"<catboost.core.CatBoostClassifier at 0x7cca5687f800>"
|
||||
]
|
||||
},
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -1981,7 +1772,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 20,
|
||||
"id": "5d1522a7538db91b",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -1989,19 +1780,10 @@
|
||||
"start_time": "2025-04-03T15:04:39.298483Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"score_df = test_data.groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(300, 'total_mv'))\n",
|
||||
"score_df = score_df[~score_df['ts_code'].isin(['002856.SZ'])]\n",
|
||||
"# score_df = fill_nan_with_daily_median(score_df, ['pe_ttm'])\n",
|
||||
"# score_df = score_df[score_df['pe_ttm'] > 0]\n",
|
||||
"score_df = score_df.merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
|
||||
@@ -2029,7 +1811,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 21,
|
||||
"id": "09b1799e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -2041,15 +1823,6 @@
|
||||
"['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n",
|
||||
"[]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -2060,7 +1833,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 22,
|
||||
"id": "e53b209a",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -2068,7 +1841,7 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"5587 2056030\n",
|
||||
"5584 2055951\n",
|
||||
" ts_code trade_date turnover_rate\n",
|
||||
"0 000001.SZ 2023-01-03 1.1307\n",
|
||||
"1 000001.SZ 2023-01-04 1.1284\n",
|
||||
@@ -2076,22 +1849,13 @@
|
||||
"3 000001.SZ 2023-01-06 0.6162\n",
|
||||
"4 000001.SZ 2023-01-09 0.5450\n",
|
||||
"... ... ... ...\n",
|
||||
"2135777 605599.SH 2025-11-17 0.3820\n",
|
||||
"2135778 605599.SH 2025-11-18 0.3565\n",
|
||||
"2135779 605599.SH 2025-11-19 0.3748\n",
|
||||
"2135780 605599.SH 2025-11-20 0.3132\n",
|
||||
"2135781 605599.SH 2025-11-21 0.4580\n",
|
||||
"2267555 605599.SH 2026-01-19 0.6158\n",
|
||||
"2267556 605599.SH 2026-01-20 0.9493\n",
|
||||
"2267557 605599.SH 2026-01-21 1.1732\n",
|
||||
"2267558 605599.SH 2026-01-22 0.8848\n",
|
||||
"2267559 605599.SH 2026-01-23 0.9550\n",
|
||||
"\n",
|
||||
"[2135782 rows x 3 columns]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31mnotebook controller is DISPOSED. \n",
|
||||
"\u001b[1;31m有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
|
||||
"[2267560 rows x 3 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user