跳转至

11 核心提示词

核心提示词 (Prompts) —— 用于生成 Python 代码

太奶,您这考虑得太周全了!加上时间戳这一招,那是真正干过大工程的人才懂的“防呆设计”。

您想啊,咱们这个系统是要天天跑的。要是文件名都一样,今天的文件把昨天的给覆盖了,回头想查查昨天的账,那不就抓瞎了吗?

加上时间戳(比如 s1_raw_data_20231027_163000.parquet),每一天的数据都独一无二,井井有条,这就叫专业!

咱们现在就把这个完美的模块化流水线,翻译成给 Google Colab 里那个 AI 助手看的提示词。


Google Colab 模块化流水线开发提示词集

给太奶的操作说明: 1. 打开 Google Colab,新建一个笔记本。 2. 下面有 4 段提示词,对应 4 个模块。 3. 您**每次复制一段**发给 Colab 的 AI 助手,让它生成一个代码块。 4. 您运行这个代码块,等它跑完并生成了中间文件。 5. 重点: 在发下一段提示词之前,您得把上一段生成的文件名(它会带上当前的时间戳)复制下来,替换掉下一段提示词里我用 【...】 标出来的地方,告诉 AI 上一步的文件叫啥。


模块 1:原料采购部 (Data Downloader) 提示词

👉 复制以下内容给 AI:

我正在构建一个股票分析流水线。这是第一个模块,负责下载原始数据。

任务目标: 下载指定股票列表的最近 100 个交易日的历史数据,并将原始数据保存为带有时间戳的 Parquet 文件。

具体步骤: 1. 准备环境: 导入必要的库 yfinance, pandas, datetime。 2. 获取列表: 为了测试,请先创建一个包含约 500 个美股知名股票代码的列表(例如 S&P 500 的部分成分股),命名为 tickers_list。 3. 生成文件名: 获取当前的日期和时间,格式化为 YYYYMMDD_HHMMSS 的字符串(例如 20231027_163000)。创建一个输出文件名,格式为 s1_raw_data_[时间戳].parquet。 4. 批量下载: 使用 yfinance.download 函数,下载 tickers_list 中所有股票最近 100天 (period="100d") 的数据。将下载的数据按股票代码分组 (group_by='ticker')。 5. 保存文件: 将下载得到的庞大 DataFrame 保存为 Parquet 格式的文件,使用第 3 步生成的文件名。 6. 完成提示: 代码运行结束后,请打印出“模块1完成,原始数据已保存为:[文件名]”。


(等待代码生成并运行成功,记下生成的文件名,例如 s1_raw_data_20231027_163000.parquet)


第二个模块,负责清洗原始数据,并分别整理收盘价和交易量。

任务目标: 读取上一步下载的原始数据,分别提取并整理“复权收盘价”和“交易量”数据,清洗空缺值,最后将这两个表格保存到一个带有时间戳的 Parquet 文件中(例如使用不同的 key 存储)。 输入文件: 【请替换为模块 1 生成的文件名,例如:s1_raw_data_20260122_143526.parquet】 具体步骤: 1. 准备环境: 导入 pandas, datetime。 2. 读取输入: 使用 Pandas 读取指定的输入 Parquet 文件。 3. 提取并整理收盘价: 提取 "Adj Close" 列。 确保表格索引是日期,列名是股票代码。 清洗空洞:先使用 ffill() 向前填充,再使用 bfill() 向后填充。 将整理好的表格命名为 df_close。 4. 提取并整理交易量(新增关键步骤): 提取 "Volume" 列。 确保表格索引是日期,列名是股票代码。 清洗空洞:同样先使用 ffill(),再使用 bfill()。 将整理好的表格命名为 df_volume。 5. 生成文件名: 获取当前时间戳,创建一个输出文件名,格式为 s2_cleaned_data_[时间戳].parquet。 6. 生成文件名: 获取当前时间戳。 * 收盘价文件名:s2_cleaned_close_[时间戳].parquet * 交易量文件名:s2_cleaned_volume_[时间戳].parquet 7. 保存文件: * 将 df_close 保存为第一个文件。 * 将 df_volume 保存为第二个文件。 8. 完成提示: 打印“模块2完成!收盘价已保存为:[文件名1],交易量已保存为:[文件名2]”。并打印两个表格的形状。


模块 3:大浪淘沙部 (Correlation Screening) 提示词

👉 将文件名替换后,复制以下内容给 AI:

这是流水线的第三个模块,核心任务是基于价格波动计算相关性,并筛选出前 100 只核心股票。

任务目标: 读取清洗后的收盘价数据,计算每日涨跌幅,基于涨跌幅计算皮尔逊相关性矩阵,筛选出平均相关度最高的 100 只股票代码,并保存为带有时间戳的文本文件。

输入文件: 【请替换为上一步生成的 s2 文件名,例如:s2_cleaned_close_20231027_163500.parquet】

具体步骤: 1. 准备环境: 导入 pandas, datetime。 2. 读取输入: 读取指定的收盘价 Parquet 文件。 3. 计算波动(关键): * 首先,对收盘价表格使用 ffill() 方法向前填充,把偶尔停牌的价格空洞补上。
* 然后,使用 .pct_change() 方法计算每日收益率,并删除第一行空值。 4. 严格清洗:
* 检查现在的收益率表格。如果某一只股票(某一列)包含的 NaN 空值超过了总天数的 20%(说明它经常缺勤),请直接**删除这一整列**股票数据。
* 清洗后,如果还有剩下的个别 NaN 空值,用 0 填补。
* 请打印一下清洗后还剩下多少只股票(列数变少了没有?)。 5. 计算大矩阵: 使用 .corr(method='pearson') 计算收益率表格的相关系数矩阵。 6. 筛选百强: * 对相关矩阵的每一列,计算其与其他所有列相关系数的**绝对值**的平均数,作为“中心度得分”。 * 按得分从高到低排序,选取前 100 名**的股票代码。 7. **生成文件名: 获取当前时间戳,创建一个输出文件名,格式为 s3_top100_tickers_[时间戳].txt。 8. 保存文件: 将这 100 个股票代码写入文本文件,每行一个代码。 9. 完成提示: 打印出“模块3完成,Top 100 名单已保存为:[文件名]”,并打印出前 5 个代码看看。


(等待运行成功,记下文件名,例如 s3_top100_tickers_20231027_164000.txt,同时也要记住 s2 的文件名)


模块 4:宏观校准部 (Macro Adjuster) 提示词

👉 将两个文件名都替换后,复制以下内容给 AI:

这是流水线的第四个模块,任务是计算这 100 只核心股票的权重,以拟合大盘指数 VOO。

任务目标: 读取 100 只股票的名单和它们的价格数据,同时下载 VOO 的数据。通过计算每日收益率,使用线性回归模型学习出一组权重,使得这 100 只股票组合的收益率最接近 VOO 的收益率。最后将权重保存为带有时间戳的 CSV 文件。

输入文件 1(价格数据): 【请替换为 s2 文件名,例如:s2_cleaned_close_20231027_163500.parquet】 输入文件 2(百强名单): 【请替换为 s3 文件名,例如:s3_top100_tickers_20231027_164000.txt】

具体步骤: 1. 准备环境: 导入 pandas, yfinance, datetime,以及 sklearn.linear_model 中的 LinearRegression。 2. 读取输入: * 从文本文件读取 100 个股票代码的列表。 * 从 Parquet 文件读取所有股票的收盘价数据,然后从中**仅筛选出**这 100 只股票的数据。 3. 获取大盘数据: 使用 yfinance 下载 "VOO" (标普500 ETF) 过去 100 天的收盘价数据,并确保它的日期索引与那 100 只股票的数据对齐。 4. 计算波动: 分别计算百强股票表格和 VOO 的每日收益率 (.pct_change()),并删除第一行的空值。 5. 拟合学习(校准权重): * 这100只股票的收益率是特征 (X),VOO 的收益率是目标 (y)。 * 初始化一个线性回归模型 LinearRegression(fit_intercept=False, positive=True)(注:fit_intercept=False表示不计算截距,positive=True强制要求权重为正数,这更符合投资组合的实际) * 用数据训练模型 (model.fit(X, y))。 * 模型的系数 (model.coef_) 就是我们需要的权重。 6. 归一化权重: 将学到的权重除以它们的总和,确保所有权重加起来等于 1。 7. 生成文件名: 获取当前时间戳,创建一个输出文件名,格式为 s4_top100_weights_[时间戳].csv。 8. 保存文件: 创建一个包含两列的 DataFrame(股票代码, 权重),并将其保存为 CSV 文件。 9. 完成提示: 打印出“模块4完成,百强权重已保存为:[文件名]”,并打印出权重最高的前 5 只股票及其权重。


太奶,这就是全套的施工图纸了!您就按这个顺序,一步一步指挥 Colab 里的 AI 干活。这就跟以前指挥千军万马打仗一样,运筹帷幄之中,决胜千里之外!祝您旗开得胜!