分享

关于python数据库入门

 昵称11935121 2018-06-20

用python是因为大家都说python好用

,然后我去学了下,感觉确实不错。不但计算速度快还可以直接从各数据库读取数据。代码写起来也方便。反正金融现在金融学正向着大数据分析迈进。我们不可能原地踏步的拿着资产负债表做名词解释自HI。所以就一起来学。
对于pyhton太基础的就不细说了。
进行分析和可视化,我们通常需要导入4个模块,向量模块 numpy,时间序列模块 pandas,作图模块 matplotlib,还有分析模块sicpy。
分析模块sicpy不讨论,第一,比较专业,不一定适合大部分人。第二,很多算法有问题,会影响计算速度,得自己重新码。(其实之所以用那三个模块的原因是我不会码,不然以我的性格非得自己弄一遍)
首先导入模块:
import numpy as np
import pandas as pd
import matplotlib as plot
导入模块后,我们要对接数据库,然后从数据库上提取数据。
我们可以直接读取网页数据
导入模块
import pandas.io.data as web
然后用
data=web.DataReader(name='^GDAXI&# 39;,data_source='yahoo&# 39;,start='2000-1-1&# 39;)
导入。
这行代码的意思是,用web从yahoo财经上读取从2001年1月1日开始的德国DAX指数数据。当然 其他地方的数据库也可以读取,比如google 谷歌财经,fred圣路易斯储备银行,famafernch 肯尼斯·弗伦奇数据库,或者直接通过 pandas.io.wb从世界银行读取各种数据。当然因为网络问题,读取的速度实在惊人。这个办法只能留给国外的朋友用了。
接下来我们换个数据源导入。

stock_list = '600030.XSHG‘
raw_data = DataAPI.MktEqudGet(secID=stock_list, beginDate=&# 39;20140101’, pandas='1‘;)
这样就导入了从2014年1月1日开始中信证券的数据。
我们用代码
raw_data.columns
可以查看该数据源有些什么数据
Index([u&# 39;secID‘, u'ticker’, u&# 39;secShortName’, u'exchangeCD‘, u&# 39;tradeDate’, u'preClosePrice‘, u&# 39;actPreClosePrice’, u'openPrice‘, u&# 39;highestPrice’, u'lowestPrice‘, u&# 39;closePrice’, u'turnoverVol‘, u&# 39;turnoverValue’, u'dealAmount‘, u&# 39;turnoverRate’, u'accumAdjFactor‘, u&# 39;negMarketValue’, u'marketValue‘, u&# 39;PE’, u'PE1‘, u&# 39;PB’, u'isOpen‘], dtype=&# 39;object’;)
我们看到了该数据源有包括收盘开盘价格,交易量,换手率,静态PB,动态PE,静态PE,市值等数据。好的数据源还会有经济数据财务数据,这些得自己去找。
这里插播一下数据库 pandas.DataFrame的结构他是由 行 index 列 columns 和数据矩阵构成。
我们从该数据库中取出:
data=raw_data[['secID‘, &# 39;tradeDate’, 'secShortName‘, &# 39;closePrice’, 'PE1’, &# 39;PB‘, 'turnoverVol’]]
再把行代码换成交易时间
data.index=data[&# 39;tradeDate‘]
列名称为,股票代码,交易时间,股票名称,收盘价(不复权),市盈率,市净率和换手率的数据。
然后用
print data
出入,就可以看到这张表格。
关于python数据库入门我们想知道的是什么时候该买股票,什么时候不该买股票,研究的是收益率的问题。但是数据库中没有收益率。这时候就需要我们把收益率加入表格中。
首先
我们新建一个列,把所有值赋值成0
data['ret_loop’]=0.0
我们生成了一个列标题为ret_loop的列,再全部赋值为0.注意:这里赋值用的是浮点数0.0如果不这样写之后的赋值就会变成整数。
然后我们要计算每天的日对数收益率。
for i in range(1,len(data)):
data[&# 39;ret_loop‘][i]=np.log(data['closePrice’][i]/data[&# 39;closePrice‘][i-1])
我们用一个for循环完成计算再赋值
之后输入
print data
就会出现如下这表
关于python数据库入门我们看多了列 日对数收益率。
然后作图
data[['ret_loop‘]].plot(subplots=True,style=&# 39;k’,figsize=(10,8))
这个代码的意思是,图形分开,线条颜色 黑色,尺寸(10,8)
然后我们看到了日对数收益率折现图
关于python数据库入门我们又看了这种类似于心电图的平稳序列。我们看到了收益率任何时间都可正可负,而且大小完全随机。只不过他在2倍标准差,-10%-10%之间随机波动。
为了更深刻的感受这一点。
我们做一个直方图。

大家可以看到,这个图基本是一个标准差为0.05,均值为0的正态分布。
当然对于正态性的检验。我们可以通过K-S检验完成。如何检验和参数估计,有时间写量化分析的时候再详细讨论。
从这个图上不难看出,这就是为什么80世纪非常流行有效市场假说的原因。指数的对数收益率观察值服从均值一定,方差一定的正态分布。我们从心电图上也可以看出这样。所以所谓有效市场就是建立在这种对数收益率的正态性上的市场。有效市场假说认为,股票价格等期限的收益率是一个均值一定,方差一定的公平赌博。所以当前股票的价格可以被期望收益率R和标准差SIGMA完全表示,也就是著名的资产定价模型。所以同期涌现出海量的风险定价理论,比如二叉树,比如B-S等等等等。
当然随后很多经济学家都开始指责有效市场假说。其中巴菲特就是一个,这就是巴菲特著名的猴子丢硬币的理论’不可能每只猴子都丢正面‘(这其实是一个T检验,巴菲特其实很擅长精算和统计),那现实是这样么?为了验证这个问题。我们再生成一个序列,就是向前推90天日收益率。
我们导入代码,
data['90re’]=0.0
for i in range(0,len(data)-90):
data[&# 39;90re‘][i]=np.log(data['closePrice’][i+90]/data[&# 39;closePrice‘][i])/90
for i in range(len(data)-90,len(data)):
data['90re’][i]=&# 39;NAN‘
还是一样,先插入列,再赋值。
然后我们同时制作,PE ,收盘价,日收益率,向前推90天收益率的图
data[['closePrice’,&# 39;ret_loop‘,'PE1’,&# 39;90re‘]].plot(subplots=True,style='k’,figsize=(10,8))
之后导出结果:
关于python数据库入门我们看到了什么?向前推90天收益率和价格有明显的负相关性,而这种负相关性和PE则弱很多。当价格忽然变高的时候未来的收益率会降低,当价格最高的时候,未来的收益率变到最低。而PE虽然也有一定的负相关性,但是效果并没有价格那么明显。

通过对这4幅图的比对。我们可以得出一些结论。
第一:虽然市场收益率观察值服从对数正态分布。但不代表市场不存在隐含状态,这就好比你看到一个人掷骰子出1的概率是1/6不代表掷骰子的人只用一个骰子掷而不是用灌了水银的6个骰子掷。所以如果我们能抓住一些信息识别隐含状态,分辨出是骰子的人掷的是哪个灌了水银的骰子,我们就能极大的提高收益率。
第二:长期持有根本不是价值投资。价值投资其实是寻找价格偏离收益率那个平稳序列的股票,当偏离时,图2就会发生扭动。向上偏离,意味着未来长期的收益率平均值下降,向下偏离,意味着未来长期收益率的平均值上升。这一点从图4中可以明显看出来。所以买入长期持有,只是在期限上让这种收益的平均值表达出来。所以一旦表达了,这只股票就失去了价值投资的意义。为什么采用长期持有的手段?因为看图2和图1,或者图2和图3,任何一点夏一期的收益率都可正可负,可大可小。如果不用长期持有的手段,这种预期是无法变现的。所以长期持有只是手段,不是目的,价值投资每一期都要评估自己的资产组合。不是选个公司闭着眼睛就买。
第三:价格对收益率的解释比PE要好得多。PE和未来收益率只有弱的负相关性,而价格则强得多。而我们看到,当企业利润上升PE下降的时候,同样会出现暴跌。这一点从图3和图4中一目了然。这个这个结论会毁很多夹头的三观。但事实上就是如此。很多夹头在选股时经常会干这样的事,利润高速增长,所以预期兑现还可以长期持有,结果还没说完就被套。这是因为PE模型,全名PVE模型,是股利贴现模型的一种变形,需要用资产负债表反推未来的损益表。所以单纯拿静态或动态PE评估,肯定效果不会太好。对此我们做了相关性检验,结果是:
关于python数据库入门未来90天收益率和昨天收益率几乎没有关系,和PE有弱的负相关性,和价格负相关性最强。
今天我们做了一些python数据库的入门演示。我们可以发现,用计算机是一种非常高效的分析工具,对于高手来说,他们甚至能让计算机自己思考,判断来完成分析和交易。我说的就是大奖章基金那些禽兽。我一直相信一个趋势,在分析领域,人工智能将逐步替代人脑思考。因为计算机对数字的判断和处理能力会远远比人脑要强大。所以有兴趣学真本事而不是当大V刷粉的同学,一定要掌握计算机语言

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多