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

练习

股票数据多重检验分析

任务背景:某量化研究员选取2020-2022年期间15只科技股日度收益率数据,试图寻找存在显著相关性的股票对(使用Spearman相关系数)。原始数据获取与处理代码如下:

import numpy as np
import pandas as pd
import yfinance as yf
from scipy import stats

# 股票代码列表
tech_stocks = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'META',
               'TSLA', 'NVDA', 'INTC', 'ADBE', 'CSCO',
               'ORCL', 'IBM', 'QCOM', 'CRM', 'AMD']

# 获取收盘价数据
price_data = yf.download(tech_stocks,
                        start='2020-01-01',
                        end='2022-12-31')['Close']

# 计算日收益率
returns = price_data.pct_change().dropna()

分析要求

  1. 遍历所有可能的股票组合(共105对),计算其收益率相关系数的p值
  1. 分别记录使用原始α=0.05和Bonferroni校正后的显著相关对数量
  1. 输出格式要求:打印两种方法发现的显著对数及预期假阳性数

代码框架

def multiple_comparison_analysis():
    # 初始化参数
    alpha = 0.05
    combinations = len(tech_stocks)*(len(tech_stocks)-1)//2

    # 原始检验
    original_pairs = []
    # Bonferroni检验
    bonferroni_pairs = []

    # 在此处补充你的代码逻辑

    # 输出结果
    print(f"原始方法显著对数:{len(original_pairs)}")
    print(f"预期假阳性数:{round(combinations * alpha, 1)}")
    print(f"校正后显著对数:{len(bonferroni_pairs)}")

理论计算与方案设计

问题场景:某对冲基金构建了包含200只股票的投资组合,研究团队每日进行以下分析:

任务要求

  1. 计算每日进行统计检验的总次数
  1. 当设定全局α=0.05时,计算未校正的预期每日假阳性数
  1. 若采用Bonferroni校正,计算单个检验的显著性阈值
  1. 设计一个两阶段验证方案:
    • 第一阶段用2020-2021年数据筛选潜在信号
    • 第二阶段用2022年数据验证

数据准备

# 两阶段数据集划分
full_data = yf.download('SPY',
                       start='2020-01-01',
                       end='2022-12-31')['Close']
stage1 = full_data.loc[:'2021-12-31']
stage2 = full_data.loc['2022-01-01':]

提示公式

请分别给出数学计算过程与Python实现代码。