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

第1讲:研究入门 (Introduction to Research)

💡

查看全集:💎Quantopia量化分析56讲

一、研究环境概览

IPython Notebook(Jupyter Notebook)提供交互式数据分析环境,本指南将用yfinance获取真实金融数据,演示基础分析流程。

二、环境基础操作

1. 单元格类型

2. 执行代码

# 示例代码
2 + 2  # 显示最后一个表达式结果
X = 2  # 赋值语句无输出
print(2 + 2)  # 强制输出
3 + 3

3. 性能监控

长时间运行代码时观察星号标记:

total = 0
for i in range(10_000_000):
    total += i
total  # 输出累加结果

三、核心工具库

1. 库导入规范

import numpy as np   # 数值计算
import pandas as pd  # 数据分析
import matplotlib.pyplot as plt  # 可视化

2. 自动补全功能

3. 文档查询

np.random.normal?  # 显示函数文档

四、数据分析基础

1. 数据生成

# 生成正态分布样本
sample_data = np.random.normal(loc=0, scale=1, size=100)

2. 基础可视化

plt.plot(sample_data)
plt.xlabel('Sequence')
plt.ylabel('Value')
plt.title('Random Sample Series');

五、真实金融数据处理

1. 数据获取

import yfinance as yf

# 获取多股票数据
start_date = '2019-01-01'
end_date = '2022-01-01'
tickers = ['AAPL', 'MSFT']

stock_data = yf.download(tickers, start=start_date, end=end_date)

数据结构解析:

2. 价格序列提取

# 获取苹果收盘价
aapl_close = stock_data['Close']['AAPL'].dropna()

3. 价格走势可视化

plt.figure(figsize=(10,6))
plt.plot(aapl_close.index, aapl_close.values)
plt.ylabel('Price (USD)')
plt.title('AAPL Closing Price 2019-2021');

六、收益分析

1. 收益计算

daily_returns = aapl_close.pct_change().dropna()

2. 收益分布直方图

plt.hist(daily_returns, bins=50, density=True)
plt.xlabel('Daily Return')
plt.ylabel('Frequency')
plt.title('AAPL Daily Returns Distribution');

3. 统计指标

return_mean = np.mean(daily_returns)
return_std = np.std(daily_returns)
print(f"日均收益率: {return_mean:.4%}")
print(f"日收益波动率: {return_std:.4%}")

七、正态性检验

1. 生成理论分布

normal_returns = np.random.normal(return_mean, return_std, 10000)

2. 对比可视化

plt.hist(daily_returns, bins=50, density=True, alpha=0.6, label='Actual')
plt.hist(normal_returns, bins=50, density=True, alpha=0.5, label='Normal')
plt.legend()
plt.title('Actual vs Normal Distribution');

八、技术指标计算

1. 移动平均线

ma_60 = aapl_close.rolling(window=60).mean()

2. 价格与均线可视化

plt.figure(figsize=(12,6))
plt.plot(aapl_close, label='Price')
plt.plot(ma_60, label='60-day MA')
plt.ylabel('Price')
plt.legend()
plt.title('Price with Moving Average');

九、练习环节

  1. 获取特斯拉(TSLA)2020年至今的日线数据
  1. 计算20日移动平均线并绘制价格对比图
  1. 统计收益率分布的峰度(使用scipy.stats.kurtosis
  1. 比较不同窗口长度(20日 vs 60日)均线的平滑效果差异
# 练习参考答案示例
from scipy.stats import kurtosis

# 获取TSLA数据
tsla = yf.download('TSLA', start='2020-01-01')['Close']

# 计算移动平均
ma_20 = tsla.rolling(20).mean()
ma_60 = tsla.rolling(60).mean()

# 绘图比较
plt.figure(figsize=(12,6))
plt.plot(tsla, label='Price')
plt.plot(ma_20, label='20-day MA')
plt.plot(ma_60, label='60-day MA')
plt.legend()
plt.show()

# 计算统计量
returns = tsla.pct_change().dropna()
print(f"峰度系数: {kurtosis(returns):.2f}")

十、关键概念回顾

  1. 收盘价:当日交易结束时的最后成交价
  1. 日收益率Rt=PtPt1Pt1R_t = \frac{P_t - P_{t-1}}{P_{t-1}}
  1. 移动平均MA(n)t=1ni=0n1PtiMA(n)_t = \frac{1}{n}\sum_{i=0}^{n-1}P_{t-i}
  1. 波动率:收益率的标准差,衡量风险
  1. 峰度:分布形态的陡缓程度,正峰度代表尖峰厚尾

十一、注意事项

  1. 使用dropna()处理缺失值
  1. 金融时间序列需保持时间顺序
  1. 年化波动率计算需考虑交易日数量
  1. 移动平均窗口选择影响信号灵敏度
  1. 真实收益率常呈现尖峰厚尾特征

本指南展示了完整的研究工作流程:从数据获取、清洗处理、统计分析到可视化呈现。建议读者扩展练习时尝试不同参数设置,并思考各指标在实际交易中的应用场景。

附:练习合集