跳到主内容
研究工具量化研究工具与数据基础 · 第1–5讲5/5 · 配套练习模块导览 →
练习

第5讲:数据可视化 (Plotting Data) · 练习

绘制收益分布及累积直方图,比较两只资产的价格与收益散点图,并完成时间序列折线和拟合线标注。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。
code
import numpy as np
import matplotlib.pyplot as plt

练习 1:直方图#

a. 回报率

查找 SPY 在 7 年窗口内的每日回报率。

code
data = get_pricing('SPY', fields='price', start_date='2010-01-01', end_date='2017-01-01')
## 你的代码写在这里

b. 绘图

使用课程中介绍的技术,绘制回报率的直方图。

code
## 你的代码写在这里
plt.xlabel('随机数');
plt.ylabel('观察次数');
plt.title('随机数的频率分布');

c. 累积分布

绘制回报率的累积分布直方图。

code
## 你的代码写在这里

练习 2:散点图#

a. 数据

获取过去 5 年内 McDonalds(MCD)和星巴克(SBUX)的每日收盘价数据。

code
SPY  = get_pricing('SPY', fields='close_price', start_date='2013-06-19', end_date='2018-06-19', frequency='daily')
SBUX = get_pricing('SBUX', fields='close_price', start_date='2013-06-19', end_date='2018-06-19', frequency='daily')
## 你的代码写在这里

b. 绘图

绘制 SPY 和星巴克的散点图。

code
## 你的代码写在这里
plt.title('SPY 和 SBUX 的散点图');
plt.xlabel('SPY 价格');
plt.ylabel('SBUX 价格');

c. 回报率绘图

绘制 SPY 和星巴克回报率的散点图。

code
SPY_R = SPY.pct_change()[1:]
SBUX_R = SBUX.pct_change()[1:]
## 你的代码写在这里
plt.title('SPY 和星巴克回报的散点图');
plt.xlabel('SPY 回报率');
plt.ylabel('SBUX 回报率');

提示:散点图的两个参数必须具有相同的数据点数量,否则会报错。


练习 3:折线图#

a. 获取数据

使用课程中介绍的技术,查找星巴克(SBUX)和 Dunkin Brands Group(DNKN)在 2 年期间的开盘价,并将结果打印为表格。

code
data = get_pricing(['SBUX', 'DNKN'], fields='open_price', start_date='2015-01-01', end_date='2017-01-01')
## 你的代码写在这里

b. 数据结构

数据以 Pandas DataFrame 对象返回。索引数据以将其列名转换为简单字符串。

code
## 你的代码写在这里

c. 绘图

绘制 SBUX 股价随时间变化的折线图。记得标注轴标题和图表标题。

code
## 你的代码写在这里
plt.xlabel('时间');
plt.ylabel('价格');
plt.title('价格 vs 时间');

练习 4:最佳拟合图#

任务说明

以下是一个两组数据的散点图。调整代码中的 a 和 b 参数,尝试绘制一条“拟合”数据的直线。这条线应看似描述了数据的某种模式。虽然有定量方法可以自动完成此任务,但我们希望你通过手动调整来培养直觉。

code
data1 = get_pricing('SBUX', fields='open_price', start_date='2013-01-01', end_date='2014-01-01')
data2 = get_pricing('SPY', fields='open_price', start_date='2013-01-01', end_date='2014-01-01')

rdata1 = data1.pct_change()[1:]
rdata2 = data2.pct_change()[1:]
plt.scatter(rdata2, rdata1);

# 调整以下参数
a = 0.0004
b = 1.14

x = np.arange(-0.02, 0.03, 0.01)
y = a + (b * x)
## 你的代码写在这里

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。

模块收束 · 0/5 已完成

把知识收束成可复核的研究产物

完成后应该能够

  • 能够读取、清洗、探索并可视化基础金融数据
  • 能够记录数据来源、样本时点和运行环境,使研究可被复现

交付物

  • 一份可从头运行的数据探索 Notebook
  • 一页数据口径与已知限制说明

本模块已有 0/5 个主要学习单元完成。 本模块没有待复习项。