🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

A股市值因子构建

题目要求

使用yfinance获取沪深300成分股数据(代码示例:600519.SS代表贵州茅台),完成以下任务:

  1. 计算每只股票的总市值(收盘价×流通股本)
  1. 每月末按市值将股票分为大/中/小三组
  1. 构建SMB因子(小市值组合收益 - 大市值组合收益)

数据准备代码

import yfinance as yf
import pandas as pd

# 获取沪深300成分股列表(示例)
hs300 = ['600519.SS', '601398.SS', '000001.SZ'] # 实际需完整成分股
start_date = '2020-01-01'
end_date = '2023-12-31'

# 下载行情数据
price_data = yf.download(hs300, start=start_date, end=end_date)['Close']
shares_data = yf.download(hs300, start=start_date, end=end_date)['Shares Outstanding']

因子有效性检验

题目要求

基于6.1题构建的SMB因子序列,完成以下分析:

  1. 计算因子收益的月均值、标准差和夏普比率(假设无风险利率为0)
  1. 进行T检验判断因子收益是否显著大于0
  1. 绘制因子收益累计曲线图

分析代码框架

from scipy import stats
import matplotlib.pyplot as plt

# 计算月频因子收益
monthly_smb = smb_factor.resample('M').last()

# 收益分析
mean_return = monthly_smb.mean()
std_return = monthly_smb.std()

# 统计检验
t_stat, p_value = stats.ttest_1samp(monthly_smb, 0)

# 可视化
cumulative_return = (1 + monthly_smb).cumprod()
plt.plot(cumulative_return)
plt.title('SMB因子累计收益')
plt.show()