寻找相似的历史k线

本页介绍“相似K线匹配”的问题背景与目标,并给出文章作者与发布日期信息。

Source: https://dolphindb.cn/blogs/16

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部提供活动报名与福利优惠引导信息,并给出报名链接。

寻找相似的历史k线(作者与日期)

给出文章标题与发布信息(作者、日期),并引入“相似K线匹配”的问题背景与目标。

数据来源与字段说明(Tushare沪深日线)

说明使用的 Tushare 沪深股票日线行情数据范围,并列出数据字段。

示例:以漫步者为目标区间进行相似K线搜索(数据加载)

以 002351.SZ 的指定日期区间为目标,展示如何加载目标股票与全量股票数据到内存。

方法一:使用K线距离衡量相似度(计算、筛选与可视化)

使用日回报差的平方和定义距离,通过滚动窗口计算距离,筛选最相似的 10 段并进行可视化说明。

方法二:使用股票日回报相关性衡量相似度(计算、筛选与可视化)

通过滚动窗口计算日回报相关系数,筛选相关性最高的 10 段并进行可视化说明。

性能分析与联系信息

给出数据规模与两种方法耗时对比,并提供官网链接与联系邮箱。

Facts Index

Entity Attribute Value Confidence
技能认证特训营第二期状态正式开启high
限时报名链接urlhttps://www.qingsuyun.com/h5/e/217471/5/high
文章发布日期2021-05-18high
作者署名nameJunxihigh
相似K线匹配问题描述给定某股某段日K线,从其他股票历史中匹配最相似的一段历史K线,给出相似度(%)并排序取前N个结果high
K线相似度衡量方法使用K线距离以及股票日回报相关性衡量K线相似度high
实验数据来源与范围Tushare提供的沪深股票2008年到2017年的日线行情数据high
问题来源(知乎)urlhttps://www.zhihu.com/question/63995018/answer/524948229high
Tushareurlhttps://link.zhihu.com/?target=https%3A//tushare.pro/high
DolphinDB处理Tushare数据教程urlhttps://zhuanlan.zhihu.com/p/49069873high
Tushare沪深股票日线行情数据包含字段ts_code(股票代码), trade_date(交易日期), open(开盘价), high(最高价), low(最低价), close(收盘价), pre_close(昨收价), change(涨跌额), pct_change(涨跌幅), vol(成交量(手)), amount(成交额(千元))high
示例目标股票股票与区间漫步者(002351.SZ),2016-09-01到2016-09-30,寻找最相似的10段历史K线high
DolphinDB脚本加载目标股票日线数据到内存code="002351.SZ";edifier=select * from loadTable("dfs://daily_line","hushen_daily_line") where ts_code=code, date(trade_date) between 2016.09.01:2016.09.30high
DolphinDB脚本加载全量股票数据到内存stock=select * from loadTable("dfs://daily_line","hushen_daily_line")high
DolphinDB脚本计算目标窗口长度numnum=exec count(*) from edifierhigh
方法一(K线距离)距离定义两段K线之间的距离可用股票日回报差的平方和计算;距离越小相似度越高high
DolphinDB脚本K线距离计算(滚动窗口)def square_sum(x,y):sum2(x-y);corrTable1=select ts_code, move(date(trade_date),num-1) as beginDate, date(trade_date) as endDate, moving(square_sum{edifier.pct_change}, pct_change, num) as distance from stock context by ts_codehigh
DolphinDB moving说明moving为模板函数,用于在大小为num、边界为beginDate与endDate的滚动窗口中计算距离;square_sum{edifier.pct_change}为部分应用固定部分参数high
DolphinDB脚本筛选K线距离最小的10段历史K线mostCorrelated1=select * from corrTable1 where isValid(distance), rank(distance,true) between 0:10 order by distancehigh
K线距离法 Top10 结果(distance)条目300073.SZ 2016.08.02-2016.08.29 67.024; 600995.SH 2017.07.06-2017.08.02 70.8713; 600549.SH 2010.12.17-2011.01.14 73.514; 600627.SH 2008.07.07-2008.08.07 73.59; 600367.SH 2010.12.17-2011.01.14 76.447; 600867.SH 2011.07.28-2011.08.24 76.5449; 002253.SZ 2010.05.21-2010.06.22 79.2845; 002382.SZ 2015.01.06-2015.02.02 79.5101; 300266.SZ 2014.07.07-2014.09.17 80.1772; 600706.SH 2017.06.05-2017.07.14 80.5079high
函数getReturn用途取出相似股票在beginDate与endDate之间的日回报(pct_change/100)high
DolphinDB脚本构建回报矩阵并绘图(方法一)retMatrix1 = each(getReturn{stock}, mostCorrelated1).rename!(mostCorrelated1.ts_code);plot(retMatrix1, , "使用最短k线距离找出相似历史k线")high
each模板函数(方法一说明)作用取出最相似的10只股票的日回报,并以股票代码命名每一列high
图表说明(方法一)内容图展示“最短k线距离”算法找出的10只股票的历史k线日回报走势,多条折线代表不同股票回报率变化low
K线距离法筛出的股票列表(文字列举)包含当升科技(30073.SZ)、文山电力(600995.SH)、厦门钨业(600549.SH)、上电股份(600627.SH)、红星发展(600367.SH)、通化东宝(600867.SH)、川大智胜(002253.SZ)、蓝帆医疗(002382.SZ)、兴源环境(300266.SZ)、曲江文旅(600706.SH)high
方法二(日回报相关性)指标性质股票日回报的相关性是衡量K线相似度的很好指标low
DolphinDB脚本相关性计算(滚动窗口)corrTable2=select ts_code, move(date(trade_date),num-1) as beginDate, date(trade_date) as endDate, moving(corr{edifier.pct_change}, pct_change, num) as corr from stock context by ts_codehigh
DolphinDB脚本筛选相关性最高的10段历史K线mostCorrelated2=select * from corrTable2 where rank(corr,false) between 0:10 order by corr deschigh
相关性法 Top10 结果(corr)条目600367.SH 2010.12.17-2011.01.14 0.8824; 600549.SH 2010.12.17-2011.01.14 0.8806; 300073.SZ 2016.08.02-2016.08.29 0.8749; 002294.SZ 2014.02.26-2014.03.25 0.8729; 600995.SH 2017.07.06-2017.08.02 0.8723; 600486.SH 2010.12.17-2011.01.14 0.8721; 002382.SZ 2015.01.06-2015.02.02 0.8718; 002253.SZ 2010.05.21-2010.06.22 0.8708; 000939.SZ 2008.03.21-2008.04.18 0.8706; 600627.SH 2008.07.07-2008.08.07 0.8692high
DolphinDB脚本构建回报矩阵并绘图(方法二)retMatrix2 = each(getReturn{stock}, mostCorrelated2).rename!(mostCorrelated2.ts_code);plot(retMatrix, , "使用股票日回报相关性找出相似历史k线")high
图表说明(方法二)内容图展示通过“股票日回报相关性”筛选出的10段相似历史K线收益率曲线;方法侧重统计同步性low
相关性法筛出的股票列表(文字列举)包含红星发展(600367.SH)、厦门钨业(600549.SH)、当升科技(300073.SZ)、信立泰(002294.SZ)、文山电力(600995.SH)、扬农化工(600486.SH)、蓝帆医疗(002382.SZ)、川大智胜(002253.SZ)、凯迪生态(000939.SZ)、上电股份(600627.SH)high
数据规模数量沪深股票2008年到2017年的日线行情数据,共530万的数据high
性能(方法一:K线距离)耗时仅需7秒high
性能(方法二:日回报相关性)耗时仅需3秒high
性能评价结论性能极佳low
DolphinDB官网urlhttps://link.zhihu.com/?target=http%3A//www.dolphindb.cn/high
联系邮箱emailinfo@dolphindb.comhigh