Series 与 DataFrame 基础
周二上午 9 点半,上证刚开盘。你坐在一家中型私募的研究台,手边是一段从 3.2.1 留下的 NumPy 代码:一个 (T, N) 的日对数收益矩阵, T = 244 , N = 3 ,列依次是 510300.SH、600519.SH、000001.SZ。你想把 600519.SH 在 2024 02 08(春节休市前最后一个交易日)这天的收益单独捞出来——...
打开 →GLOBAL SEARCH
搜索在服务端完成,题目解析与答案不会进入搜索结果。登录后可搜索自己的收藏题单。
找到 22 个结果
中文题目周二上午 9 点半,上证刚开盘。你坐在一家中型私募的研究台,手边是一段从 3.2.1 留下的 NumPy 代码:一个 (T, N) 的日对数收益矩阵, T = 244 , N = 3 ,列依次是 510300.SH、600519.SH、000001.SZ。你想把 600519.SH 在 2024 02 08(春节休市前最后一个交易日)这天的收益单独捞出来——...
打开 →周一早晨九点,你在一家私募的研究台上收到上游数据团队推过来的 510300 2024.csv ——沪深300 ETF 在 2024 年 1 月的日线行情。你打算直接 df = pd.read csv(path) 然后开始写信号,结果跑出来的 DataFrame 漏洞密布: close 列的 dtype 是 object 而不是 float64 (因为有三行写...
打开 →周二下午两点,私募研究台。你手里堆着三张表:一张是 20 个交易日 × 3 只票( 600519.SH 、 000001.SZ 、 600036.SH )的长格式日收益,共 60 行 (date, ticker, return) ;一张是申万一级行业查找表( 600519.SH → 食品饮料 、 000001.SZ → 银行 、 600036.SH → 银行...
打开 →下午两点,私募研究台。你拉到一份 510300.SH(沪深300 ETF)近 10 个 SSE 交易日的分钟 bar,存储里的时间戳是 UTC,列只有 price (这一分钟末的成交价)与 volume (这一分钟的成交股数)。任务很短:把它降到日 bar,算每天的简单收益(simple return)与 5 日年化滚动波动(rolling annualiz...
打开 →周一上午 9 点 40 分,浦东陆家嘴一家中型私募的研究台。PM 转过头来:「上周那个 A 股小篮子—— 600519.SH 、 000001.SZ 、 600036.SH ——把 2024 年全年的因子摘要(tear sheet)给我,按申万一级行业把夏普汇总一下,下午三点的月会要用。」你看了一眼磁盘:L4 那道时间序列流水线吐出的 closes.parq...
打开 →某私募的固定收益研究员要把过去三个月的 10 年期中国国债收益率拉成时间序列,放进久期模型的样本。AKShare 的公开接口 ak.bond china yield 不要 token、本地能跑、数据按日更新——但研究 notebook 一旦在用户面前演示时撞上 429,整场会议就要等十分钟手动 retry。本课把 AKShare 调用包成一个 fetch y...
打开 →周一早盘前,你接手了一笔策略回测:沪深300 ETF(510300.SH)一年的日线,要算每日对数收益率(daily log return)。上一课你已经能把 CSV 流过来、用生成器逐行解析、再用 dataclass 装好。可一旦真要算数,你写下的还是那段熟悉的循环: 十二行能写完,对一年 252 个交易日尚可。可同样一段逻辑会出现在每一份回测脚本里——一...
打开 →周二下午两点,某上海私募的股票池经理把你叫到工位前:要 600519.SH 对沪深300 ETF(510300.SH)的市场 β,日简单收益(daily simple return),近252个交易日窗口,今晚9点前要见。教科书答案一行就能解决: beta = Cov(r stock, r mkt) / Var(r mkt) 。工程答案稍长:把 [1, r ...
打开 →某私募的研究员把一个 Jupyter notebook 推过来:他们在沪深300成份股上扫了 500 万个 (S, K, σ, t) 参数组合,目标是给隐含波动率曲面拟合做敏感度分析。纯 Python + scipy.stats.norm.cdf 跑了 47 分钟,他要的是把这一步压到 5 分钟以内,但策略迭代仍然由他在 notebook 里驱动——研究员不...
打开 →开场 某私募周四下午,团队为沪深300 ETF 期权准备了四个定价器口味——Black Scholes 看涨、Black Scholes 看跌、二叉树、蒙特卡洛。研究主管开了一次代码评审,发现生产代码里有一个 StrategyFactoryAbstract 抽象类、两个 AbstractPricerBuilder 子类、Confluence 上一张 60 行...
打开 →周三早上 9:25,上海某 私募基金 的 A 股因子组讨论是否把全球因子框架直接移植到 A 股。组合工程师拿出一份 Wind 拉数据跑的 FF3 回测,显示 A 股 SMB 年化约 10%、 夏普比率 0.50、 最大回撤 约 40%——比美股 SMB 表头数字高三倍。基金经理表示怀疑,问出公开 CN 因子文献当年正是为回答而写的那个问...
打开 →周三下午两点。一家 A 股 私募 的资深同事打开你的 MR,标题是 feat(risk): 添加 沪深300 因子 z 列至业绩归因 。改了 12 个文件。二十秒之内审查线上铺满了「文件末尾多一个空行」「这个 import 没用到」「第 47 行行尾有空白」「import 没排序」之类的评论。你能感到审查时间正在漏走——这些评论没一条是关于你因子逻辑对不对的...
打开 →周三下午,你在上海的一家 量化 私募。L1 走通了 12 1 动量 的 IC 与 IR 报告,头条 数字 是 月度 rank IC ≈ 0.03、 IR ≈ 0.5。 在 投决会 上 提交 前,合规 与 交易 部门 同时 提了 三 个 问题:这个 IC 在 多 长 视界 上 仍然 有效? 月度 跑 一遍 会 产生 多大 换手率? 等到 私募 规模 上到 5 ...
打开 →某私募的量化基础设施工程师把一个棘手问题摆到桌上:回测代码一份要在 CI 上跑(必须 deterministic、必须秒级、必须无网络),另一份要在研究 notebook 里跑(必须真接口、必须有缓存),两边的调用点不能动。本课把前三节的全部产物——L1 的 simulate basket 、L2 的 make cohort ,L3 的 fetch yiel...
打开 →周五晚上,某私募量化研究员要对一个 20 只股票的行业轮动策略做半年回测,需要一个 (T=252, N=20) 的日收益矩阵。问题是平台的合规决策写得很清楚:不接行情数据牌照,所有训练样例只能跑合成数据。CSV 里没有,卖方接口也没有,只能自己生成。这一课给出最小可复现的配方:一颗确定的随机种子、对数欧拉离散化的 GBM 一步、用 Cholesky 分解构造...
打开 →某家私募的因子研究员要演示一个多因子打分模型,需要 200 家"虚拟公司"的横截面:每家要有行业、市值、贝塔、价值/动量/质量三个因子分,且这些字段之间的相关结构得接近真实 A 股名单。另一边,执行成本组要演示成本拆解,需要一段带买卖价差与成交大小的合成 tick 流。两段需求都不能动行情数据牌照——上一课只能产价格路径,这一课要把它扩成横截面与微观结构。本...
打开 →一家面向沪深300成分股的私募基金新来的研究员,把基本面盈利筛选的多空组合回测呈到投委会:年化 6.4%,夏普 0.9,t 值 2.5。基金经理只说一句:「先把因子控掉再来汇报 alpha。」研究员意识到自己说不清三件事——「因子」指哪几个、为什么是这几个、基金经理隐含的是哪个检验。本节课就是这道问题的答卷。你会从 1964 年的 CAPM,走到 2015 ...
打开 →周一早上 7:40,上海陆家嘴某头部私募的量化股票部。你按 4.3.1 走完了一套候选五因子模型——二维分组的十分位单调、Fama MacBeth 截面回归的斜率在样本内显著为正、按 HLZ 多重检验罚分调整后仍有可观利差。基金经理点了点头看完 IC 图,然后问出每一份研报必须先回答的那个问题:"好——但它真的 赚到钱 了吗?"4.3.1 给你的是因子构造的...
打开 →Hook 周三晚上九点,深圳一家私募的波动率小组要在 T+1 风控窗口前更新沪深300 ETF(510300.SH)覆盖期权组合的隔夜 VaR 输入。研究员把上节课的 ProcessPoolExecutor 推到了 32 颗核,但每个标的 5,000 个交易日的 GARCH(1,1) 方差递推单跑仍要 0.8 秒——把 800 只 A 股一起标定就是 10 ...
打开 →国内某量化私募的因子研究负责人,在沪深300成分股范围内向新来的研究员提出一个任务:「在我们的股票宇宙里把 AQR 的 quality minus junk 因子搭出来,然后告诉我它该以常规权重、收缩权重、影子组合、还是直接剔除的方式进入生产合成因子。」研究员对前四节内容了然于胸——L1 因子定价模型、L2 异象清单、L3 构建工艺、L4 经济故事。这个问题...
打开 →周三上午十点,一家私募的研究员把上一课写好的 (252, 3) 沪深300 成分股日收益矩阵 returns 甩进 Jupyter,敲下 returns.mean() ,得到一个标量 0.00042 。他把这个数贴进周报,标题写「样本期内组合日均收益约 4 个基点」——这句话有问题。 returns.mean() 在没有 axis 参数时会把整个矩阵展平成一...
打开 →某个周二早晨,沪深 300 量化私募的基金经理走过来:『把过去两周 510050 、 510500 、 510300 的日 VWAP 拉给我,按当日收益做横截面排名,只要 close 非空的行』。数据存在研究数据仓库里——一台部署在内网的 Postgres / PolarDB O 上, bars 1m 1 分钟 K 线表和 instrument 维度表通过外...
打开 →