用Python选一个自己的股票池2

用Python选一个自己的股票池2
youerning关注0人评论1578人阅读2020-05-31 19:47:07
吾生也有涯,而知也无涯。以有涯随无涯,殆已!
入市有风险,投资需谨慎,本文不作为任何投资参考依据。
前面通过形态和一些基本面的数据进行了选股,这篇文章就来研究一下相似度选股以及趋势选股吧。

相似度

我们一般比较在意股票的收盘价,比如均线或者各种指标如果需要计算一段序列值,我们一般选择收盘价作为序列中的值,就像5日均线计算的是五日的收盘价的均值一样。

那么每天的收盘价就是一个个数字,一年的收盘价就是一串大概220个数字的序列,这个序列在数学上我们可以用向量来表示,而向量与向量之间是可以计算余弦相似度的,通过这个相似度计算我们可以比较一下两支股票的相似程度。

余弦相似度的值在-1与1之间,越相似就越接近1,反之越接近-1.
它的公式如下:

用Python选一个自己的股票池2

假设我们对对一支股票很熟悉,那么和它走势极其相似的股票我们是不是可以认为会在以后也跟我们熟悉的那支股票大概一致呢?或者说,在某个特定的行情下,在手动选出了我认为有利的趋势股票,在通过相似度找到其他的股票或许是件不错的事。

这里研究一下最近一百个交易日内与平安银行(000001)这只股票最相似的前十只股票。

为了避免交易日范围相差太大的情况,比如虽然都是最近100个交易日,但是被计算的股票已经停牌了10个交易日或者它没有上市超过10个交易日,所以应该将这些情况给筛选掉。

还有就是股票之间的价格差距过大,那么通过两只股票的价格来进行相似度比较显然不够合理,所以这里选择股票的涨幅大小来进行相似度比较。

计算余弦相似度的函数

def cos(vector_a, vector_b):
vector_a = np.mat(vector_a)
vector_b = np.mat(vector_b)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
return cos

def select_by_similarity(data_path, code_name, top_size=10):
day_range = 100
# 交易日的起始截至时间做大不能超过这个间隔
max_delta = timedelta(days=7)

all_df = load_all_local_dat
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值