abupy.SimilarBu package

Submodules

abupy.SimilarBu.ABuCorrcoef module

相关系数具体计算功能实现模块

class abupy.SimilarBu.ABuCorrcoef.ECoreCorrType[源代码]

Bases: enum.Enum

ECoreCorrType: 相关系数计算方法

E_CORE_TYPE_PEARS = 'pears'

斯皮尔曼相关系数计算

E_CORE_TYPE_ROLLING = 'rolling'
E_CORE_TYPE_SIGN = 'sign'

基于PEARS使用移动时间加权相关系数

E_CORE_TYPE_SPERM = 'sperm'

基于PEARS使用序列+-符号相关系数

classmethod task_cnt()[源代码]

ECoreCorrType暂时支持的相关计算方法个数

abupy.SimilarBu.ABuCorrcoef.corr_matrix(df, similar_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>, **kwargs)[源代码]

与corr_xy的区别主要是,非两两corr计算,输入参数除类别外,只有一个矩阵的输入,且输入必须为pd.DataFrame对象 or np.array :param df: pd.DataFrame or np.array, 之所以叫df,是因为在内部会统一转换为pd.DataFrame :param similar_type: ECoreCorrType, 默认值ECoreCorrType.E_CORE_TYPE_PEARS :return: pd.DataFrame对象

abupy.SimilarBu.ABuCorrcoef.corr_xy(x, y, similar_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>, **kwargs)[源代码]

计算两个可迭代序列相关系数对外函数 :param x: 可迭代序列 :param y: 可迭代序列 :param similar_type: ECoreCorrType, 默认值ECoreCorrType.E_CORE_TYPE_PEARS :return: x与y的相关系数返回值

abupy.SimilarBu.ABuCorrcoef.rolling_corr(df, ss=None, window=60)[源代码]

滑动窗口按时间权重计算相关系数

参数:df – pd.DataFrame对象或者pd.Series对象
e.g.
usA usAA usAAC

2015/7/27 0.76 -1.94 0.59 2015/7/28 2.12 2.6 1.3 2015/7/29 -0.12 2.94 -1.34 2015/7/30 1.41 -1.77 -4.04 2015/7/31 -0.05 -1.1 1.39 ......

参数:ss – pd.Series对象, ss的大小需要与df.shape[0]一样
e.g.
usA

2015/7/27 0.76 2015/7/28 2.12 2015/7/29 -0.12 2015/7/30 1.41 2015/7/31 -0.05 ...... :param window: 窗口大小, 默认值g_rolling_corr_window,即60d :return: 当ss为None时返回df.shape[1]大小的相关系数二维方阵,否则,返回长度为df.shape[1]的相关系数一维数组

abupy.SimilarBu.ABuCorrcoef.spearmanr(a, b=None, axis=0, p_value=False)[源代码]

如果需要计算p_value使用stats.spearmanr计算,否则使用rankdata配合使用np.apply_along_axis, 进行spearmanr相关计算,因为计算p_value耗时 :param a: 可迭代序列a :param b: 可迭代序列b :param axis: 系数计算作用轴方向 :param p_value 是否需要计算p_value :return: p_value 是True是返回 scipy.cost_stats.SpearmanrResult

p_value 是False 返回 np.array 的二维方阵

abupy.SimilarBu.ABuSimilar module

相关系数相似应用模块

abupy.SimilarBu.ABuSimilar.find_similar_with_cnt(symbol, cmp_cnt=60, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用cmp_cnt参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param cmp_cnt: 相关性对比多少个交易日,int :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return:

abupy.SimilarBu.ABuSimilar.find_similar_with_folds(symbol, n_folds=None, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用n_folds参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param n_folds: 相关性对比n_folds年,int :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return:

abupy.SimilarBu.ABuSimilar.find_similar_with_se(symbol, start, end, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用start, end参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param start: 请求的开始日期str对象 :param end: 请求的结束日期str对象 :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return:

abupy.SimilarBu.ABuSimilar.from_local(func)[源代码]

现所有相似度应用默认为from_local模式,即需要在有数据的情况下做相似度应用

为进行相似度数据收集的函数装饰,作用是忽略env中的数据获取模式,改变数据获取模式, 只使用本地数据模式进行数据收集,完成整个任务后,再恢复之前的数据获取模式 :param func: 进行相似度应用且有数据收集行为的函数

abupy.SimilarBu.ABuSimilar.from_net(func)[源代码]

为进行相似度数据收集的函数装饰,作用是忽略env中的数据获取模式,改变数据获取模式, 只使用网络数据模式进行数据收集,完成整个任务后,再恢复之前的数据获取模式 :param func: 进行相似度应用且有数据收集行为的函数

abupy.SimilarBu.ABuSimilar.multi_corr_df(corr_jobs, cmp_cnt=252, n_folds=None, start=None, end=None)[源代码]

被from_local装饰器装饰 即强制走本地数据,匹配市场对应的benchmark,根据参数 使用_all_market_cg获取全市场symbol涨跌幅度pd.DataFrame对象change_df使用 corr_jobs个相关系数计算方法分别计算change_df的相关系数,所有结果组成一个字典返回 :param corr_jobs: 需要执行相关计算方法ECoreCorrType序列 :param cmp_cnt: 对比多少个交易日,int :param n_folds: 对比n_folds年,int,可选参数 :param start: 请求的开始日期 str对象,可选参数 :param end: 请求的结束日期 str对象,可选参数 :return: 返回相关系数矩阵组成的字典对象,如下所示 eg:

{‘pears’:
usBIDU usFB usGOOG usNOAH usSFUN usTSLA usVIPS usWUBA

usBIDU 1.0000 0.3013 0.3690 0.4015 0.3680 0.3015 0.3706 0.4320 usFB 0.3013 1.0000 0.6609 0.2746 0.1978 0.4080 0.2856 0.2438 usGOOG 0.3690 0.6609 1.0000 0.3682 0.1821 0.3477 0.3040 0.2917 usNOAH 0.4015 0.2746 0.3682 1.0000 0.3628 0.2178 0.4645 0.4488 usSFUN 0.3680 0.1978 0.1821 0.3628 1.0000 0.2513 0.2843 0.4883 usTSLA 0.3015 0.4080 0.3477 0.2178 0.2513 1.0000 0.2327 0.3340 usVIPS 0.3706 0.2856 0.3040 0.4645 0.2843 0.2327 1.0000 0.4189 usWUBA 0.4320 0.2438 0.2917 0.4488 0.4883 0.3340 0.4189 1.0000

‘sperm’:
usBIDU usFB usGOOG usNOAH usSFUN usTSLA usVIPS usWUBA

usBIDU 1.0000 0.3888 0.4549 0.4184 0.3747 0.3623 0.4333 0.4396 usFB 0.3888 1.0000 0.7013 0.2927 0.2379 0.4200 0.3123 0.2216 usGOOG 0.4549 0.7013 1.0000 0.3797 0.2413 0.3871 0.3922 0.3035 usNOAH 0.4184 0.2927 0.3797 1.0000 0.3581 0.2066 0.4643 0.4382 usSFUN 0.3747 0.2379 0.2413 0.3581 1.0000 0.2645 0.3890 0.4693 usTSLA 0.3623 0.4200 0.3871 0.2066 0.2645 1.0000 0.2540 0.2801 usVIPS 0.4333 0.3123 0.3922 0.4643 0.3890 0.2540 1.0000 0.4080 usWUBA 0.4396 0.2216 0.3035 0.4382 0.4693 0.2801 0.4080 1.0000 }

abupy.SimilarBu.ABuSimilarCache module

abupy.SimilarBu.ABuSimilarCache.clear_cache(key=None)[源代码]
abupy.SimilarBu.ABuSimilarCache.dump_2_hdh5(key, obj)[源代码]
abupy.SimilarBu.ABuSimilarCache.load_2_hdh5(key)[源代码]
abupy.SimilarBu.ABuSimilarCache.show_keys()[源代码]
abupy.SimilarBu.ABuSimilarCache.similar_key(symbol, cmp_cnt=None, n_folds=None, start=None, end=None, corr_type=None)[源代码]

abupy.SimilarBu.ABuSimilarDrawing module

相关系数,相似度可视化模块

abupy.SimilarBu.ABuSimilarDrawing.draw_show_close(sorted_ret, target_count, show_cnt)[源代码]

通过多少个交易日参数target_count,计算出make_kl_df的参数n_folds, 使用ABuScalerUtil.scaler_std将show_cnt个最相似的股票价格序列进行 标准化在一个数量值范围内可视化 :param sorted_ret: 可迭代序列,元素形如(‘usTSLA’, 1.0), (‘usSINA’, 0.45565379371028253)..... :param target_count: 需要请求多少个交易日数据,int :param show_cnt: 可视化top show_cnt相关个价格走势

abupy.SimilarBu.ABuSimilarDrawing.draw_show_close_array(sorted_ret, cs_array)[源代码]

绘制参数中cs_array序列个金融时间序列 :param sorted_ret: 可迭代序列,元素形如(‘usTSLA’, 1.0), (‘usSINA’, 0.45565379371028253)..... :param cs_array: 可迭代的价格序列

Module contents

class abupy.SimilarBu.ECoreCorrType[源代码]

Bases: enum.Enum

ECoreCorrType: 相关系数计算方法

E_CORE_TYPE_PEARS = 'pears'
E_CORE_TYPE_ROLLING = 'rolling'
E_CORE_TYPE_SIGN = 'sign'
E_CORE_TYPE_SPERM = 'sperm'
classmethod task_cnt()[源代码]

ECoreCorrType暂时支持的相关计算方法个数

abupy.SimilarBu.find_similar_with_se(symbol, start, end, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用start, end参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param start: 请求的开始日期str对象 :param end: 请求的结束日期str对象 :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return:

abupy.SimilarBu.find_similar_with_folds(symbol, n_folds=None, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用n_folds参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param n_folds: 相关性对比n_folds年,int :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return:

abupy.SimilarBu.find_similar_with_cnt(symbol, cmp_cnt=60, show_cnt=10, rolling=False, show=True, corr_type=<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>)[源代码]

固定参数使用cmp_cnt参数提供时间范围规则,套接_find_similar,为_find_similar提供时间范围规则 :param symbol: 外部指定目标symbol,str对象 :param cmp_cnt: 相关性对比多少个交易日,int :param show_cnt: 最终结果展示以及可视化相似度个数 :param rolling: 是否使用时间加权相关计算,与corr_type=ECoreCorrType.E_CORE_TYPE_ROLLING一样,单独拿出来了 :param show: 是否可视化最终top最相关的股票 :param corr_type: ECoreCorrType对象,暂时支持皮尔逊,斯皮尔曼,+-符号相关系数,移动时间加权相关系数 :return: