量化交易可视化(8)-箱型图

箱型图的含义

箱型图(Box plot)是一种用于展示数据分布的可视化图形。它由五个统计量组成:最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值。在箱线图中,数据的分布范围被表示为一个箱子,箱子的上边界是第三四分位数(Q3),下边界是第一四分位数(Q1),箱子内部的中线表示中位数(Q2)。
箱线图还可以包括异常值的表示,异常值通常是指偏离数据整体分布较远的数值。在箱线图中,异常值以圆点或者星号等符号表示。

箱型图的绘制方法

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None)

参数解释:

x:输入数据,可以是单个数组或多个数组组成的列表。

notch:是否绘制盒形图的缺口,默认为None。

sym:异常值的表示符号,默认为None。

vert:盒形图的方向,True为垂直方向,False为水平方向,默认为True。

whis:须与内部的长度,默认为1.5。

positions:盒形图的位置,默认为None。

widths:盒形图的宽度,默认为0.5。

patch_artist:是否为盒形图使用填充,默认为None。

bootstrap:是否启用自助法计算置信区间,默认为None。

usermedians:自定义中位数,默认为None。

conf_intervals:自定义置信区间,默认为None。

meanline:是否绘制均值线,默认为None。

showmeans:是否显示均值,默认为None。

showcaps:是否显示须的边界线,默认为None。

showbox:是否显示箱子,默认为None。

showfliers:是否显示异常值,默认为None。

boxprops:盒子的属性设置,默认为None。

labels:x轴上的标签,默认为None。

flierprops:异常值的属性设置,默认为None。

medianprops:中位数的属性设置,默认为None。

meanprops:均值线的属性设置,默认为None。

capprops:须的边界线的属性设置,默认为None。

whiskerprops:须的属性设置,默认为None。

manage_ticks:是否自动管理刻度,默认为True。

autorange:自动调整轴范围,默认为False。

zorder:图层顺序,默认为None。

箱型图在量化交易中的应用

异常值检测:箱型图可以帮助识别价格或其他金融指标的异常值。通过观察箱型图中的离群点,交易者可以发现价格的异常波动或者异常交易活动,从而作出相应的决策。例如,如果箱型图中存在异常值,可能表明市场出现了非正常的价格波动,交易者可以考虑调整策略或者采取其他措施。

趋势分析:箱型图可以用于分析价格的趋势和波动情况。通过观察箱型图中的箱子和须,交易者可以了解价格的中位数、上下四分位数以及价格的波动范围。这有助于判断价格的稳定性和趋势,从而指导交易策略的制定。例如,如果箱子较窄,须较短,表明价格波动较小,可能是一个稳定的趋势;而如果箱子较宽,须较长,表明价格波动较大,可能是一个不稳定的趋势。

统计分析:箱型图可以用于统计分析,如数据的分布情况、中位数、四分位数等。通过观察箱型图,交易者可以对市场的行情进行分析和比较。例如,可以比较不同时间段或不同品种的价格分布情况,找出价格的统计特征,从而帮助做出更准确的预测和决策。

风险管理:箱型图可以用于风险管理,帮助交易者识别和控制风险。通过观察箱型图中的须和异常值,交易者可以了解价格的波动范围和潜在的风险。例如,如果价格突破了箱型图中的上须,可能表明价格有进一步上涨的潜力,交易者可以相应地调整仓位或者采取避险措施。

箱型图在量化交易中的应用案例

在这个案例中,使用箱线图分别显示平安银行的开盘价、收盘价、最高价和最低价的分布情况

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置为默认字体
plt.rcParams['font.family'] = 'SimHei'
# 显示负数
plt.rcParams['axes.unicode_minus'] = False

# 导入数据
df = pd.read_excel("2023年一季度A股日线行情.xlsx")

# 将日期列转化为日期格式
df["trade_date"] = df["trade_date"].astype("str").apply(lambda x:x[:4]+"-"+x[4:6]+"-"+x[6:])
# 将日期列转换为日期类型,并设置为索引列
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date', inplace=True)

# 筛选出股票代码是"000001.SZ"平安的股票
stock = df[df['ts_code'] == '000001.SZ']

# 绘制开盘价、收盘价、最高价、最低价的箱型图
# 设置各个子图的标题
titles = ['开盘价', '收盘价', '最高价', '最低价']
# 设置各个子图的数据集
datas = [stock['open'],stock['close'],stock['high'],stock['low']]

# 创建一个2x2的子图布局
fig, ax = plt.subplots(2, 2, figsize=(10, 10))

# 依次创建各个子图
for i in range(4):
    prices = datas[i]
    ax[i//2][i%2].boxplot(prices)
    ax[i//2][i%2].set_title(titles[i])
    ax[i//2][i%2].set_xlabel("Price")
    ax[i//2][i%2].set_ylabel("Frequency")
plt.show()

最终效果图如下:
量化交易可视化(8)-箱型图_第1张图片
从开盘价和收盘价来看,波动较大;从最高价和最低价来看,波动较小。这种波形适合短线投资。

你可能感兴趣的:(Python量化交易可视化,python,信息可视化,数据可视化)