abupy.TLineBu package

Submodules

abupy.TLineBu.ABuTL module

class abupy.TLineBu.ABuTL.ESkeletonHow[源代码]

Bases: enum.Enum

计算骨架走势使用的how

skeleton_close = 4
skeleton_max = 1
skeleton_mean = 2
skeleton_median = 3
skeleton_min = 0
skeleton_triangle = 100
class abupy.TLineBu.ABuTL.EShiftDistanceHow[源代码]

Bases: enum.Enum

计算位移路程比的how

shift_distance_close = 0
shift_distance_maxmin = 1
shift_distance_sum_maxmin = 2
class abupy.TLineBu.ABuTL.AbuTLine(line, line_name, **kwargs)[源代码]

Bases: abupy.CoreBu.ABuBase.FreezeAttrMixin

技术线封装执行对外操作的对象类

score

描述器类:作用在类中需要lazy的对象方法上

show()[源代码]

可视化技术线最基本的信息,high,mean,low

show_best_poly(zoom=False, show=<function AbuTLine.show>)[源代码]

可视化技术线最优拟合次数,寻找poly(1-100)次多项式拟合回归的趋势曲线可以比较完美的代表原始曲线y的走势, 具体详情ABuRegUtil.search_best_poly :param zoom: 透传search_best_poly是否缩放x,y :param show: 是否进行可视化

show_golden(both_golden=True)[源代码]

可视化技术线黄金分割 :param both_golden: 代表同时可视化两种分割线的计算在一个画布上 :return:

classmethod show_kl_pd(kl_pd, key='close', show=True, **kwargs)[源代码]

类方法,针对金融时间序列中的数据列进行技术线分析,可视化最优拟合次数, 路程位移比,拟合通道曲线,骨架通道,阻力位和支撑位等技术线分析,返回 AbuTLine对象 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param key: kl_pd中做为技术线的列名称,str对象 :param show: 是否可视化,可视化最优拟合次数,路程位移比,拟合通道曲线,骨架通道,阻力位和支撑位等 :param kwargs: 可视化函数涉及的其它参数 eg:step_x, only_last等 :return: 返回AbuTLine对象

show_least_valid_poly(zoom=False, show=True)[源代码]

可视化技术线,检测至少poly次拟合曲线可以代表原始曲线y的走势, 具体详情ABuRegUtil.least_valid_poly :param zoom: 透传least_valid_poly是否缩放x,y :param show: 是否进行可视化

show_percents(percents=(0.1, 0.9))[源代码]

可视化技术线比例分割的区域 :param percents: float值或者可迭代序列,默认使用(0.1, 0.9) :return:

show_regress_trend_channel(step_x=1.0)[源代码]

可视化技术线拟合曲线及上下拟合通道曲线,返回三条拟合曲线,组成拟合通道 :param step_x: 时间步长控制参数,默认1.0,float

show_resistance_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]

最终对技术线只对支撑位进行绘制

套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend
参数:
  • best_poly – 传递show_support_resistance_pos, 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
show_shift_distance(how=<EShiftDistanceHow.shift_distance_close: 0>, step_x=1.0, show=True, show_log=True)[源代码]

可视化技术线’路程位移比’,注意默认使用shift_distance_close对应标准路程点位值定义方法,其它方法对应的 路程终点点位值使用的计算方法并非得到最准确的’路程位移比’,实现详ABuTLExecute.shift_distance :param how: EShiftDistanceHow对象或者callable即外部可自行设置方法,即计算算路程终点点位值使用的计算方法可自定义 :param step_x: 时间步长控制参数,默认1.0,float :param show: 是否进行可视化 :param show_log: 是否输出位移路程比各个段比值,默认True :return 对每一个金融序列切片进行shift_distance的返回结果序列,即每一个序列中的元素为:

h_distance(三角底边距离), v_distance(三角垂直距离), distance(斜边,路程), shift(位移), sd(位移路程比:shift / distance)

所组成的tuple对象

show_skeleton(how=<ESkeletonHow.skeleton_min: 0>, step_x=1.0, ps=True)[源代码]

可视化技术线骨架结构 :param how: 计算数据序列骨架点位的方法,ESkeletonHow对象或者callable即外部可自行设置方法,

即计算数据序列骨架点位的方法可自定义
参数:
  • step_x – 时间步长控制参数,默认1.0,float
  • ps – 是否立即执行plt.show()
show_skeleton_bfgs(step_x=1.0)[源代码]

可视化技术线骨架结构与show_skeleton不同,由bfgs确定骨架点位值,即通过 scipy.interpolate.interp1d插值形成模型通过sco.fmin_bfgs计算骨架点位值 :param step_x: 时间步长控制参数,默认1.0,float

show_skeleton_channel(with_mean=True, step_x=1.0)[源代码]

套接show_skeleton,可视化可视化技术线骨架通道,通道由: ESkeletonHow.skeleton_min:下通道, ESkeletonHow.skeleton_max:上通道, ESkeletonHow.skeleton_mean 中轨通道,组成

参数:
  • with_mean – 是否绘制ESkeletonHow.skeleton_mean 中轨通道,默认True
  • step_x – 时间步长控制参数,默认1.0,float
show_support_resistance_pos(best_poly=0, show=True)[源代码]

可视化分析技术线阻力位和支撑位,通过sco.fmin_bfgs寻找阻力位支撑位,阻力位点也是通过sco.fmin_bfgs寻找, 但是要求传递进来的序列已经是标准化后取反的序列 eg:

demean_y = ABuStatsUtil.demean(self.tl): 首先通过demean将序列去均值 resistance_y = demean_y * -1 :阻力位序列要取反 support_y = demean_y :支持位序列不需要取反
参数:
  • best_poly – 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了, 详细阅ABuTLExecute.support_resistance_pos
  • show – 是否可视化
返回:

(技术线支撑位: support_pos, 技术线阻力位: resistance_pos)

show_support_resistance_select_k(best_poly=0, show=True)[源代码]

可视化分析技术线阻力位和支撑位序列从1-序列个数开始聚类,多个聚类器的方差值进行比较, 通过方差阀值等方法找到最佳聚类个数,最终得到kmean最佳分类器对象 :param best_poly: 传递show_support_resistance_pos,

函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
参数:show – 是否可视化显示
返回:upport_est, resistance_est, support_pos, resistance_pos
show_support_resistance_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]
套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend

最终对技术线阻力位和支撑位进行绘制,注意show参数控制的是中间流程中的可视化,不包括 最终阻力位和支撑的可视化 :param best_poly: 传递show_support_resistance_pos,

函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
参数:
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
show_support_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]

最终对技术线只对阻力位进行绘制

套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend
参数:
  • best_poly – 传递show_support_resistance_pos, 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
step_x_to_step(step_x)[源代码]

针对技术线的时间范围步长选择函数,在show_shift_distance,show_regress_trend_channel, show_skeleton_channel等涉及时间步长的函数中用来控制步长范围 :param step_x: 时间步长控制参数,float :return: 最终输出被控制在2-len(self.tl), int

y_zoom

描述器类:作用在类中需要lazy的对象方法上

abupy.TLineBu.ABuTLAtr module

计算线atr模块

abupy.TLineBu.ABuTLAtr.calc_atr_std(kl_pd, xd=21, ewm=True, show=True)[源代码]

计算atr移动平均std或者加权移动平均std技术线,使用 AbuTLine封装技术线实体,不会修改kl_pd,返回AbuTLine对象 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param xd: 计算移动平均std或加权移动平均std使用的窗口参数,默认21 :param ewm: 是否使用加权移动平均std计算 :param show: 是否可视化,可视化使用AbuTLine.show接口 :return: 返回AbuTLine对象

abupy.TLineBu.ABuTLAtr.show_atr_std(kl_pd)[源代码]

可视化atr移动平均std和加权移动平均std, 注意会修改kl_pd,只做测试使用,内部未做copy处理, 如不能改动,外部自copy操作,再传递进来 :param kl_pd: 金融时间序列,pd.DataFrame对象

abupy.TLineBu.ABuTLExecute module

技术线内部执行模块

abupy.TLineBu.ABuTLExecute.below_above_gen(x, y)[源代码]

(y, x) if x > y else (x, y) :param x: 支持比较操作的对象 :param y: 支持比较操作的对象

abupy.TLineBu.ABuTLExecute.bfgs_min_pos(find_min_pos, y_len, linear_interp)[源代码]

通过scipy.interpolate.interp1d插值形成的模型,通过sco.fmin_bfgs计算min :param find_min_pos: 寻找min的点位值 :param y_len: 原始序列长度,int :param linear_interp: scipy.interpolate.interp1d插值形成的模型 :return: sco.fmin_bfgs成功找到的值,所有失败的或者异常都返回-1

abupy.TLineBu.ABuTLExecute.calc_kl_speed(kl, resample=5)[源代码]

计算曲线跟随趋势的速度,由于速度是相对的,所以需要在相同周期内与参数曲线进行比对 :param kl: pd.Series或者numpy序列 :param resample: 计算速度数值的重采样周期默认5 :return: 趋势变化敏感速度

abupy.TLineBu.ABuTLExecute.calc_pair_speed(symbol, benchmark_symbol, resample=5, speed_key='close', start=None, end=None, n_folds=2, show=False)[源代码]

参数传递一组symbol对,获取symbol对的金融时间序列数据,根据speed_key获取曲线序列数据, 分别通过calc_kl_speed计算symbol对的趋势跟随速度,相关性*敏感度=敏感度置信度 :param symbol: eg: ‘AU0’ :param benchmark_symbol: eg: ‘XAU’ :param resample: 计算速度数值的重采样周期默认5 :param speed_key: 金融时间序列数据取的曲线序列key,默认’close’ :param start: 获取金融时间序列的start时间 :param end: 获取金融时间序列的end时间 :param n_folds: 获取金融时间序列的n_folds参数 :param show: 是否可视化symbol对的趋势走势对比 :return: 参数symbol, benchmark_symbol所对应的趋势变化敏感速度数值,以及相关性*敏感度=敏感度置信度

abupy.TLineBu.ABuTLExecute.find_golden_point(x, y, show=False)[源代码]

视觉黄金分割计算方法,以及对应简单可视化操作

abupy.TLineBu.ABuTLExecute.find_golden_point_ex(x, y, show=False)[源代码]

统计黄金分割计算方法,以及对应简单可视化操作

abupy.TLineBu.ABuTLExecute.find_percent_point(percents, y)[源代码]

可视化技术线比例分割的区域, 针对输入的比例迭代操作后 分别使用stats.scoreatpercentile和 (y.max() - y.min()) * pt + y.min()两种 方式进行计算的分割值, 返回对象为比例值为key的字典对象 eg:

input:
percents = (0.1, 0.9)
output:
{0.1: (15.732749999999999, 15.5075), 0.9: (31.995000000000005, 34.387500000000003)}
参数:
  • percents – 可迭代序列,eg: (0.1, 0.9), [0.3, 0,4, 0.8]
  • y – 计算分割线的序列
返回:

比例值为key的字典对象

abupy.TLineBu.ABuTLExecute.log_func()

多项拟合函数寻找阻力,支撑位的poly倍数基数

abupy.TLineBu.ABuTLExecute.plot_support_resistance_trend(x, y, trend_pos, label, only_last=False, plot_org=False, show=True)[源代码]

通过trend_pos绘制阻力线或者支撑线,only_last控制只绘制时间序列中最后一个发现的阻力或支撑, plot_org控制是否绘制线段还是直线,plot_org=True时绘制线段,否则通过LinearRegression进行 直线绘制 :param x: 可迭代序列x :param y: 可迭代序列y :param trend_pos: 趋势点x序列,绘制时需要通过原始序列y获取y[x]值 :param label: 可视化显示的文字,用来区分阻力位和支撑位 :param only_last: 控制只绘制时间序列中最后一个发现的阻力或支撑 :param plot_org: 控制是否绘制线段还是直线,控制是否绘制线段还是直线,

plot_org=True时绘制线段,否则通过LinearRegression进行
参数:show – 是否进行可视化
abupy.TLineBu.ABuTLExecute.regress_trend_channel(arr)[源代码]

通过arr计算拟合曲线及上下拟合通道曲线,返回三条拟合曲线,组成拟合通道 :param arr: numpy array :return: y_below, y_fit, y_above

abupy.TLineBu.ABuTLExecute.select_k_support_resistance(support_resistance, thresh=0.06, label='', show=True)[源代码]

对阻力位或者支撑位序列从1-序列个数开始聚类,多个聚类器的方差值进行比较, 通过方差阀值等方法找到最佳聚类个数,最终得到kmean最佳分类器对象 :param support_resistance: 阻力位或者支撑位序列 :param thresh: 聚类方差比例阀值,默认0.06 :param label: 可视化显示的label,主要用来区别阻力位和支撑位的聚类分析结果 :param show: 是否可视化 :return: 最佳分类器对象,KMeans类型

abupy.TLineBu.ABuTLExecute.shift_distance(arr, how, slice_start=0, slice_end=-1, color='r', show=True, show_log=True, ps=True)[源代码]

计算序列arr的’位移路程比’,可视化形式为直接三角展示位移,路程直接的关系,返回 h_distance(三角底边距离), v_distance(三角垂直距离), distance(斜边,路程), shift(位移), sd(位移路程比:shift / distance) :param arr: numpy array :param how: EShiftDistanceHow,计算路程终点点位值使用的计算方法 :param slice_start: 如果arr是子序列切片,切片start值, int :param slice_end: 如果arr是子序列切片,切片end值, int :param color: 直角三角边框颜色,str对象 eg:’r’, ‘red’ :param show_log: 是否输出位移路程比各个段比值,默认True :param show: 是否可视化 :param ps: 是否立即执行plt.show :return: h_distance(三角底边距离), v_distance(三角垂直距离),

distance(斜边,路程), shift(位移), sd(位移路程比:shift / distance)
abupy.TLineBu.ABuTLExecute.shift_distance_how(how)[源代码]

通过how(EShiftDistanceHow),对应出计算算路程终点点位值使用的计算方法 注意默认使用shift_distance_close对应标准路程点位值定义方法,其它方法对应的 路程终点点位值使用的计算方法并非得到最准确的’路程位移比’ :param how: EShiftDistanceHow对象或者callable即外部可自行设置方法,即计算算路程终点点位值使用的计算方法可自定义 :return: 计算算路程终点点位值使用的计算方法

abupy.TLineBu.ABuTLExecute.skeleton_how(how)[源代码]

根据how映射计算数据序列骨架点位的方法 :param how: ESkeletonHow对象或者callable即外部可自行设置方法,即计算数据序列骨架点位的方法可自定义 :return:

abupy.TLineBu.ABuTLExecute.support_resistance_pos(x, support_resistance_y, best_poly=0, label=None)[源代码]

分析获取序列阻力位或者支撑位,通过sco.fmin_bfgs寻找阻力位支撑位,阻力位点也是通过sco.fmin_bfgs寻找, 但是要求传递进来的序列已经是标准化后取反的序列 eg:

demean_y = ABuStatsUtil.demean(self.tl): 首先通过demean将序列去均值 resistance_y = demean_y * -1 :阻力位序列要取反 support_y = demean_y :支持位序列不需要取反

sco.fmin_bfgs使用的模型函数为polynomial.Chebyshev多项拟合函数,poly的次数确定 由ABuRegUtil.search_best_poly得到,即best_poly次多项式拟合回归的趋势曲线可以比较完美的代表原始曲线y的走势, 为了得到更多的阻力支持位种子点位值,使用:

np.polynomial.Chebyshev.fit(x, support_resistance_y, best_poly * g_upport_resistance_unit) g_upport_resistance_unit默认=3

best_poly * 3,即将poly次数又扩大了3倍,可以改变g_upport_resistance_unit获取更多的阻力位支撑位种子点,但 速度会更慢。 :param x: 待分析的序列np.array :param support_resistance_y: :param best_poly: 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了 :param label: 进度条显示的等待文字,str对象 :return: 阻力位或者支撑位序列

abupy.TLineBu.ABuTLExecute.support_resistance_predict(x, y, est, support_resistance, is_support, show=True)[源代码]

通过最优聚类器est从阻力位或者支撑位序列support_resistance中的序列进行聚类predict 对聚类结果进行可视化,最终从每个cluster中找到唯一值代表这个分类,如果是支撑位要找到最小值的index 如果是阻力位找到最大值的index :param x: 可迭代序列x :param y: 可迭代序列y :param est: 最佳分类器对象,KMeans类型 :param support_resistance: 阻力位或者支撑位序列 :param is_support: 是否是进行支撑位support_resistance_predict :param show: 是否进行可视化 :return: 返回从每个cluster中找到唯一值代表这个分类的x值组成的序列。list

abupy.TLineBu.ABuTLGolden module

黄金分割及比例分割示例模块

abupy.TLineBu.ABuTLGolden.calc_golden(kl_pd, show=True)[源代码]

只针对金融时间序列的收盘价格close序列,进行黄金分割及比例分割 数值结果分析以及可视化 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param show: 是否可视化黄金分割及比例分割结果 :return: 黄金分割及比例分割结果组成的namedtuple数值对象

abupy.TLineBu.ABuTLJump module

跳空缺口模块

class abupy.TLineBu.ABuTLJump.AbuJumpTuple[源代码]

Bases: abupy.TLineBu.ABuTLJump.AbuJumpTuple

abupy.TLineBu.ABuTLJump.calc_jump(kl_pd, jump_diff_factor=1, show=True)[源代码]

通过对比交易日当月的成交量,和当月的振幅来确定交易日当日的跳空阀值, 分别组装跳空方向,跳空能量,跳空距离等数据进入pd.DataFrame对象返回 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param jump_diff_factor: 参数通过设置jump_diff_factor来调节跳空阀值的大小,默认jump_diff_factor=1 :param show: 是否对结果跳空点进行可视化 :return: pd.DataFrame对象

abupy.TLineBu.ABuTLJump.calc_jump_line(kl_pd, power_threshold=2.0, jump_diff_factor=1, show=True)[源代码]

通过calc_jump计算kl_pd金融时间序列周期内跳空方向,跳空能量,跳空距离, 通过跳空能量jump.jump_power大于阀值的跳空点组成AbuJumpTuple对象, AbuJumpTuple对象有跳空日期date,跳空方向direction,跳空能量power,跳空基数价格price组成, 可视化AbuJumpTuple对象序列jump_lines中所有的跳空点

参数:
  • kl_pd – 金融时间序列,pd.DataFrame对象
  • power_threshold – 筛选跳空的点阀值,float,默认2.0
  • jump_diff_factor – 透传给calc_jump,参数通过设置jump_diff_factor来调节跳空阀值的大小
  • show – 是否可视化AbuJumpTuple对象序列中所有的跳空点
返回:

AbuJumpTuple对象序列

abupy.TLineBu.ABuTLJump.calc_jump_line_weight(kl_pd, sw=(0.5, 0.5), power_threshold=2.0, jump_diff_factor=1, show=True)[源代码]

通过calc_jump计算kl_pd金融时间序列周期内跳空方向,跳空能量,跳空距离, 把每一个跳空点都转换为AbuJumpTuple对象,与calc_jump_line不同点是 计算时间跳空能量分两部分组成 非时间加权的跳空能量 + 时间加权的跳空能量, 参数sw控制占比,sw[0]:控制非时间加权的跳空能量所最终占比,sw[1]:控制时间加权的跳空能量所最终占比 最终加权能量大于阀值能量的进行能量替换,加入到结果序列中返回 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param sw: tuple对象,sw[0]:控制非时间加权的跳空能量所最终占比,sw[1]:控制时间加权的跳空能量所最终占比 :param power_threshold: 筛选跳空的点阀值,float,默认2.0 :param jump_diff_factor: 透传给calc_jump,参数通过设置jump_diff_factor来调节跳空阀值的大小 :param show: 是否可视化AbuJumpTuple对象序列中所有的跳空点 :return: AbuJumpTuple对象序列

abupy.TLineBu.ABuTLSimilar module

相关系数上次技术线应用模块

abupy.TLineBu.ABuTLSimilar.calc_similar(symbol, cmp_symbol, sum_rank=None, corr_jobs=(<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>, <ECoreCorrType.E_CORE_TYPE_SPERM: 'sperm'>), show=True)[源代码]

使用ABuTLSimilar.calc_similar()函数计算返回的相关性数值是以目标股票所在市场为观察者, 它不关心某一个股票具体相关性的数值的大小,calc_similar(a, b) 的工作流程如下: 1.计算a与市场中所有股票的相关性 2.将所有相关性进行rank排序 3.查询股票b在rank序列中的位置,此位置值即为结果 即ABuTLSimilar.calc_similar返回值由0至1,这样的好处是通过计算usTSLA与usAAPL在所有股票中的相似度水平,会更全局客观的体现相关性

参数:
  • symbol – eg: ‘usTSLA’
  • cmp_symbol – 与symbol进行整体市场相关对比的symbol eg: ‘usTSLA’
  • sum_rank – 已经缓存了的sum_rank数据, eg: sum_rank usBIDU 10.0 usFB 16.0 usGOOG 12.0 usNOAH 2.0 usSFUN 14.0 usTSLA 18.0 usVIPS 6.0 usWUBA 8.0
  • corr_jobs

    默认:corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM) 可以再添加更多jobs eg:

    corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM,
    ECoreCorrType.E_CORE_TYPE_SIGN, ECoreCorrType.E_CORE_TYPE_ROLLING)

    注意每添加一种相关计算方法,耗时都会增加

  • show – 是否进行可视化
返回:

rank_score (float: 0至1), sum_rank

abupy.TLineBu.ABuTLSimilar.calc_similar_top(symbol, sum_rank=None, corr_jobs=(<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>, <ECoreCorrType.E_CORE_TYPE_SPERM: 'sperm'>), show=True, show_cnt=10)[源代码]

使用corr_jobs种相关算法在env所在的市场中寻找与symbol最相关的show_cnt个,可视化 show_cnt个 :param symbol: eg: ‘usTSLA’ :param sum_rank: 已经缓存了的sum_rank数据,

eg: sum_rank usBIDU 10.0 usFB 16.0 usGOOG 12.0 usNOAH 2.0 usSFUN 14.0 usTSLA 18.0 usVIPS 6.0 usWUBA 8.0
参数:
  • corr_jobs

    默认:corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM) 可以再添加更多jobs eg:

    corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM,
    ECoreCorrType.E_CORE_TYPE_SIGN, ECoreCorrType.E_CORE_TYPE_ROLLING)

    注意每添加一种相关计算方法,耗时都会增加

  • show – 是否进行可视化
  • show_cnt – 可视化最相关的top n的个数
返回:

排序好的top 相关序列,pd.Series对象 eg:

us_NYSE:.IXIC 4.0 usFB 6.0 usGOOG 8.0 usWUBA 11.0 usBIDU 11.0 usSFUN 14.0 usVIPS 16.0 usNOAH 18.0

abupy.TLineBu.ABuTLSimilar.coint_similar(symbol, sum_rank=None, corr_jobs=(<ECoreCorrType.E_CORE_TYPE_PEARS: 'pears'>, <ECoreCorrType.E_CORE_TYPE_SPERM: 'sperm'>), show=True)[源代码]

首先找到的是最相关的top个,从top n个最相关的再找协整,只虑pvalue,因为已经是从top n个最相关的再找协整 可视化整个过程

参数:
  • symbol – eg: ‘usTSLA’
  • sum_rank – 已经缓存了的sum_rank数据, eg: sum_rank usBIDU 10.0 usFB 16.0 usGOOG 12.0 usNOAH 2.0 usSFUN 14.0 usTSLA 18.0 usVIPS 6.0 usWUBA 8.0
  • corr_jobs

    默认:corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM) 可以再添加更多jobs eg:

    corr_jobs=(ECoreCorrType.E_CORE_TYPE_PEARS, ECoreCorrType.E_CORE_TYPE_SPERM,
    ECoreCorrType.E_CORE_TYPE_SIGN, ECoreCorrType.E_CORE_TYPE_ROLLING)

    注意每添加一种相关计算方法,耗时都会增加

  • show – 是否进行可视化
abupy.TLineBu.ABuTLSimilar.rank_corr_sum(corr_df_dict, symbol)[源代码]
使用corr_df_dict各个相关性矩阵中symbol的rank值进行sum合并:
eg:rank_pd
pears sperm

usBIDU 5.0 5.0 usFB 8.0 8.0 usGOOG 6.0 6.0 usNOAH 1.0 1.0 usSFUN 7.0 7.0 usTSLA 9.0 9.0 usVIPS 3.0 3.0 usWUBA 4.0 4.0

eg: rank_pd.sum(axis=1)
usBIDU 10.0 usFB 16.0 usGOOG 12.0 usNOAH 2.0 usSFUN 14.0 usTSLA 18.0 usVIPS 6.0 usWUBA 8.0
参数:
  • corr_df_dict – 相关性矩阵组成的字典对象
  • symbol – eg: ‘usTSLA’
返回:

rank_pd.sum(axis=1),pd.Series对象

abupy.TLineBu.ABuTLVwap module

VWAP: Volume Weighted Average Price 成交量加权平均价

非标准传统意义vwap计算,即非使用高频的分钟k线和量进行计算,只是套用概念计算 日线级别的vwap

class abupy.TLineBu.ABuTLVwap.EDayBarCalcType[源代码]

Bases: enum.Enum

计算金融序列最终price使用的方法

CLOSE = 3
HL_MEAN = 2

使用close价格

OHLC_MEAN = 0

高开低收的中位数

OHLC_MEDIAN = 1

高低的平均值

abupy.TLineBu.ABuTLVwap.calc_vwap(kl_pd, how=<EDayBarCalcType.OHLC_MEAN: 0>, show=True)[源代码]

非标准传统意义vwap计算,即非使用高频的分钟k线和量进行计算,只是套用概念计算 日线级别的vwap,使用EDayBarCalcType确定日线级别上的最终点位vwap序列,即确定 计算vwap使用的价格序列,需要注意成交量的数据准确度问题,且对异常成交量需要进行 控制筛选 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param how: EDayBarCalcType,计算确定日线级别上的最终点位价格序列使用的方法 :param show: 是否可视化,可视化使用AbuTLine.show接口 :return: 返回AbuTLine对象

abupy.TLineBu.ABuTLWave module

量化波动程度模块

abupy.TLineBu.ABuTLWave.calc_wave_abs(kl_pd, xd=21, show=True)[源代码]

计算金融时间序列kl_pd在的绝对波动,通过参数xd对波动进行重采样 在默认xd=21情况下,变成了月震荡幅度,使用ABuStatsUtil.demean对 月震荡幅度进行去均值操作后得到技术线demean_wave,AbuTLine包裹 技术线返回 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param xd: 对波动进行重采样的周期,单位天,int :param show: 是否可视化 :return: 返回AbuTLine对象

abupy.TLineBu.ABuTLWave.calc_wave_std(kl_pd, xd=21, ewm=True, show=True)[源代码]

计算收益的移动平均std或者加权移动平均std技术线,使用 AbuTLine封装技术线实体,不会修改kl_pd,返回AbuTLine对象 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param xd: 计算移动平均std或加权移动平均std使用的窗口参数,默认21 :param ewm: 是否使用加权移动平均std计算 :param show: 是否可视化,可视化使用AbuTLine.show接口 :return: 返回AbuTLine对象

abupy.TLineBu.ABuTLWave.calc_wave_weight_abs(kl_pd, xd=21, span=3, show=True)[源代码]

计算金融时间序列kl_pd的绝对波动,通过参数xd对波动进行重采样 在默认xd=21情况下,变成了月震荡幅度,使用ABuStatsUtil.demean对 月震荡幅度进行去均值操作后得到技术线demean_wave,与calc_wave_abs不同, 使用squared * np.sign(demean_wave)放大了wave,即大的愈加大,且 继续对squared_wave进行时间加权得到技术线形成ewm_wave,AbuTLine包裹技术线返回 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param xd: 对波动进行重采样的周期,单位天,int :param span: 对squared_wave进行时间加权的窗口参数,int :param show: 是否可视化 :return: 返回AbuTLine对象

abupy.TLineBu.ABuTLWave.show_wave_return(kl_pd)[源代码]

可视化收益的移动平均std和加权移动平均std 注意会修改kl_pd,只做测试使用,内部未做copy处理, 如不能改动,外部自copy操作,再传递进来 :param kl_pd: 金融时间序列,pd.DataFrame对象

abupy.TLineBu.ABuTLine module

技术线对象,对外执行,输出模块

class abupy.TLineBu.ABuTLine.AbuTLine(line, line_name, **kwargs)[源代码]

Bases: abupy.CoreBu.ABuBase.FreezeAttrMixin

技术线封装执行对外操作的对象类

score

描述器类:作用在类中需要lazy的对象方法上

show()[源代码]

可视化技术线最基本的信息,high,mean,low

show_best_poly(zoom=False, show=<function AbuTLine.show>)[源代码]

可视化技术线最优拟合次数,寻找poly(1-100)次多项式拟合回归的趋势曲线可以比较完美的代表原始曲线y的走势, 具体详情ABuRegUtil.search_best_poly :param zoom: 透传search_best_poly是否缩放x,y :param show: 是否进行可视化

show_golden(both_golden=True)[源代码]

可视化技术线黄金分割 :param both_golden: 代表同时可视化两种分割线的计算在一个画布上 :return:

classmethod show_kl_pd(kl_pd, key='close', show=True, **kwargs)[源代码]

类方法,针对金融时间序列中的数据列进行技术线分析,可视化最优拟合次数, 路程位移比,拟合通道曲线,骨架通道,阻力位和支撑位等技术线分析,返回 AbuTLine对象 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param key: kl_pd中做为技术线的列名称,str对象 :param show: 是否可视化,可视化最优拟合次数,路程位移比,拟合通道曲线,骨架通道,阻力位和支撑位等 :param kwargs: 可视化函数涉及的其它参数 eg:step_x, only_last等 :return: 返回AbuTLine对象

show_least_valid_poly(zoom=False, show=True)[源代码]

可视化技术线,检测至少poly次拟合曲线可以代表原始曲线y的走势, 具体详情ABuRegUtil.least_valid_poly :param zoom: 透传least_valid_poly是否缩放x,y :param show: 是否进行可视化

show_percents(percents=(0.1, 0.9))[源代码]

可视化技术线比例分割的区域 :param percents: float值或者可迭代序列,默认使用(0.1, 0.9) :return:

show_regress_trend_channel(step_x=1.0)[源代码]

可视化技术线拟合曲线及上下拟合通道曲线,返回三条拟合曲线,组成拟合通道 :param step_x: 时间步长控制参数,默认1.0,float

show_resistance_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]

最终对技术线只对支撑位进行绘制

套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend
参数:
  • best_poly – 传递show_support_resistance_pos, 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
show_shift_distance(how=<EShiftDistanceHow.shift_distance_close: 0>, step_x=1.0, show=True, show_log=True)[源代码]

可视化技术线’路程位移比’,注意默认使用shift_distance_close对应标准路程点位值定义方法,其它方法对应的 路程终点点位值使用的计算方法并非得到最准确的’路程位移比’,实现详ABuTLExecute.shift_distance :param how: EShiftDistanceHow对象或者callable即外部可自行设置方法,即计算算路程终点点位值使用的计算方法可自定义 :param step_x: 时间步长控制参数,默认1.0,float :param show: 是否进行可视化 :param show_log: 是否输出位移路程比各个段比值,默认True :return 对每一个金融序列切片进行shift_distance的返回结果序列,即每一个序列中的元素为:

h_distance(三角底边距离), v_distance(三角垂直距离), distance(斜边,路程), shift(位移), sd(位移路程比:shift / distance)

所组成的tuple对象

show_skeleton(how=<ESkeletonHow.skeleton_min: 0>, step_x=1.0, ps=True)[源代码]

可视化技术线骨架结构 :param how: 计算数据序列骨架点位的方法,ESkeletonHow对象或者callable即外部可自行设置方法,

即计算数据序列骨架点位的方法可自定义
参数:
  • step_x – 时间步长控制参数,默认1.0,float
  • ps – 是否立即执行plt.show()
show_skeleton_bfgs(step_x=1.0)[源代码]

可视化技术线骨架结构与show_skeleton不同,由bfgs确定骨架点位值,即通过 scipy.interpolate.interp1d插值形成模型通过sco.fmin_bfgs计算骨架点位值 :param step_x: 时间步长控制参数,默认1.0,float

show_skeleton_channel(with_mean=True, step_x=1.0)[源代码]

套接show_skeleton,可视化可视化技术线骨架通道,通道由: ESkeletonHow.skeleton_min:下通道, ESkeletonHow.skeleton_max:上通道, ESkeletonHow.skeleton_mean 中轨通道,组成

参数:
  • with_mean – 是否绘制ESkeletonHow.skeleton_mean 中轨通道,默认True
  • step_x – 时间步长控制参数,默认1.0,float
show_support_resistance_pos(best_poly=0, show=True)[源代码]

可视化分析技术线阻力位和支撑位,通过sco.fmin_bfgs寻找阻力位支撑位,阻力位点也是通过sco.fmin_bfgs寻找, 但是要求传递进来的序列已经是标准化后取反的序列 eg:

demean_y = ABuStatsUtil.demean(self.tl): 首先通过demean将序列去均值 resistance_y = demean_y * -1 :阻力位序列要取反 support_y = demean_y :支持位序列不需要取反
参数:
  • best_poly – 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了, 详细阅ABuTLExecute.support_resistance_pos
  • show – 是否可视化
返回:

(技术线支撑位: support_pos, 技术线阻力位: resistance_pos)

show_support_resistance_select_k(best_poly=0, show=True)[源代码]

可视化分析技术线阻力位和支撑位序列从1-序列个数开始聚类,多个聚类器的方差值进行比较, 通过方差阀值等方法找到最佳聚类个数,最终得到kmean最佳分类器对象 :param best_poly: 传递show_support_resistance_pos,

函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
参数:show – 是否可视化显示
返回:upport_est, resistance_est, support_pos, resistance_pos
show_support_resistance_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]
套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend

最终对技术线阻力位和支撑位进行绘制,注意show参数控制的是中间流程中的可视化,不包括 最终阻力位和支撑的可视化 :param best_poly: 传递show_support_resistance_pos,

函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
参数:
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
show_support_trend(best_poly=0, only_last=False, plot_org=False, show=True, show_step=False)[源代码]

最终对技术线只对阻力位进行绘制

套接:show_support_resistance_select_k->support_resistance_predict
->ABuTLExecute.plot_support_resistance_trend
参数:
  • best_poly – 传递show_support_resistance_pos, 函数使用者可设置best_poly, 设置后就不使用ABuRegUtil.search_best_poly寻找了
  • only_last – 透传ABuTLExecute.plot_support_resistance_trend,控制只绘制时间序列中最后一个发现的阻力或支撑
  • plot_org – 透传ABuTLExecute.plot_support_resistance_trend,控制是否绘制线段还是直线,控制是否绘制线段还是直线, plot_org=True时绘制线段,否则通过LinearRegression进行
  • show_step – show_step参数控制的是中间流程中的可视化, 不包括最终阻力位或者支撑的可视化
  • show – show: show参数控制的是最终阻力位或者支撑的可视化
step_x_to_step(step_x)[源代码]

针对技术线的时间范围步长选择函数,在show_shift_distance,show_regress_trend_channel, show_skeleton_channel等涉及时间步长的函数中用来控制步长范围 :param step_x: 时间步长控制参数,float :return: 最终输出被控制在2-len(self.tl), int

y_zoom

描述器类:作用在类中需要lazy的对象方法上

class abupy.TLineBu.ABuTLine.EShiftDistanceHow[源代码]

Bases: enum.Enum

计算位移路程比的how

shift_distance_close = 0

使用极限值做为路程的计算基础: 如果p_arr[0] > p_arr[-1],使用np.min(p_arr),否则np.max(p_arr),即上升趋势取max,下跌趋势取min

shift_distance_maxmin = 1

使用序列的sum和极限值为路程的计算基础: 如果abs(p_arr.max() - p_arr[-1]) > abs(p_arr[-1] - p_arr.min()) 取np.min(p_arr)否则np.max(p_arr)

shift_distance_sum_maxmin = 2
class abupy.TLineBu.ABuTLine.ESkeletonHow[源代码]

Bases: enum.Enum

计算骨架走势使用的how

skeleton_close = 4

使用三角模式,即最高,最低,第三点: 确定取最大值,最小值,第三个点位how_func提供, 如果np.argmax(arr) > np.argmin(arr)即最大值位置在最小值前面, 第三点取序列起点,否则取序列终点

skeleton_max = 1

使用平均值取骨架点位

skeleton_mean = 2

使用中位数取骨架点位

skeleton_median = 3

使用时间序列最后的元素取骨架点位

skeleton_min = 0

使用最大值取骨架点位

skeleton_triangle = 100
abupy.TLineBu.ABuTLine.log_func()

预备颜色序列集,超出序列数量应使用itertools.cycle循环绘制

Module contents