从美赛C题看量化交易策略:建模思路、回测实现与风险控制
1. 项目概述:一次从“翻译”到“建模”的深度思维跃迁
每年一度的美国大学生数学建模竞赛(MCM/ICM),对于全球的本科生来说,都是一场智力与耐力的双重考验。2022年的C题,以其独特的背景和开放性的要求,再次成为了众多参赛队伍的焦点与难点。很多人拿到题目后的第一反应,就是“翻译”和“理解题意”。这看似简单的两步,恰恰是决定整个四天赛程走向的基石。我参与和指导过多次美赛,深知“题意理解”绝非字面翻译那么简单,它是一个将模糊的自然语言描述,转化为清晰、可量化、可执行的数学建模问题的系统性工程。今天,我就以2022年C题为例,完整复盘一次从“读题”到“破题”的全过程,分享如何穿透文字表象,抓住命题核心,并构建起有效的解题框架。无论你是即将参赛的新手,还是希望提升建模思维的老手,这篇深度解析都能为你提供一套可复用的方法论。
2. 赛题全景扫描与核心需求拆解
2.1 原题回顾与初步印象
2022年MCM/ICM的C题标题为“ Trading Strategies ”(交易策略)。题目背景大致是:投资者希望开发一个交易策略,用于交易两种资产:一只波动较大的股票(如GameStop, GME)和一只波动较小的黄金ETF(如GLD)。题目提供了这两只资产从2016年9月到2021年9月的每日价格数据。核心任务是:利用这些历史数据,开发、回测并论证一个交易策略,该策略需要决定每天是持有现金、买入GME、买入GLD,还是进行组合投资,目标是最大化最终的总资产价值。
第一眼看去,这是一个典型的 金融时间序列分析与量化交易策略 问题。关键词非常明确:“交易策略”、“历史数据”、“回测”、“最大化总资产”。对于有一定金融或数据分析背景的同学,可能会立刻联想到均值回归、动量策略、马科维茨投资组合理论等经典模型。但美赛的狡猾之处在于,它永远不会让你直接套用课本模型。题目中埋藏着几个需要深度解读的“钩子”。
2.2 题意深度解构:超越字面翻译的五个关键问题
机械的翻译只能得到字面意思,而建模需要的是对问题边界和内涵的精确界定。我们需要像侦探一样,对题目描述进行逐句剖析,提出并回答以下五个关键问题:
-
“交易策略”的具体形态是什么? 题目要求的是一个 每日决策 规则。这意味着策略必须是一个算法或模型,输入是截至当天的历史信息(可能包括价格、技术指标、市场状态等),输出是第二天的资产配置指令(如:100%现金, 或 70% GME + 30% GLD)。它不能是一个事后总结的规律,而必须是一个可执行的、向前看的规则。
-
“利用历史数据”的边界在哪里? 这是最容易产生歧义的地方。策略的开发和回测都使用同一段历史数据。那么,在回测时,策略 只能使用到决策当天为止的历史数据 ,绝不能使用未来的数据(即“未来函数”)。例如,在回测2017年1月3日的决策时,你的策略模型只能基于2016年9月到2017年1月2日的数据进行训练或计算。这一点是量化回测的生命线,违反就意味着策略无效。
-
“最大化最终总资产”是唯一目标吗? 表面上是的,但一个有说服力的策略绝不能只看最终收益。一个策略如果中途回撤(资产大幅下跌)极大,即使最终赚钱,也可能因为投资者无法承受心理压力而被提前放弃。因此,在评估策略时, 风险调整后收益 的概念必须引入。你需要同时考虑夏普比率、最大回撤、胜率、盈亏比等指标,来全面评价策略的优劣。
-
交易成本与约束条件是否考虑? 原题没有明确提及交易手续费、印花税、滑点等现实成本,也没有限制杠杆、做空或仓位比例。这给了我们自由度,但也带来了风险。一个严谨的模型应当 主动考虑并说明 这些因素。常见的处理方式是:在基础模型中先忽略成本以简化问题,在模型优化或敏感性分析中,加入一个固定比例(如0.1%)的交易成本,检验策略的鲁棒性。同时,需要明确假设是否允许做空(卖空),仓位是否必须100%分配(即现金+两种资产的投资比例总和为1)。
-
“开发、回测并论证”的具体产出是什么? 这直接对应论文的结构。你的论文必须清晰展示:策略的 数学模型或算法流程 (开发)、在给定历史数据上运行的 模拟结果与绩效指标 (回测)、以及与其他基准策略(如买入持有、简单移动平均交叉)的 对比分析 (论证)。论证部分尤其重要,需要解释为什么你的策略逻辑是合理的,以及它在不同市场阶段(如GME的暴涨暴跌期、黄金的平稳期)的表现如何。
注意 :很多队伍在这里会犯一个致命错误——把“开发策略”等同于“找到一个在历史数据上拟合最好的参数组合”。这本质上是过度优化和曲线拟合,会导致策略在未来失效。正确的思路是,策略应该基于某种 经济学或行为金融学原理 (如投资者情绪、波动率聚类),使其逻辑具有普适性,然后在历史数据上验证该逻辑的有效性。
3. 核心建模思路与方案选型解析
3.1 主流建模路径的对比与抉择
基于对题意的理解,我们可以梳理出几条主流的建模路径。选择哪一条,取决于队伍的知识储备和对问题的判断。
路径一:基于传统投资组合理论的动态优化模型 这是最“正统”的学术思路。核心是利用马科维茨的均值-方差模型,但将其动态化。每天,根据过去一段时间(如60个交易日)的历史数据,估计GME和GLD的预期收益率和协方差矩阵,然后以某种目标(如最大化夏普比率、最小化风险)求解最优资产配置权重。
- 优势 :理论扎实,逻辑清晰,论文容易体现数学深度。
- 挑战 :金融数据的预期收益率极难准确估计,微小的估计误差会导致权重剧烈波动,产生不切实际的频繁调仓。而且,该模型对极端事件(如GME轧空)的捕捉能力很弱。
- 实操要点 :必须加入正则化或收缩估计来稳定协方差矩阵,并设置换手率约束来控制交易频率。
路径二:基于市场状态识别的机制转换模型 这条路径认为市场存在不同的“状态”(如“高波动趋势市”、“低震荡市”、“恐慌下跌市”)。策略的核心是先利用历史数据识别当前市场处于何种状态,再根据预设的、适合该状态的子策略进行资产配置。例如,用隐马尔可夫模型(HMM)或GARCH模型聚类来识别状态。
- 优势 :直观符合认知,能有效处理GME和GLD截然不同的波动特性。策略逻辑易于解释。
- 挑战 :状态的定义和识别具有主观性,模型可能复杂。
- 实操要点 :状态数量不宜过多(2-3个为宜),每个状态下的子策略应简单明了(如趋势状态下追涨杀跌,震荡状态下高抛低吸)。
路径三:基于机器学习/深度学习的预测与决策模型 这是近年来非常热门的思路。将问题构建为一个监督学习任务:用过去N天的价格序列、技术指标等作为特征(X),预测未来M天的价格走势或最佳操作(Y)。模型可以是LSTM、Transformer等深度网络,也可以是XGBoost等集成算法。
- 优势 :潜力巨大,能捕捉复杂的非线性关系。
- 劣势 :对于仅5年的日频数据,数据量可能不足,极易过拟合。模型是“黑箱”,可解释性差,在美赛这种需要清晰阐述逻辑的比赛中是硬伤。计算资源要求高。
- 实操要点 :如果选用,必须采用严格的交叉验证防止过拟合,并花费大量篇幅进行特征工程和模型解释(如使用SHAP值)。
路径四:基于简单规则与信号合成的实用型策略 这是我最推荐大多数队伍采用的路径。它不追求复杂的模型,而是基于对资产特性的观察,设计几条简单、逻辑清晰的交易规则,然后将它们组合起来。例如:
- 规则A(趋势跟踪) :当GME价格上穿其30日移动平均线时,认为其处于上升趋势,增加GME仓位。
- 规则B(波动率控制) :当GME的布林带宽度(波动率)超过某一阈值时,降低仓位,转向GLD或现金避险。
- 规则C(均值回归) :当GLD价格偏离其长期均线超过一个标准差时,反向操作。
- 合成 :每天根据各规则产生的信号(如-1到+1的分数),加权合成一个最终的综合信号,用于指导仓位。
- 优势 :逻辑透明,易于实现和调试,计算快,过拟合风险低。非常容易在论文中讲一个好故事。
- 挑战 :规则和参数需要基于合理的金融逻辑设定,不能是纯粹的数据挖掘。
3.2 我们的选择与理由:混合型实用策略框架
在综合评估后,我们当时选择了一条 以路径四为核心,吸收路径二思想 的混合框架。具体思路如下:
-
市场状态粗筛 :我们并不建立复杂的统计模型来识别状态,而是根据两个资产的波动率相对关系,定义一个简单的“市场情绪”指标。例如,计算GME过去20日的波动率与GLD过去20日波动率的比值。当比值极高时,认为市场处于“GME主导的投机狂热期”;当比值很低时,认为是“平稳期”。在不同时期,启用不同的规则权重。
-
多因子信号系统 :我们为GME和GLD分别设计3-4个独立的交易信号因子。
- 趋势因子 :双移动平均线交叉(快线:10日,慢线:30日)。
- 动量因子 :过去N日收益率(如5日、20日)。
- 波动率因子 :布林带收口/开口状态,或ATR(平均真实波幅)的变化率。
- 相对价值因子 (主要用于GLD):价格与60日移动平均线的偏离百分比。 每个因子都会输出一个标准化的信号值(例如,-1代表强烈看空,0代表中性,+1代表强烈看多)。
-
动态加权与仓位合成 :最终的每日仓位,不是由一个模型说了算,而是由上述所有因子的信号加权平均决定。关键在于, 权重不是固定的 ,而是根据第一步的“市场情绪”指标动态调整。在“投机狂热期”,GME的趋势和动量因子权重加大;在“平稳期”,GLD的价值因子和波动率因子权重加大。现金仓位则由整体信号的强度决定,当所有信号都很弱或矛盾时,提高现金比例。
-
风险控制层 :这是一个独立的模块。无论信号系统给出的仓位建议是什么,都必须经过风险控制层的检查。我们设置了两个硬性风控规则:
- 最大回撤止损 :当策略从历史最高点回撤超过15%时,强制将仓位降至50%以下。
- 单资产暴露限制 :任何单一资产(GME或GLD)的仓位不超过总资产的70%。 这个风控层是策略稳健性的关键保障。
这个框架的优势在于:它既有清晰的逻辑脉络(状态识别→因子分析→加权合成→风控),又保持了足够的灵活性;它避免了复杂模型的估计难题,所有规则都直观可解释;它通过动态权重和风控层,自然地实现了策略的适应性。
4. 数据预处理与特征工程实战细节
4.1 原始数据清洗与格式化
组委会提供的数据通常是CSV格式,包含 Date , GME , GLD 三列。第一步绝不是直接丢进模型。
- 日期格式化 :确保
Date列被正确解析为datetime格式,并设置为索引。 - 处理缺失值 :检查是否存在节假日导致的缺失交易日。对于日级数据,通常采用前向填充(用前一天的价格)处理,因为资产价格在未交易时是不变的。
- 计算收益率 :这是所有分析的基础。使用对数收益率(
log(Price_t / Price_{t-1}))而非简单收益率,因为对数收益率具有可加性,更适合时间序列分析。 - 数据对齐 :确保GME和GLD的日期索引完全一致,防止错位。
# 示例代码 (Python with pandas)
import pandas as pd
import numpy as np
# 读取数据
df = pd.read_csv('MCM2022C_Data.csv', parse_dates=['Date'], index_col='Date')
# 检查缺失
print(df.isnull().sum())
# 前向填充(如果需要)
df.fillna(method='ffill', inplace=True)
# 计算对数收益率
df['GME_Return'] = np.log(df['GME'] / df['GME'].shift(1))
df['GLD_Return'] = np.log(df['GLD'] / df['GLD'].shift(1))
# 删除第一行NaN
df.dropna(inplace=True)
4.2 核心特征(因子)构造详解
特征工程是策略的灵魂。我们基于价格序列构造了以下几类特征:
1. 趋势类特征:
- 移动平均线(MA) :
MA(10),MA(30),MA(60)。计算价格与不同周期均线的位置关系(如Price / MA(10) - 1)。 - MACD :计算DIF、DEA和MACD柱,可以将其标准化为信号。
2. 动量类特征:
- N日收益率 :
Return_5,Return_20。直接使用之前计算的对数收益率。 - RSI(相对强弱指数) :通常取14日周期,衡量价格变动速度和幅度。
3. 波动率类特征:
- 滚动标准差 :
Volatility_20 = Returns.rolling(20).std()。 - 布林带 :中轨为
MA(20),上下轨为加减2倍20日滚动标准差。构造特征如(Price - Lower Band) / (Upper Band - Lower Band)(布林带百分比),以及带宽(Upper Band - Lower Band) / Middle Band。
4. 成交量相关特征(本题无成交量数据,但可模拟):
- 虽然题目未提供成交量,但我们可以用价格波动幅度(如日内最高最低价差,本题只有收盘价,故可用收益率绝对值)来近似衡量“能量”或“关注度”。
5. 跨资产关系特征:
- 相关性 :滚动计算GME和GLD收益率在过去60日的相关系数。相关性低或转负时,可能意味着分散化机会。
- 相对强弱 :
GME_Price / GLD_Price的比值序列,及其移动平均。可以判断资金在两类资产间的轮动。
实操心得 :特征不是越多越好。每个特征都应该有明确的经济学或行为学解释。在构造完特征后,一定要进行 可视化分析 ,画图看看这个特征在极端行情(如2021年1月GME轧空)前后是如何变化的,这能帮你理解特征的有效性,并发现潜在的数据窥探偏差。
4.3 训练集与测试集的划分陷阱
这是一个 至关重要 且极易出错的环节。由于我们要进行历史回测,必须严格模拟实盘过程。 绝对不能 随机划分训练集和测试集,也不能用全部数据训练后再在全部数据上测试。
正确的方法是采用 滚动时间窗口 或 扩展时间窗口 的方式进行“走遍”回测。
- 滚动窗口 :假设我们用一个长度为
L(如500天)的窗口来训练策略或估计参数。回测从第L+1天开始。对于第L+1天的决策,我们使用第1天到第L天的数据;对于第L+2天的决策,我们使用第2天到第L+1天的数据,以此类推。这种方法假设最近的L天数据最具代表性。 - 扩展窗口 :对于第
L+1天的决策,我们使用从第1天到第L天的所有数据;对于第L+2天的决策,我们使用从第1天到第L+1天的所有数据,窗口不断扩大。这种方法利用了所有可用历史信息。
对于本题,考虑到数据总量约5年(约1250个交易日),我推荐使用 扩展窗口 。因为初期数据量本就不大,滚动窗口会浪费早期数据。我们的策略规则参数应尽量少且基于逻辑设定,而不是依赖数据拟合,因此对窗口方法不敏感,但回测过程必须遵守此流程以杜绝未来函数。
5. 策略实现、回测与绩效评估全流程
5.1 策略逻辑的代码化实现
以我们之前提到的混合框架为例,实现步骤如下:
- 初始化 :设定初始资金(如10000美元),持仓(GME, GLD, Cash均为0),记录资金曲线的列表。
- 主循环 :按时间顺序遍历每一个交易日
t(从足够计算特征的日期之后开始)。 - 特征计算 :在时间点
t,我们只能使用t及之前的数据。计算所有需要的技术指标和特征。 - 状态判断 :根据
t时刻的特征(如波动率比值),判断当前市场状态。 - 信号生成 :根据状态,调用相应的因子计算函数,得到各因子对GME和GLD的信号值(如-1到1)。
- 动态加权 :根据当前状态,确定各因子的权重,加权合成GME和GLD的最终综合信号
Sig_GME,Sig_GLD。 - 仓位映射 :将连续信号映射为目标仓位。这里可以采用简单的分段函数,例如:
Sig > 0.5-> 目标仓位比例 80%0 < Sig <= 0.5-> 目标仓位比例 40% * Sig (线性增长)Sig = 0-> 目标仓位 0%Sig < 0-> 允许做空则负仓位,否则为0。 同时,确保GME和GLD的仓位之和加上现金等于1(100%)。现金比例可以设为1 - abs(Position_GME) - abs(Position_GLD),但通常我们会保留一部分现金作为缓冲。
- 风控覆盖 :检查风控规则。如果触发最大回撤止损,则强制将总仓位降低。如果单资产超限,则进行调平。
- 执行交易 :比较当前持仓与目标持仓的差异,生成交易指令。计算交易成本(如双边0.1%),更新现金和资产数量。
- 更新账户 :根据
t+1天的价格(在回测中我们是已知的,但策略在t天不知道),更新持仓市值,计算总资产,记录资金曲线。
# 简化版策略主循环伪代码
initial_capital = 10000
capital = initial_capital
positions = {'GME': 0, 'GLD': 0, 'Cash': initial_capital}
portfolio_values = []
for t in range(L, len(df)): # L是足够计算特征的最早日期
# 1. 获取截至t日的数据
data_window = df.iloc[:t+1] # 注意:严格使用过去数据
# 2. 计算t日特征
features_t = calculate_features(data_window)
# 3. 判断市场状态
market_state = judge_market_state(features_t)
# 4. 生成信号
sig_gme, sig_gld = generate_signals(features_t, market_state)
# 5. 信号转目标仓位
target_pos_gme = signal_to_position(sig_gme)
target_pos_gld = signal_to_position(sig_gld)
# 6. 风控调整
target_pos_gme, target_pos_gld = risk_control(target_pos_gme, target_pos_gld, portfolio_values)
# 7. 执行调仓
execute_trade(t, positions, target_pos_gme, target_pos_gld, df['GME'].iloc[t], df['GLD'].iloc[t])
# 8. 更新账户价值(使用t+1日价格,模拟当日收盘后调仓,次日开盘成交)
if t+1 < len(df):
value = positions['GME']*df['GME'].iloc[t+1] + positions['GLD']*df['GLD'].iloc[t+1] + positions['Cash']
portfolio_values.append(value)
# 计算绩效指标
returns = pd.Series(portfolio_values).pct_change().dropna()
5.2 绩效评估:超越“最终资产”的全面视角
回测结束后,不能只看最终资产。一套完整的绩效评估体系应包括:
- 绝对收益指标 :
- 总收益率
(Final_Value - Initial_Capital) / Initial_Capital - 年化收益率
- 总收益率
- 风险指标 :
- 年化波动率
- 最大回撤
Max Drawdown:历史最大亏损幅度,是衡量策略风险的关键。 - Calmar比率 :年化收益率 / 最大回撤。这个指标在评价高波动策略时比夏普比率更直观。
- 风险调整后收益指标 :
- 夏普比率
Sharpe Ratio: (年化收益率 - 无风险利率) / 年化波动率。假设无风险利率为0。 - 索提诺比率
Sortino Ratio: 只考虑下行波动率,更适合评价有止损的策略。
- 夏普比率
- 其他实用指标 :
- 胜率
Win Rate:盈利交易次数占总交易次数的比例。 - 盈亏比
Profit/Loss Ratio:平均盈利额 / 平均亏损额。 - 交易次数与换手率:评估策略的交易频率和成本敏感性。
- 胜率
必须进行对比分析 !将你的策略与至少两个基准策略比较:
- 买入持有(Buy & Hold) :期初将所有资金按1:1买入GME和GLD,然后一直持有到期末。这是最基础的被动策略。
- 简单动态策略 :例如,简单的双均线金叉死叉策略。这能证明你的复杂策略是否真的增加了价值。
使用表格清晰展示对比结果:
| 绩效指标 | 我们的策略 | 买入持有 (50% GME, 50% GLD) | 简单双均线策略 |
|---|---|---|---|
| 最终资产($) | 15,800 | 12,500 | 14,200 |
| 总收益率 | 58.0% | 25.0% | 42.0% |
| 年化收益率 | 9.6% | 4.6% | 7.3% |
| 最大回撤 | -18.5% | -34.7% | -25.1% |
| Calmar比率 | 0.52 | 0.13 | 0.29 |
| 夏普比率 | 0.85 | 0.41 | 0.68 |
| 交易次数 | 45 | 1 | 22 |
通过这样的对比,你可以有力地论证:你的策略不仅在收益上超越了基准,更重要的是,它通过有效的动态调整和风控, 显著降低了最大回撤 (从-34.7%提升到-18.5%),从而获得了更高的风险调整后收益(Calmar和夏普比率均领先)。这才是策略的核心价值所在。
6. 论文写作核心要点与避坑指南
6.1 模型阐述:讲一个好故事
美赛论文评审专家可能只有十几分钟看你的文章。你必须用最清晰的方式讲明你的策略故事。
- 摘要 :用一段话概括全部。遵循“问题-方法-关键步骤-核心结论-优势”的结构。例如:“本文针对…问题,开发了一个基于多因子动态加权的交易策略。首先,我们…;然后,…;最后,…。回测显示,该策略实现了XX%的年化收益,最大回撤仅为XX%,显著优于基准。模型的优势在于…”
- 模型假设 :明确列出。例如:“假设交易成本为0.1%”、“假设允许无限制做空”、“假设每日收盘价成交”等。这定义了模型的边界。
- 符号说明 :在模型建立前,用表格列出所有关键变量和符号。
- 模型流程图 :一张清晰的流程图(可以用Visio或draw.io绘制)胜过千言万语。展示从数据输入、到状态判断、因子计算、加权合成、风控、最终输出仓位的完整逻辑链。
- 分模块阐述 :对应论文主体部分。每个模块(如数据预处理、特征工程、核心策略模型、风控模块)单独一小节,详细说明其数学公式、算法步骤和设计理由。
6.2 结果可视化:一图胜千言
图表是论文的颜值担当。
- 资金曲线对比图 :将你的策略、买入持有、简单策略的资金曲线画在同一张图上,并用不同颜色区分。这是最直观的展示。
- 策略仓位变动图 :用面积图展示随着时间推移,GME、GLD和现金的仓位比例变化。这能清晰展示策略的动态调整行为。
- 回撤图 :专门绘制策略的历史回撤曲线,标注最大回撤发生的时间和幅度。
- 信号与价格叠加图 :选取一段典型时期(如GME暴涨期),将价格走势与你策略生成的买卖信号(或仓位变化)画在一起,直观展示策略的择时能力。
- 绩效指标对比表格 :如前文所示,务必使用表格。
6.3 敏感性分析与模型检验
这是体现模型稳健性和思维深度的关键部分。
- 参数敏感性 :你的策略中可能有一些参数,如移动平均线的周期、信号阈值、风控阈值等。进行敏感性分析,轻微改变这些参数(例如±20%),观察策略绩效的变化是否剧烈。如果绩效稳定,说明策略鲁棒性好;如果变化剧烈,则需要反思策略是否过度拟合。
- 交易成本敏感性 :测试交易成本从0%增加到0.2%时,策略净收益的变化。这能说明策略对成本的承受能力。
- 样本外测试(如果可能) :虽然题目只给了一段数据,但你可以尝试将最后6个月或1年的数据“留作”样本外测试。用之前的数据“开发”策略(确定规则和参数),然后在最后一段从未见过的数据上运行。这是检验过拟合的黄金标准。
6.4 常见陷阱与致命错误
- 未来函数 :在回测中使用了未来的数据。这是最严重、最致命的错误,会导致策略结果完全不可信。务必反复检查代码中每个特征的计算窗口。
- 过度优化/数据窥探 :在全部数据上反复测试和调整参数,直到找到表现最好的一组。这相当于“偷看了答案”,该策略在未来必然失效。解决方案是: 基于逻辑设定参数 (如30日均线代表中期趋势),或者采用严谨的滚动窗口优化方法。
- 忽略交易成本 :即使题目没提,也必须在分析中讨论。一个频繁交易但收益微薄的策略,加上成本后可能就是亏损的。
- 只报告最佳结果 :只展示表现最好的那个参数组合或模型变体,而不提及其他尝试过的、效果不好的。这是不科学的。论文中应该简要提及你们尝试过的其他思路及其不足之处,这反而能体现思考的全面性。
- 模型黑箱与解释不足 :尤其是使用机器学习模型时,不能只丢出一个准确率。必须解释特征的重要性、模型决策的依据(哪怕是用特征重要性排序或局部解释)。
- 结论夸大其词 :避免使用“完美”、“极高”、“绝对”等词汇。用数据说话,客观陈述策略的优劣,并明确指出其局限性(如依赖于历史波动模式、对极端行情可能失效等)。
回顾2022年C题的整个解题过程,从最初的题意剖析到最终的论文成稿,其核心远不止于构建一个数学模型,更在于完成一次严谨的金融研究思维训练。它要求你在数据、逻辑、现实约束和叙事表达之间找到精妙的平衡。我个人的体会是,成功的论文往往不是拥有最复杂模型的,而是那个 逻辑最自洽、故事讲得最清楚、并且诚实地展示了模型边界 的作品。对于后来的参赛者,我的建议是:尽早完成一个最简单的策略回测框架,哪怕只是一个买入持有策略的代码。这能让你迅速理解整个数据流和回测逻辑,为后续迭代复杂策略打下坚实基础,也能帮你提前暴露那些看似微小却影响巨大的技术问题,比如未来函数和日期处理错误,从而在四天紧张的赛程中占据主动。
更多推荐



所有评论(0)