全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
51360 0
2018-12-03
假设给出某股某段行情K线(单位/日),从任何其他股票历史中匹配出与之最为相似的某段历史K线,并给出相似度值(单位/%),并以此排序,获取最为相似的N个结果。

我们可以使用k线的距离以及股票日回报的相关性来衡量k线相似度,使用Tushare提供的沪深股票2008年到2017年的日线行情数据来做实验。如何把Tushare数据导入到DolphinDB可以参考教程如何使用DolphinDB处理Tushare金融数据

Tushare提供的沪深股票日线行情数据包含以下字段:
名称 描述
ts_code 股票代码
trade_date 交易日期
open 开盘价
high 最高价
low 最低价
close 收盘价
pre_close 昨收价
change 涨跌额
pct_change 涨跌幅
vol 成交量(手)
amount 成交额(千元)

下面将以漫步者(股票代码为002351.SZ)为例,介绍如何在历史数据中,找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。

首先,把漫步者2016年9月1日到2016年9月30日的日线行情数据加载到内存。
复制代码
把股票数据加载到内存中。
复制代码

1.使用k线的距离衡量相似度

两段k线之间的距离可以用股票日回报的差的平方和来计算。距离越小表示k线的相似度越高。
复制代码
上面代码使用的moving是DolphinDB的模板函数,表示在大小为num,边界为beginDate和endDate的滚动窗口中计算两段k线之间的距离。square_sum{edifier.pct_change}是DolphinDB中的部分应用,用于固定函数的部分参数。找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。
复制代码
定义一个函数getReturn,取出相似股票在beginDate和endDate之间的日回报。
复制代码
把每只相似股票的日回报数据保存到同一个回报矩阵中,每列表示一只股票在相应时间段中的日回报,并使用图表展示。
复制代码
上面的代码通过each模板函数取出最相似的10只股票的日回报,并以股票代码来命名每一列。 最短k线距离.png
使用最短k线距离计算出来的股票包含当升科技(30073.SZ)、文山电力(600995.SH)、厦门钨业(600549.SH)、上电股份(600627.SH)、红星发展(600367.SH)、通化东宝(600867.SH)、川大智胜(002253.SZ)、蓝帆医疗(002382.SZ)、兴源环境(300266.SZ)和曲江文旅(600706.SH)。

2.使用股票日回报相关性衡量相似度
股票日回报的相关性是衡量k线相似度很好的指标。
复制代码
找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。
复制代码
同样地,把相似股票的日回报数据保存到回报矩阵中。
复制代码
相关性.png
使用股票日回报相关性计算出来的股票包含红星发展(600367.SH)、厦门钨业(600549.SH)、当升科技(300073.SZ)、信立泰(002294.SZ)、文山电力(600995.SH)、扬农化工(600486.SH)、蓝帆医疗(002382.SZ)、川大智胜(002253.SZ)、凯迪生态(000939.SZ)和上电股份(600627.SH)。

3.性能分析
我们使用的是沪深股票2008年到2017年的日线行情数据,共530万的数据。使用第一种方法仅需7秒,使用第二种方法仅需3秒,性能极佳。

欢迎访问官网下载DolphinDB










二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群