Initial commit: cc-cursor 全链路量化研究平台

7 Sprints 全部完成:
  Sprint 0: 基础设施 (DataManager + MariaDB)
  Sprint 1: 因子引擎 (34因子/12分类)
  Sprint 2: VectorBT 回测 (5策略+截面)
  Sprint 3: Optuna 优化 (+Walk-Forward)
  Sprint 4: ML 模型 (LightGBM+CatBoost)
  Sprint 5: Qwen 情绪因子 (三源新闻+日期对齐)
  Sprint 6: Agent 系统 (4Agent+日报.md/.html)

生产加固 (15项): Tushare双源fallback, SSH自动恢复, pool_pre_ping,
  save_daily先删后插, load_dotenv绝对路径, 日报5d/20d修复,
  RiskAgent改上证指数, 昨日对比+数据截止, mac_report utf8mb4,
  CLAUDE-*.md 9条已知Bug, demo全参数化, djapi数据源归一化,
  indexDatas API修正

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 15:59:05 +08:00
co-authored by Claude Opus 4.7
commit 271a9343a5
293 changed files with 59598 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
import pandas as pd
from .data_source import get_tushare_pro
# 导入当站目录的config文件
try:
# 尝试相对导入(作为包的一部分)
from .config import TS_TOKEN, START_DATE, END_DATE
from .stock_utils import dataCorrect
except (ImportError, SystemError):
# 失败则使用绝对导入(直接运行脚本)
from config import TS_TOKEN, START_DATE, END_DATE
from stock_utils import dataCorrect
def getStockParam(TS_CODE,START_DATE=START_DATE,END_DATE=END_DATE):
pro = get_tushare_pro()
"""
从tushare daily_basic接口获取单只股票的所有基础数据,并进行数据修正。
Parameters:
TS_CODE (str): 股票代码,格式为 '股票代码.SZ''股票代码.SH',例如 '000001.SZ'
Returns:
pd.DataFrame: 包含股票基础数据的DataFrame,字段说明如下:
ts_code: 股票代码
trade_date: 交易日期
close: 收盘价
turnover_rate: 换手率(%
turnover_rate_f: 换手率(自由流通股)
volume_ratio: 量比
pe: 市盈率(总市值/净利润,亏损的PE为空)
pe_ttm: 市盈率(TTM,亏损的PE为空)
pb: 市净率(总市值/净资产)
ps: 市销率(总市值/营业收入)
ps_ttm: 市销率(TTM
dv_ratio: 股息率(%
dv_ttm: 股息率(TTM
total_share: 总股本(万股)
float_share: 流通股本(万股)
free_share: 自由流通股本(万股)
total_mv: 总市值(万元)
circ_mv: 流通市值(万元)
Raises:
Exception: 如果从Tushare接口获取数据时发生错误。
"""
try:
# 获取股票基础数据
df = pro.daily_basic(ts_code=TS_CODE, start_date=START_DATE, end_date=END_DATE)
# 需要修正的列
cols = ['close', 'turnover_rate', 'turnover_rate_f', 'volume_ratio', 'pe', 'pe_ttm',
'pb', 'ps', 'ps_ttm', 'dv_ratio', 'dv_ttm', 'total_share', 'float_share',
'free_share', 'total_mv', 'circ_mv']
# 调用dataCorrect函数进行数据修正
df = dataCorrect(df, cols)
return df
except Exception as e:
# 捕获并处理异常
print(f"错误: 获取股票 {TS_CODE} 的基础数据时发生错误: {e}")
return pd.DataFrame()
if __name__ == "__main__":
# 简单测试
import datetime
yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y%m%d")
test_df = getStockParam("601398.SH", START_DATE=yesterday, END_DATE=yesterday)
print(test_df)