python代码实现技术指标: 转债正股的乖离率
python代码实现技术指标: 转债正股的乖离率
乖离率(BIAS)是描述股价与股价的移动平均线的相距的远近程度。BIAS指的是相对距离。
1.BIAS的计算公式及参数。
N日乖离率=(当日收盘价-N日移动平均价)/N日移动平均价
式中:分子为股价(收盘价)与移动平均价的绝对距离,可正可负,除以分母后,就是相对距离。
移动平均价为1元时相差0.1元,与移动平均价为10元时相差0.1元是很不相同的,所以在一定场合要用相对距离,不应考虑绝对距离。
BIAS的公式中含有参数的项只有一个,即MA。这样,MA的参数就是BIAS的参数,即乖离率的参数就是移动平均价的参数,也就是天数。参数大小的选择首先影响MA,其次影响BIAS。一般说来,参数选得越大,则允许股价远离MA的程度就越大。换句话说,股价远离MA到了一定程度,我们就会认为该回头了,而这个远离的程度是随着参数的变大而变大的。例如,参数为5时,我们可能认为BIAS到了4%股价就该回头了;而参数为10时,我们则必须等到BIAS超过4%,比方说到了7%才认为股价该回头。
2.BIAS的应用法则。
BIAS的原理是离得太远了就该回头,因为股价天生就有向心的趋向,这主要是由人们的心理因素造成的。
另外,经济学中价格与需求的关系也是产生这种向心作用的原因。股价低需求就大,需求一大,供不应求,股价就会上升;反之,股价高需求就小,供过于求,股价就会下降,最后达到平衡,平衡位置就是中心。
BIAS的应用法则主要是从以下考虑:
从BIAS的取值大小方面考虑。这个方面是产生BIAS的最初的想法。找到一个正数或负数,只要BIAS一超过这个正数,我们就应该感到危险而考虑抛出,
只要BIAS低于这个负数,我们就感到机会可能来了而考虑买入。这样看来问题的关键就成了如何找到这个正数或负数,它是采取行动与沉默的分界线。
上面的是百度出来的bias的解释。 也看到少数人用这个指标来根据正股来追踪转债,获得不错的收益率。所以笔者也尝试下该参数的计算。有空再把回测贴上了。
python 代码实现
#计算方法: #bias指标 #N期BIAS=(当日收盘价-N期平均收盘价)/N期平均收盘价*100% df['bias_6'] = (df['close'] - df['close'].rolling(6, min_periods=1).mean())/ df['close'].rolling(6, min_periods=1).mean()*100 df['bias_12'] = (df['close'] - df['close'].rolling(12, min_periods=1).mean())/ df['close'].rolling(12, min_periods=1).mean()*100 df['bias_24'] = (df['close'] - df['close'].rolling(24, min_periods=1).mean())/ df['close'].rolling(24, min_periods=1).mean()*100 df['bias_6'] = round(df['bias_6'], 2) df['bias_12'] = round(df['bias_12'], 2) df['bias_24'] = round(df['bias_24'], 2)
核心就是上面的几行,压缩下,变成一个函数,df为正股的日线数据。 N为要计算的N期
def bias(df,N):label='bias_{}'.format(N)df[label] = (df['closePrice'] - df['closePrice'].rolling(N, min_periods=1).mean())/ df['closePrice'].rolling(N, min_periods=1).mean()*100df[label] = df[label].map(lambda x:round(x,2))return df.iloc[-1][label]
当然,写成map函数也可以,一行即可。不过这样追求简洁反而让看的人错过某些细节信息。 python花式炫技要不得。
有了核心部分,剩下的边角料就一步一步填就好了。
获取转债对应正股的代码
方法1:
集思录和宁稳的数据,数据准确性与更新最快,有过滤强赎公告。 具体操作方式见文:
集思录:
https://t.zsxq.com/zJM7qVJ
宁稳:
https://t.zsxq.com/jemEI6y
日线数据获取:tushare,但需要积分(¥¥¥¥),过滤出来的数据需要通过时间过滤,因为出来的很多历史数据。 之前共享了一个pro 版本的token,也可以直接使用,无限调用。
用这个方法本地既可以跑,也可以上QMT实盘,用于每天自动选债。
方法2:
量化平台,优矿、聚宽等。
方便,不需要本地安装python环境。不过没法每次做成自动化操作,只能每次都要打开网页,点一下运行。无法每天自动运行通知到自己的微信。
下面用方法2来实现:
获取所有 转债与正股代码
def get_bonds_list(beginDate=u"20170101", endDate=u"20201215",EB_ENABLE=False):df = DataAPI.MktConsBondPremiumGet(SecID=u"",tickerBond=u"",beginDate=beginDate,endDate=endDate,field=u"",pandas="1") cb_df = df.tickerBond.str.startswith(('12', '11'))df = df[cb_df]cb_df = df.tickerBond.str.startswith('117')df = df[~cb_df]if not EB_ENABLE:eb = df.secShortNameBond.str.match('\d\d.*?E[123B]') # TODO 判断EB是否过滤df = df[~eb] ticker_list = []remove_duplicated = set()for _, row in df[['tickerBond', 'secShortNameBond', 'tickerEqu']].iterrows():if row['tickerBond'] not in remove_duplicated:ticker_list.append((row['tickerBond'], row['secShortNameBond'], row['tickerEqu']))remove_duplicated.add(row['tickerBond'])ticker_list = force_redemption(ticker_list, beginDate)return ticker_list
start_date = '2022-01-14' ticker_list=get_bonds_list(start_date,start_date)
开始时间与结束时间同一天,start_date='2022-01-14', 因为我们需要计算当前的bias的值,所以我们不取历史强赎的转债数据。
取的正股日期,以当前日期往前N×2天,比如要求N=6的周期,那么就取个6*2=12天的历史日线。 实际正常取N+3即可,为了以防节假日的时候数据过少导致k线不够。
start_date_dt = datetime.strptime(start_date,'%Y-%m-%d') + timedelta(days=-N*2) start_date_str = start_date_dt.strftime('%Y-%m-%d')
所以使用一个正股代码求bias值的代码为:
def get_zg_bias(code):df=DataAPI.MktEqudAdjGet(secID=u"",ticker=code,tradeDate=u"",beginDate=start_date_str,endDate=u"",isOpen="1",field=u"closePrice,tradeDate",pandas="1")return bias(df,N)
批量取所有转债正股的bias只需要一个循环:
ticker_list=get_bonds_list(start_date,start_date) bias_list =[] N = 6 for bond in ticker_list:_bias = get_zg_bias(bond[2])bias_list.append({'zg_name':bond[1],'code':bond[0],'bias':_bias})
把结果转为dataframe
bias_df = pd.DataFrame(bias_list)
得到的是6日均线的bias值排序,看看结果:
当前bias最大的10值。
最大的居然是亚药转债的正股,bias值为25.14. 上表中最大的在最底下。 接着依次是万孚转债,润达转债的正股。
6日均线的bias更多应用在短线上,选出来的都是多头均线排列。当然这时更加需要溢价率的配合,结合溢价率,把高溢价率的去除。
不然100%的溢价率,即使正股继续涨停,也得要涨100%多才能消化掉这个溢价率。
计算转债溢价率,然后把高溢价率的去除,这里阈值随意给一个,比如过滤掉30%
def getBondPremRatio(codelist):return DataAPI.MktConsBondPerfGet(beginDate=start_date,endDate=start_date,secID=u"",tickerBond=codelist,tickerEqu=u"",field=u"tickerBond,bondPremRatio",pandas="1")
溢价率与bias合并
join_df = pd.merge(bias_df,bondPremRatio_list,left_on='code',right_on='tickerBond',how='inner')
过滤溢价率大于30%的,bias值最大的10值
join_df[join_df['bondPremRatio']<30].sort_values('bias',ascending=False).head(10)
然后正股下降趋势的是bias值倒数10名:
随便找一只对应的正股看看,小康股份
目前均线是空头排列。但是价格和溢价率都是相对较高,这种下降走势就不取抄底转债了。 要博反弹的话,可以把价格控制一下,最好在160以下的,越靠近债底安全较高。
python代码实现技术指标: 转债正股的乖离率相关推荐
- 抱团股会一直涨?无脑执行大小盘轮动策略,轻松跑赢指数5倍【附Python代码】
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 前言: 巴蛇吞象,扬州跨鹤.人性之贪婪,逝者如此, ...
- Python 量化投资实战教程(3) —A股回测MACD策略
量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...
- 假设检验怎么做?这次把方法+Python代码一并教给你
(图片付费下载于视觉中国) 作者 | Jose Garcia 译者 | 张睿毅 校对 | 张一豪.林亦霖 编辑 | 于腾凯 来源 | 数据派THU(ID:DatapiTHU) [导读]本文中,作者给出 ...
- 服不服?40行Python代码,实现卷积特征可视化
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 卷积神经网络(CNN)变革了计算机视觉 ...
- 深度学习中的正则化技术(附Python代码)
作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...
- python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏
集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...
- python浪漫代码-使用Python代码的程序员也浪漫
原标题:使用Python代码的程序员也浪漫 代码也浪漫:用Python放一场圣诞节烟花秀! 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法 ...
- python代码大全p-[译]让你的Python代码优雅又地道
译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它. -- Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格, ...
- python代码大全p-如何写出优雅又地道的Python代码?【转载】
在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic.一般说地道(idiomatic)的python代码,就是指这份代码很pyth ...
最新文章
- oracle12c无法访问em精简版,Oracle12C的EM无法访问怎么办?
- 深度探索va_start、va_arg、va_end
- Linux下编译带x264的ffmpeg的方法
- alot英文怎么读_很多的英文怎么说
- 作者:李雪梅(1984-),女,烟台中科网络技术研究所研发工程师。
- oracle DB死锁
- 图论 —— 最短路 —— Floyd 算法
- java的jtextarea_java中怎么在JTextArea中添加图片?
- mysql服务器失败1396_MYSQL ERROR 1396 (HY000) 错误的解决办法
- python有哪些用途-Python语言有哪些用途
- Mac密码管理工具:1Password 7
- mysql 游标创建_Mysql 游标创建
- 生如夏花之绚烂,Lisp风格的Lialang诞生了!
- Fabric CA源码和镜像编译
- 分享基于SpringBoot2+MybatiPlus+LayUI+Snaker+Mysql技术前后端分离开源后台管理系统脚手架
- 58同城一面【前端】
- ps用画笔工具设计水墨圆环
- 创业之路 - 魏杰:下一个 10 年,将造就一批新富翁
- Dockerfile 定制 Rabbitmq 集成延时队列的镜像
- 重庆大学计算机非全学费,重庆大学非全日制研究生学费多少,为什么非全日制研究生学费这么贵?...
热门文章
- CUBEIDE STM32 HardFault分析
- 我去。两个字的演变。《人类文字之变》文 / 江湖一剑客
- Ajax+php上传图片
- java轮播添加图片_给网站首页添加图片轮播的效果
- 解决Git执行pull命令时,报错:Please enter a commit message to explain why this merge is necessary...
- CODE[VS]2996 Comrade 同志
- 阿里百秀前后端交互项目
- 中国石油大学《安全系统工程》 ​​​​​​​第三阶段在线作业
- 谷歌浏览器书签栏书签丢失问题
- 谷歌浏览器自动升级关闭小方法