个股的beta系数的估算

代码


def test_gg_beta(symbol='000895.sz',
start='2018-01-01',
plot_price=True,
align_to='gg',
plot_k=True,
):
'''
align_to: str, ['gg', 'dp'], 数据对齐的方式
'gg': 表示对齐到个股, 改变大盘的数据, 以对齐到个股上
'dp': 表示对齐到大盘, 改变个股的数据, 以对齐到大盘上 >>> symbol='000895.sz'
>>> start='2018-01-01' >>> beta, df = test_gg_beta(align_to='gg', plot_k=False)
>>> beta2, df2 = test_gg_beta(align_to='dp', plot_k=False) >>> beta, df, plots = test_gg_beta('000933.sz')
>>> beta, df = test_gg_beta('000933.sz', plot_price=False, plot_k=False) 结果是:
0.83(双汇发展 @ 2018年)
1.64(神火股份 @ 2018年) '''
_date = datetime.datetime.now().date().isoformat()
title='QC图件: 用于计算个股的Beta系数(DP:399317) \n 制作日期: {}'.format(_date) c=Context(symbol)
stk = Stock(c,start)
stk.grab_data_from_tdxhq()
stk.qfq()
stk.grab_index_from_tdxhq()
stk.indicator() # 个股通常会有停牌的时候, 所以需要对齐
# 比如以个股为准, 把大盘对齐到个股是时间戳里:
# 将大盘的收盘线, 插入到个股的ohlc数据框里(用assign方法)
if align_to == 'gg':
f = stk.ohlc.close[0] / stk.aindex.close[0]
df=stk.ohlc.assign(dp=stk.aindex.close * f)
df=df.loc[:, ['close', 'dp']]
beta = ttr.estimateBeta(df.close, df.dp)
title += '\n{:s}({:s})的Beta系数: {:.4f}(数据对齐到个股)'.format(stk.context.name,stk.context.code, beta)
if plot_price:
plt.figure()
df.plot(title=title)
elif align_to == 'dp':
f = stk.aindex.close[0] / stk.ohlc.close[0]
df2 = stk.aindex.assign(gg=stk.ohlc.close * f)
df2 = df2.loc[:, ['close', 'gg']]
df2 = df2.fillna(method='ffill') # 向未来填充 (用老数据向下填充)
beta2 = ttr.estimateBeta(df2.gg, df2.close)
title += '\n{:s}({:s})的Beta系数: {:.4f}(数据对齐到大盘)'.format(stk.context.name,stk.context.code, beta2)
if plot_price:
plt.figure()
df2.plot(title=title) if plot_k:
# fig,ax = plt.subplots(1,1)
#stk.mycandlestick_ohlc(ax, [20,60])
#stk.mycandlestick_ohlc(ax, with_raw_quotes=True)
# stk.mycandlestick_ohlc(ax, with_raw_quotes=False) subset = slice(-120*3,None) # '2017-07' '2017'
subset = None
plots = pl.Plotter(stk.context, stk, subset) #plot stk data
# plots.plot_candle_only( 'lday')
plots.plot_candle_vol('lday')
#plots.plot_candle_vol('lday', savefig=True) if align_to=='gg':
return beta, df
else:
return beta2, df2

结果图

结论

用276天大盘交易日(同期个股是271个交易日)的数据, 采用两种方法, 得到的beta值为:

0.833 vs 0.830

非常接近.

小于1的beta, 揭示了该股在大盘下跌阶段的优异表现.

股票池的beta

代码


def study_block_beta(subset=(8,18,1),show=False):
''' >>> beta, res = study_block_beta()
>>> beta, res = study_block_beta(show=True)
'''
syms_, syms = read_zxg(subset) betas, names, codes=[],[],[]
for enum, sym in enumerate(syms):
stk=load_data(sym)
sname = stk.context.name
code = stk.context.code
names.append(sname)
codes.append(code)
pw=sname_print_width(sname)
sdt = str(stk.sdt)[:10]
edt = str(stk.edt)[:10]
prompt = 'loaded data: {:<{pw}} {} {} {}'.format(sname,
code,
sdt, edt,
pw=pw)
print(prompt)
beta=ttr.estimateBeta(stk.ohlc.close, stk.aindex.close)
betas.append(beta)
if show:
#make plot
close = stk.ohlc.close
close = close/close[0] * 10.0
#if not isinstance(fig, plt.Figure):
if enum==0:
fig=plt.figure(); type(fig)
aindex = stk.aindex.close/stk.aindex.close[0] * 10.
ax = aindex.plot(label='国证A指', lw=4, logy=True, ) #use_index=)
close.plot(axes=ax, label=sname, logy=True,)
else:
if enum< len(syms) - 1:
close.plot(axes=ax, label=sname,logy=True,)
else:
close.plot(axes=ax, label=sname,logy=True, title='池子里的收盘线')
ax.legend() resS = '{} {:8} {:6} {:6} \n'.format('Num','name', 'code', 'Beta')
resS += '-' * 33 + '\n'
for i in range(len(names)):
pw=sname_print_width(names[i])
resS += '{:3d} {:{pw}} {} {:.3f} \n'.format(i, names[i], codes[i], betas[i], pw=pw)
print( resS) return betas, resS

结果:

Num name code Beta

0 深圳燃气 601139 0.732

1 分众传媒 002027 1.392

2 海康威视 002415 1.378

3 双汇发展 000895 0.839

4 柳 工 000528 1.336

5 上海银行 601229 0.561

6 华兰生物 002007 0.880

7 兖州煤业 600188 1.251

8 云铝股份 000807 1.586

9 神火股份 000933 1.627

300个交易日: 2017-11-28 -- 2019-02-22 时间段的数据:

520个交易日: 2017-01-03 -- 2019-02-22 时间段的数据:

个股和股票池的beta系数的估算的更多相关文章

  1. 检验两个随机序列的beta系数

    检验两个随机序列的beta系数 代码 def test_beta(loops=10): ''' 检验两个随机序列的beta系数 :loops: int, 循环次数, 每次循环会产生两个随机序列, 然后 ...

  2. 缠中说禅股票交易系统图解 z

    缠中说禅股票交易系统图解 2010-03-23 10:51 (王纯阳)缠论祖师的经典语录 1. 就在买点买,卖点卖:当然,买点并不一定是一个点,一个价位,级别越大的,可以容忍的区间越大. 2. 你要经 ...

  3. 如何使用Pythonapi函数写股票策略

    如何使用Python api 函数写股票策略 写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api.量化平台提供的api帮助文件里都有了,本文主要介绍写 ...

  4. python+Sqlite+Dataframe打造金融股票数据结构

    5. 本地数据库 很简单的用本地Sqlite查找股票数据. DataSource类,返回的是Dataframe物件.这个Dataframe物件,在之后的业务,如计算股票指标,还需要特别处理. impo ...

  5. Python之关于量化投资实现代码--根据策略提出的代码--还未完善

    # 根据缺口的模式选股买股票 ''' -------------------------------------------- 1.总体回测前要做的事情 initialize(context) 1.1 ...

  6. <股市高手和你想的不一样>读书笔记

    书在这里 在股市中挖掘真正有成长潜力的好企业,是成功投资者的关键 股票被低估的时候,才值得买 我们买股票,就是买这家公司的未来 公司的成长性要重点看两个方面,一个方面要看该公司近三年的成长趋势,另外一 ...

  7. 【pyhon】理想论坛爬虫1.05版,将读取和写DB分离成两个文件

    下午再接再厉仿照Nodejs版的理想帖子爬虫把Python版的也改造了下,但美中不足的是完成任务的线程数量似乎停滞在100个左右,让人郁闷.原因还待查. 先把代码贴出来吧,也算个阶段性成果. 爬虫代码 ...

  8. 【Nodejs】理想论坛帖子爬虫1.01

    用Nodejs把Python实现过的理想论坛爬虫又实现了一遍,但是怎么判断所有回调函数都结束没有好办法,目前的spiderCount==spiderFinished判断法在多页情况下还是会提前中止. ...

  9. day33 Python与金融量化分析(三)

    第三部分 实现简单的量化框架 框架内容: 开始时间.结束时间.现金.持仓数据 获取历史数据 交易函数 计算并绘制收益曲线 回测主体框架 计算各项指标 用户待写代码:初始化.每日处理函数 第四部分 在线 ...

随机推荐

  1. python代码格式检查工具部署pre_commit

    如何使用pre_commit?1. 合并该分支 2. 在git根目录下使用pre-commit install即可3. 如果没有装pre-commit 安装一下pip install pre-comm ...

  2. Delphi学习技巧

    我感觉学习最大的诀窍是, 尽快捕捉到设计者(Delphi VCL 的设计者.进而是 Windows 操作系统的设计者)的某些思路, 和大师的思路吻合了, 才能够融汇贯通, 同时从容使用它们的成果. 碰 ...

  3. ajax readystatue

    onReadyStatueChange存儲狀態處理函數,當readyStatue改變時,調用該函數. readyStatue的狀態: 0   請求未初始化 1   服務器連接已建立 2  請求已接收 ...

  4. pgm11

    这里简要的讨论 hybrid network 与一些时序数据的分析. hybrid network 指网络中存在离散随机变量与连续随机变量,这种情况下一般非常麻烦,这主要是因为连续型随机变量需要使用某 ...

  5. P2707 Facer帮父亲

    题目背景 Facer可是一个孝顺的孩纸呦 题目描述 Facer的父亲是一名经理,现在总是垂头丧气的. Facer问父亲,怎么啦?父亲说,公司出了点问题啊. 公司管理着N个风景点,每个风景点都有不少人来 ...

  6. day6 字符串

    重复输出字符串 # * 重复输出字符串 print("hello"*2) 字符串切片 # 字符串也拥有索引,和列表切片操作类似 print("helloworld&quo ...

  7. day11 filter函数

    场景模拟:我想判断某个列表里面的某个元素怎么怎么样 基础方法,如果需要判断多次则重复代码 ret = [] move_peole = ["alex","sb_wupeiq ...

  8. Inside JVM 内存模型

    Inside JVM 内存模型 来源  原文:https://blog.csdn.net/silentbalanceyh/article/details/4661230 参考:IBM开发中心文档,&l ...

  9. 金三银四:蚂蚁金服JAVA开发面试题及答案之一面(持续更新

    一面 1.自我介绍.自己做的项目和技术领域 开放题 2.项目中的监控:那个监控指标常见的有哪些? 答:CPU.内存.IO 等等.建议下载个nmon工具,里面有各个指标. 数据库:Mysql(缓存命中. ...

  10. 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表  1. Actions表 ...