【金融】如何使用余弦相似度来判断当前宏观环境与历史上哪段时间相似

宏观环境的相似会导致人们的许多经济活动出现相似的行为,例如股票市场的表现很大程度上受到货币水平、经济景气程度等宏观因素的影响。如若我们能够判断到目前的宏观经济环境与历史上的某一段时间相似,那我们就能够使用历史经验来判断我们所关心的事物的发展,例如股票指数的走势。

目录

一、什么是余弦相似度

二、使用Python实现宏观环境相似度的计算


余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。注意这上下界对任何维度的向量空间中都适用,而且余弦相似性最常用于高维正空间。

 

两个向量间的余弦值可以通过使用欧几里得点积公式求出:

a\cdot b=\left \| a \right \|\left \| b \right \|cos\Theta

给定两个属性向量,AB,其余弦相似性θ由点积和向量长度给出,如下所示:

similarity = cos(\Theta ) = \frac{A\cdot B}{\left \| A \right \|\left \| B \right \|}

这里的分别代表向量A和B的各分量

给出的相似性范围从-1到1:-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的,而在这之间的值则表示中间的相似性或相异性。

二、使用Python实现宏观环境相似度的计算

代码中“宏观数据.xlsx”数据为:CPI、PPI、GDP、十年期国债到期收益率、社会融资新增量。(数据暂不提供)

import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.preprocessing import MinMaxScaler

#宏观数据
data_macro = pd.read_excel("宏观数据.xlsx")
data_macro_columns = data_macro.columns
data_macro_columns = list(data_macro_columns)
data_macro_columns.remove('日期')
#归一化
scaler = MinMaxScaler()
scaler = scaler.fit(data_macro.loc[:,data_macro_columns])  # 本质生成 max(x) 和 min(x)
result = scaler.transform(data_macro.loc[:,data_macro_columns])
#计算余弦相似度
data_macro_cosine_similarity = cosine_similarity(result)
#可视化
import matplotlib.pyplot as mp,seaborn
names = []
for date in data_macro['日期']:
    names.append(date.date())
seaborn.heatmap(data_macro_cosine_similarity, center=0, annot=True,xticklabels=names , yticklabels=names,cmap ='YlGnBu')
mp.rcParams['figure.figsize'] = (30, 20) # 设置figure_size尺寸
mp.rcParams['font.sans-serif']=['SimHei']#黑体
# 设置刻度字体大小
mp.xticks(fontsize=12)
mp.yticks(fontsize=12,wrap = True)
# 设置坐标标签字体大小
ax = mp.gca()
ax.set_xlabel(..., fontsize=12)
ax.set_ylabel(..., fontsize=12,wrap = True)
# 设置图例字体大小
#ax.legend(..., fontsize=20)
mp.show()

输出:

可以看到,与2022年6月30日,也就是今年第二季度的宏观数据相似的时期(图中最后一排的颜色越深越相似)有2012年2季度到2013年2季度,2015年2季度到4季度,2016年2、3季度

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值