寻找相似的历史k线
本页介绍“相似K线匹配”的问题背景与目标,并给出文章作者与发布日期信息。
Source: https://dolphindb.cn/blogs/16
What this page covers
- 活动报名引导信息与报名链接。
- 相似K线匹配问题的背景与目标说明。
- 数据来源范围与字段说明(Tushare 沪深日线)。
- 示例区间的选择与数据加载方式。
- 方法一:基于K线距离的计算、筛选与可视化。
- 方法二:基于日回报相关性的计算、筛选与可视化。
- 性能对比与联系信息。
技能认证特训营第二期正式开启(限时报名)
页面顶部提供活动报名与福利优惠引导信息,并给出报名链接。
- 技能认证特训营第二期处于“正式开启”状态。
- 页面提供限时报名链接入口。
寻找相似的历史k线(作者与日期)
给出文章标题与发布信息(作者、日期),并引入“相似K线匹配”的问题背景与目标。
- 作者署名为 Junxi。
- 发布日期为 2021-05-18。
- 目标是从其他股票历史中匹配最相似的一段历史K线。
- 输出包含相似度(%)并排序取前 N 个结果。
数据来源与字段说明(Tushare沪深日线)
说明使用的 Tushare 沪深股票日线行情数据范围,并列出数据字段。
- 实验数据来自 Tushare 的沪深股票 2008 到 2017 日线行情数据。
- 页面提供 Tushare 链接与 DolphinDB 处理 Tushare 数据的参考教程链接。
- 数据字段包括 ts_code、trade_date、open、high、low、close 等。
- 数据字段包括 pct_change、vol、amount 等。
示例:以漫步者为目标区间进行相似K线搜索(数据加载)
以 002351.SZ 的指定日期区间为目标,展示如何加载目标股票与全量股票数据到内存。
- 示例目标股票为 漫步者(002351.SZ)。
- 目标区间为 2016-09-01 到 2016-09-30。
- 示例任务为寻找最相似的 10 段历史 K 线。
- 给出将目标股票日线数据加载到内存的 DolphinDB 脚本示例。
- 给出将全量股票数据加载到内存的 DolphinDB 脚本示例。
方法一:使用K线距离衡量相似度(计算、筛选与可视化)
使用日回报差的平方和定义距离,通过滚动窗口计算距离,筛选最相似的 10 段并进行可视化说明。
- 两段K线距离用“日回报差的平方和”计算。
- 距离越小表示相似度越高。
- 使用滚动窗口计算各股票历史片段与目标区间的 distance。
- moving 用于在大小为 num 的滚动窗口内计算距离。
- 筛选 distance 最小的 10 段历史K线片段。
- getReturn 用于取出 beginDate 到 endDate 的日回报(pct_change/100)。
- each 用于提取最相似的 10 只股票的日回报并命名列。
- 图表说明提到展示 10 只股票的日回报走势(低置信度表述)。
方法二:使用股票日回报相关性衡量相似度(计算、筛选与可视化)
通过滚动窗口计算日回报相关系数,筛选相关性最高的 10 段并进行可视化说明。
- 日回报相关性被描述为衡量K线相似度的一个指标(低置信度表述)。
- 使用滚动窗口计算目标区间与历史片段的 corr(相关系数)。
- 筛选 corr 最高的 10 段历史K线片段。
- 构建回报矩阵并绘图以展示相关性法结果。
- 图表说明提到该方法侧重统计同步性(低置信度表述)。
性能分析与联系信息
给出数据规模与两种方法耗时对比,并提供官网链接与联系邮箱。
- 数据规模为沪深股票 2008 到 2017 日线行情数据,共 530 万数据。
- 方法一(K线距离)耗时为 7 秒。
- 方法二(日回报相关性)耗时为 3 秒。
- 性能被评价为“性能极佳”(低置信度表述)。
- 提供 DolphinDB 官网链接与联系邮箱 info@dolphindb.com。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | 状态 | 正式开启 | high |
| 限时报名链接 | url | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 文章 | 发布日期 | 2021-05-18 | high |
| 作者署名 | name | Junxi | high |
| 相似K线匹配问题 | 描述 | 给定某股某段日K线,从其他股票历史中匹配最相似的一段历史K线,给出相似度(%)并排序取前N个结果 | high |
| K线相似度衡量 | 方法 | 使用K线距离以及股票日回报相关性衡量K线相似度 | high |
| 实验数据 | 来源与范围 | Tushare提供的沪深股票2008年到2017年的日线行情数据 | high |
| 问题来源(知乎) | url | https://www.zhihu.com/question/63995018/answer/524948229 | high |
| Tushare | url | https://link.zhihu.com/?target=https%3A//tushare.pro/ | high |
| DolphinDB处理Tushare数据教程 | url | https://zhuanlan.zhihu.com/p/49069873 | high |
| 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.30 | high |
| DolphinDB脚本 | 加载全量股票数据到内存 | stock=select * from loadTable("dfs://daily_line","hushen_daily_line") | high |
| DolphinDB脚本 | 计算目标窗口长度num | num=exec count(*) from edifier | high |
| 方法一(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_code | high |
| 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 distance | high |
| 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.5079 | high |
| 函数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_code | high |
| DolphinDB脚本 | 筛选相关性最高的10段历史K线 | mostCorrelated2=select * from corrTable2 where rank(corr,false) between 0:10 order by corr desc | high |
| 相关性法 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.8692 | high |
| 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官网 | url | https://link.zhihu.com/?target=http%3A//www.dolphindb.cn/ | high |
| 联系邮箱 | info@dolphindb.com | high |