python计算沪深300的历史相似度

问题遇到的现象和发生背景 老板需要用python计算沪深300的历史相似度
我想要达到的结果

1 分别用日周期,周周期,月周期计算沪深300指数2002年一月到2022年十一月范围内,选择走势与2021年十一月到2022年十一月两段相似度最高的周期
2期望输出结果例如(数据纯虚构):2021年十一月到2022年十一月在日周期内与2019年4月到2020年4月相似度最高,
与2003年6月到2004年6月在周周期内相似度最高。
3分别输出日周月相似度最高的时间段

以下只是大概框架,希望能帮到你


import tushare as ts
import pandas as pd
from dtw import dtw

# 获取沪深300指数历史数据
hs300 = ts.get_hist_data('hs300', start='2002-01-01', end='2022-11-01')

# 将数据按日、周、月周期进行重采样
hs300_daily = hs300['close'].resample('D').last().dropna()
hs300_weekly = hs300['close'].resample('W').last().dropna()
hs300_monthly = hs300['close'].resample('M').last().dropna()

# 2021年十一月到2022年十一月的收盘价序列
target = hs300_daily['2021-11-01':'2022-11-01']

# 计算日周期下所有子序列与目标序列的相似度
dists_daily = []
for i in range(len(hs300_daily) - len(target)):
    dist, _ = dtw(hs300_daily[i:i+len(target)], target)
    dists_daily.append(dist)

# 计算周周期下所有子序列与目标序列的相似度
dists_weekly = []
for i in range(len(hs300_weekly) - len(target)):
    dist, _ = dtw(hs300_weekly[i:i+len(target)], target)
    dists_weekly.append(dist)

# 计算月周期下所有子序列与目标序列的相似度
dists_monthly = []
for i in range(len(hs300_monthly) - len(target)):
    dist, _ = dtw(hs300_monthly[i:i+len(target)], target)
    dists_monthly.append(dist)

# 找到每个周期内与目标序列相似度最高的子序列
best_daily_start = dists_daily.index(min(dists_daily))
best_daily_end = best_daily_start + len(target)
best_weekly_start = dists_weekly.index(min(dists_weekly))
best_weekly_end = best_weekly_start + len(target)
best_monthly_start = dists_monthly.index(min(dists_monthly