51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

假设你设计了一个基于基本面和量化的中低频选股策略,请描述策略的核心逻辑,并说明如何通过回测评估策略的有效性,包括回测指标(如夏普比率、最大回撤、年化收益)的选择和计算方法。

盛丰基金中低频策略研究员难度:中等

答案

1) 【一句话结论】
核心是通过结合基本面(内在价值)与量化(市场情绪)的多因子模型,以周/月频选股,通过滚动窗口回测(含交易成本)评估有效性,用夏普比率、最大回撤、年化收益等指标验证,平衡长期价值与短期情绪,提升策略稳健性。

2) 【原理/概念讲解】
老师:中低频策略是指选股或交易频率低于每日的(如周/月),因高频交易成本高且中低频更能捕捉基本面与长期趋势。基本面因子(如市盈率、ROE、营收增长)反映公司内在价值,属于长期驱动,稳定性强但数据滞后(如季度财报);量化因子(如动量、波动率)反映市场短期情绪,属于短期驱动,波动大但能捕捉短期趋势。多因子模型将两类因子结合,通过加权求和计算综合得分,筛选得分最高的股票——类比用“内在价值(基本面)”和“市场情绪(量化)”两个维度评估股票,选出的股票既具备长期投资价值,又符合短期市场偏好,更可能跑赢市场。

3) 【对比与适用场景】

类别定义特性使用场景注意点
基本面因子体现公司盈利能力、估值水平等内在价值指标(如市盈率、净资产收益率、营收增长率)长期驱动,稳定性强,受短期市场波动影响小长期价值投资,构建低波动组合数据获取成本较高,因子计算可能滞后(如季度财报),影响选股时效性
量化因子反映市场行为模式(如过去3个月收益、波动率、成交量)短期驱动,波动大,受市场情绪影响显著交易型策略,中低频动量或套利策略需要高频数据,可能存在数据过拟合风险,因子解释力易随市场变化

4) 【示例】

# 1. 数据准备与清洗
import pandas as pd, numpy as np

# 读取数据(假设包含股票代码、基本面因子、量化因子、股价)
basic = pd.read_csv('basic_factors.csv', parse_dates=['date'])
quant = pd.read_csv('quant_factors.csv', parse_dates=['date'])
prices = pd.read_csv('stock_prices.csv', parse_dates=['date'])

# 缺失值处理:线性插值
basic = basic.set_index(['stock_code', 'date']).interpolate(method='linear', axis=0).reset_index()
quant = quant.set_index(['stock_code', 'date']).interpolate(method='linear', axis=0).reset_index()

# 异常值过滤:1%和99%分位数
basic = basic[(basic < basic.quantile(0.99)) & (basic > basic.quantile(0.01))]
quant = quant[(quant < quant.quantile(0.99)) & (quant > quant.quantile(0.01))]

# 合并数据
data = basic.merge(quant, on=['stock_code', 'date'], how='inner')
data = data.merge(prices, on=['stock_code', 'date'], how='inner')

# 2. 因子标准化(z-score)
basic_std = (data[['PE', 'ROE', 'Growth']].sub(data[['PE', 'ROE', 'Growth']].mean())).div(data[['PE', 'ROE', 'Growth']].std())
quant_std = (data[['3m_return', 'volatility']].sub(data[['3m_return', 'volatility']].mean())).div(data[['3m_return', 'volatility']].std())

# 3. 因子权重动态调整(信息系数+滚动回测)
# 计算信息系数IC
ic_basic = np.corrcoef(basic_std.T, data['weekly_return'].shift(-1).fillna(0))[0, 1]
ic_quant = np.corrcoef(quant_std.T, data['weekly_return'].shift(-1).fillna(0))[0, 1]
# 动态权重(根据IC调整)
weights_basic = np.exp(ic_basic) / (np.exp(ic_basic) + np.exp(ic_quant))
weights_quant = 1 - weights_basic

# 4. 计算因子得分
basic_score = basic_std.dot(weights_basic)
quant_score = quant_std.dot(weights_quant)
total_score = basic_score + quant_score  # 简化,实际可加权

# 5. 滚动选股与回测(周频,后10%样本外验证)
rolling_window = 52  # 周频,52周
sample_out = int(0.1 * rolling_window)

results = []
for i in range(rolling_window, len(total_score)):
    current_score = total_score[i-rolling_window+1:i+1]
    top_stocks = current_score.nlargest(20).index
    weekly_returns = []
    for stock in top_stocks:
        price = data.loc[data['stock_code']==stock, 'close'].values
        if len(price) >= 2:
            # 计算周收益,考虑交易成本
            price = np.append(price, price[-1] * (1 - 0.001))  # 滑点0.1%
            weekly_returns.append((price[-1]/price[0]-1) * (1 - 0.0002))  # 佣金万0.2%
    if weekly_returns:
        annual_return = np.mean(weekly_returns) * 52
        std_annual = np.std(weekly_returns) * np.sqrt(52)
        sharpe = annual_return / std_annual
        max_drawdown = max(np.minimum.accumulate(1 + np.array(weekly_returns))) - 1
        results.append((annual_return, sharpe, max_drawdown))

# 6. 结果分析
annual_return, sharpe, max_drawdown = results[-1]
print(f"样本外验证年化收益: {annual_return:.2%}, 夏普比率: {sharpe:.2f}, 最大回撤: {max_drawdown:.2%}")

5) 【面试口播版答案】
面试官您好,我设计的策略核心是通过结合基本面(内在价值)与量化(市场情绪)的多因子模型,以周频选股。具体来说,基本面因子用市盈率、净资产收益率(ROE)、营收增长率衡量公司盈利和估值,量化因子用过去3个月收益(动量)和波动率反映短期市场情绪,两者通过动态调整的权重(比如根据信息系数和滚动回测优化,确保权重随因子表现变化)计算综合得分,选得分最高的股票。回测方面,采用滚动窗口(每年回测,后10%数据作为样本外验证),同时考虑交易成本(滑点0.1%、佣金万0.2%),用夏普比率(衡量风险调整后收益,即年化超额收益除以年化标准差)、最大回撤(衡量最大累计收益回撤,反映风险承受能力)、年化收益(绝对收益,即(期末/期初)^(1/年)-1)等指标。比如回测结果显示,考虑成本后夏普比率0.8,最大回撤15%,年化收益8%,说明策略在控制风险下有稳健收益,符合中低频策略对长期稳健性的要求。

6) 【追问清单】

  • 问:如何确定因子权重?回答要点:通过信息系数(IC)筛选有效因子,再结合滚动窗口回测和交叉验证,用机器学习模型(如Lasso回归)优化权重,依据因子对收益的贡献度动态调整。
  • 问:真实交易中滑点和交易成本如何处理?回答要点:在回测中加入滑点(模拟实际交易中价格滑动的成本)和交易成本(如佣金、印花税),调整后计算指标,确保回测结果更贴近实际交易效果。
  • 问:如何避免策略过拟合?回答要点:使用滚动窗口回测(控制训练数据量,避免使用未来信息),控制因子数量(避免高相关因子),通过交叉验证验证模型在不同时间窗口下的稳定性。
  • 问:中低频选股的周期(如周频)对策略有效性的影响?回答要点:周频平衡了交易成本(日频交易成本高)和数据滞后性(基本面因子滞后),比日频更稳定,但需考虑市场变化频率,滚动回测验证不同周期下的表现。
  • 问:基本面因子数据滞后(如季度财报)如何影响选股?回答要点:采用滞后1期的数据(如用上一季度财报数据计算ROE),或结合滚动窗口,确保选股时使用最新的可用数据,同时考虑数据滞后对策略的影响。

7) 【常见坑/雷区】

  • 忽略因子权重动态调整:简单固定权重,未通过历史回测优化,导致模型适应性不足,市场变化时失效。
  • 未考虑交易成本:忽略滑点和佣金,导致回测收益过高,实际交易收益与回测偏差大。
  • 忽略数据滞后性:中低频选股时未处理基本面因子滞后(如季度财报),影响选股时效性,导致策略滞后于市场。
  • 因子过拟合:使用过多因子或高相关因子,导致模型在训练数据上表现好,但泛化能力差,实际效果不佳。
  • 回测方法不当:使用全样本回测或过短周期,无法反映市场变化,结果不可靠。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1