了解股票:
在上一次量化小科普【什么是量化?常用的股票量化指标、如何搭建量化交易系统】对于量化的概念有了一个基本认识,其中量化的主体在这门课程的学习中是“股票”,而当别人问你:“什么是股票?”,是不是觉得特弱智,嗯,接下来就回到这个弱智的问题上来当个故事了解一下它。。
股票的由来:
股票最早可以起初到17世纪初的荷兰,那个时候香料贸易是很挣钱的,所以荷兰就会有船商开船出去运货:
但是!!!很显然开船是有风险的,毕竟海上的环境是变化多端的, 所以经常有可能船有去无回,对于船商来说就是一种损失,所以后来就有人看到这样的困境组织成立了一家公司---东印度公司,由很多船商作为股东,然后开始找人投资,说把一个凭证给你,其实就是所说的股票的证券,代表你投资了多少钱给我,这样你也可以成为公司的股东享受利润分红:
慢慢这么的形式就影响开来了,而在这个过程中大家肯定也会去交易这个凭证,比如说:我要急着用钱就卖出手中的一些凭证,或者说听到有一些负面消息不看好这次出行则会买别人的一些凭证,这其实就是最开始的股票交易。
后来就发展成了我们所熟知的交易所方便进行股票的买卖,以及基于股票的投资组合和衍生品等,所以股票是:股份公司发行的所有权凭证,代表的是一种投资工具、投资介质。
股票的特性【当个笑话看】:
这里以股票、基金、债券三者放一起来看。
概述上:
- 股票它是股份公司的所有权凭证、盈亏自负。
- 基金它是一种投资组合(股票、债券、现金)。
- 债券它是还本付息的有价证券(国债、企业债、金融债券)
风险上:
股票(10%) > 基金(5%)> 债券(1%)
收益上:
股票 > 基金 > 债券
获取股票数据的3种方式:
作为个人投资者,或者普通投资者,最常用的数据获取方法就是各种炒股平台和金融数据服务端,那如果是量化开发者的话,其实也能从这上面获取数据,怎么获取呢?就是写爬虫对吧。
1、什么是爬虫呢?
爬虫其实就是利用网页的结构和标签,把想要的信息扒下来,这个扒可以用很多方式,比如Python的Beautifulsoup或者lxml都可以。但是,这种方式费时费力,而且网站有时候也会出问题,那么连带着程序就会出问题,比如意外中止,或者有缺失值之类的。
所以,更成熟的方式,就是找现成的数据接口,其中数据接口又分为免费和付费的。
2、免费的数据接口【咱们所采用的方式】:
免费的数据接口比较出名的就是各种量化平台,比如天勤量化、BigQuant、JoinQuant(聚宽)等,一般它们都会提供成熟的数据接口让你调用。
基础的数据,比如每天的行情、财务数据、技术指标这些,都是免费的。但如果需要更高阶、更复杂的合成技术指标,或者编写好的量化策略之类的,就会要求你升级购买。总体来说,也是划算了,省掉了重复造轮子的精力。
当然了,如果你愿意进一步钻研的话,在GitHub等开源网站上,也有许多现成资源可以利用。
3、付费的数据接口:
金融接口,比较出名的有Wind和彭博,提供秒极的行情数据。换句话说,你可以实时获取到最新最精准的交易数据。
通常这一类数据接口,会按照需要的数据量、使用人数,以及行情的精确程度等收费。按照我以往的使用经验,每年的数据采购费至少在1万以上,如果涉及高频交易,费用至少在3万以上,上不封顶。
以上,就是获取股票等金融数据的3种方式了,它们分别是:爬虫获取、免费接口调用,以及购买和定制现成的数据服务。
使用JQData查询行情数据:
JointQuant了解:
如标题所示,提到了“JQData”,其中的JQ就是JointQuant的缩写,官网为https://www.joinquant.com/:
而我们想要的是获取股票数据,所以可以从菜单栏这块看过来:
先来看一下数据字典:
点进去之后,就有很详细的说明文档:
好,大致了解一下,接下来再来看一下对咱们python编程有用的这个菜单:
具体介绍可以上官网,下面直接开始进入使用环节。
JQData开通:
要使用之前先需要进行账号开通,如何开通呢?
免费可以试用半年,那好,提交试用申请:
然后点击确认就可以注册成功了:
安装使用JQData:
安装JQData:
这里先利用PyCharm新建一个工程:
然后在工程终端中安装一下:
获取股票行情数据:
1、获取某股的行情数据:
接下来咱们尝试来获取一下股票行情数据,找到相关接口说明:
注意,所有接口必须先登录哦:
下面咱们来试试看能否正常获得股票行情数据:
from jqdatasdk import *
auth('用户名', '密码') # 账号是申请时所填写的手机号;密码为聚宽官网登录密码,新申请用户默认为手机号后6位
# 获取平安银行在2021-08-20号之前的四个交易日的股票行情日k数据
df = get_price('000001.XSHE', end_date='2021-08-20', count=4, frequency='daily')
print(df)
注意:登录的用户名、密码需要填写你自己注册的,这里由于涉及到个人手机号的隐私,所以这里就不贴出来了,运行:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/data/Stock.py
auth success
/Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 当前环境 pandas 版本高于 0.25,get_price 与 get_fundamentals_continuously 接口的 panel 参数将固定为 False(0.25 及以上版本的 pandas 不再支持 panel,如使用该数据结构和相关函数请注意修改)
warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning)
open close high low volume money
2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08
2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09
2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09
2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09
Process finished with exit code 0
其中股票代码中跟了一个“XSHE”,它代表啥呢?其实文档上有说明:
另外,这打印出来的数据是否真的跟真实的股票数据是相匹配的呢?所以咱们可以打开炒股软件,对这输出的四条数据进行一个验证,这里以其中一条为准验证一下就可以了:
对比一下咱们的输出:
是不是准确的?
如果说我想获取每分钟的数据呢?这里只要更改这个参数既可:
2、获取所有A股的行情数据:
那如果我想获取所有A股的行情数据呢?依然看API说明:
其中给了一个示例:
那下面来使用一下:
所有标的获取之后,就可以开始遍历来获取股票所对应的行情数据了,如下:
确实是获取到了,总共A股有4569家。但是没有真正显示全呀,要想显示全,这里可以采用数组循环一个个股票行情进行输出,如下:
运行:
使用resample函数转化时间序列:
什么是resample函数?
它是Python数据分析库Pandas的方法函数,它的主要作用就是用来转换时间序列的频次,并可以做一些统计汇总的工作,这里可以上官网瞅一眼:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html#
那“转换时间序列的频次”和“统计汇总”这俩功能主要指的是什么呢?下面以一个案例来理解一下它们。
转换时间序列的频次:
在股票中的K线中有日K和周K对吧?
那假如只能获取到日K的数据,比如获得了这么一周的日K股票行情数据:
而通过日K的数据是可以转换成周K的,周K的定义其实是从日K中取出这些数据:
对于月K、年K基本规则都类似,这样的转换功能就可以用resample轻松的来实现。
统计汇总:
比如这里获取到了一周的成交量信息:
如果要统计这一周的成交量之和,就可以使用resample.sum/.count来统计Sum = 720
使用:
这个函数有这么多参数,都是啥意思呢?其实了解具体参数的含义从官网的sample例子去理解是最容易的,下面先来理解一些常用的参数:
其中传的“3T”参数是用的这个:
另外,还有一个比较常用的参数:
默认是left,那这个参数有啥作用呢?先来回到咱们看的这个示例中:
这默认是left的效果,那如果我们换成right呢?直接从结果来理解:
是不是此时取的就是每三分钟最后一分钟的时间?
是不是对于这个label参数就理解了。
转换周期:日K转换为周K:
这里先来获取日K的数据,还是以中国平安为例:
输出:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py
auth success
/Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 当前环境 pandas 版本高于 0.25,get_price 与 get_fundamentals_continuously 接口的 panel 参数将固定为 False(0.25 及以上版本的 pandas 不再支持 panel,如使用该数据结构和相关函数请注意修改)
warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning)
open close high low volume money
2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09
2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09
2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09
2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09
2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09
2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09
2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09
2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09
2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09
2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09
2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09
2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09
2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09
2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09
2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09
2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09
2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08
2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09
2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09
2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09
Process finished with exit code 0
这里为了方便,增加一个周几的字段信息,如何增加呢?在python中也很简单,如下:
再运行:
那0代表周几呢?这里可以点击进去看一下源码,里面有说明:
python真的挺强大的,获得周几信息直接调用一个函数就出来了,回头对于python这门语言一定得要系统的学一学。
好,有了日K的源数据之后,就可以使用resample函数来实现周K的转换了,这里先以获取周K的开盘价数据为例,确保获取没问题再获取其它的,如下:
其中resample中传的"W"表示周,运行看一下:
其中对于转换的时间,其实都是取的周日:
其中还有一个细节需要注意,就是需要定义一下df_week,不然会报错的:
接下来就可以一口气将周k的其它信息都获取了,方式都类似:
运行结果:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py
auth success
/Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 当前环境 pandas 版本高于 0.25,get_price 与 get_fundamentals_continuously 接口的 panel 参数将固定为 False(0.25 及以上版本的 pandas 不再支持 panel,如使用该数据结构和相关函数请注意修改)
warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning)
open close high low volume money weekday
2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09 0
2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09 1
2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09 2
2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09 3
2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09 4
2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09 0
2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09 1
2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09 2
2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09 3
2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09 4
2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09 0
2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09 1
2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09 2
2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09 3
2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09 4
2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09 0
2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 1
2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2
2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 3
2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 4
open close high low
2021-08-01 19.96 17.69 19.99 17.24
2021-08-08 17.64 17.86 18.15 17.18
2021-08-15 17.91 19.89 20.58 17.84
2021-08-22 20.09 19.42 21.20 18.70
Process finished with exit code 0
关于数据的正确性可以自行去验证,结果肯定是准确的。
汇总统计:统计一下月成交量、成交额(sum):
这个就比较简单了,如下:
运行:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py
auth success
/Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 当前环境 pandas 版本高于 0.25,get_price 与 get_fundamentals_continuously 接口的 panel 参数将固定为 False(0.25 及以上版本的 pandas 不再支持 panel,如使用该数据结构和相关函数请注意修改)
warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning)
open close high low volume money weekday
2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09 0
2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09 1
2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09 2
2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09 3
2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09 4
2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09 0
2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09 1
2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09 2
2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09 3
2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09 4
2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09 0
2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09 1
2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09 2
2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09 3
2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09 4
2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09 0
2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 1
2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2
2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 3
2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 4
open close high low volume(sum) money(sum)
2021-08-01 19.96 17.69 19.99 17.24 569438363.0 1.037636e+10
2021-08-08 17.64 17.86 18.15 17.18 397551929.0 7.076375e+09
2021-08-15 17.91 19.89 20.58 17.84 533243790.0 1.039479e+10
2021-08-22 20.09 19.42 21.20 18.70 470040786.0 9.361753e+09
Process finished with exit code 0
使用JQData查询财务指标:
什么是财务指标?
说到财务,肯定是跟钱挂勾的,以一家企业为例,财务报表的构成如下:
关于这些都需要简单了解一下,因为在之后的选股策略中会有用到的。
财务报表:
资产负债表:
它体现了企业的家底和负债情况,比如个人你有几套房,几辆车, 是全款买的还是借款买的,如果是借款那又有多少是借来的。
利润表:
它体现了公司的盈利能力:赚了多少钱,如何赚的,其中隐含着对未来利润增长的预期,也正是有这样的一个预期,很多公司的股价是远超它现实真实的公司内在价值的,典型的像很多国内的上市公司在上市后,其实公司的盈利情况是负增长,那为啥这些公司的股价就是长得很好呢?这就是由于“预期”不同,因为大家都预期这家公司未来是很赚钱的,也就是这张表能体现市场空间、成长能力。
现金流量表:
这张表相比上面的两张表它会更加真实,不容易造假,为啥呢?因为上面两张表是基于“权责发生制”这一会计制度来进行编制的,那这种编制有什么特点呢?比如我和你签合同,里面涉及到1000万的订单的款项,只要签了立马就可以记账到预收款项里面了,就可以说我已经有1000万的利润了,此时会记录到利润表中的;但是现金流量表则不一样,它是“收付实现制”,只有1000万真的打进到我的账户里才会记录到利润表中的。
所以,现金流能体现公司的造血能力、竞争优势、议价优势,在挑选股票看公司基本面时,是一个非常重要的指标。
使用:
寻找相关接口信息:
上JQData官网找一下相关查财务指标的接口:
其中有两类财务数据获取的接口:
其中“单季度/年度财务数据”是指的每个季度或年度的财务数据,比如我想获取第三季度的数据,则只包含第三季度的,不会累加之前的,而“报告期财务数据”则有累加的意思,比如半年报则包含第一季度和第二季度的。
下面来对咱们要学习的接口进行一个简要的概览:
接下来咱们就准备尝试获取一下财务指标数据:
代码编写:
咱们换2020年度的:
要让其显示全,需要设置一下,如下:
再运行,可以看到一大堆打印:
将数据导出到excel中:
由于数据量巨大,控制台不方便查看,这里将其导到excel表中,具体做法如下:
'''获取股票财务指标'''
df = get_fundamentals(query(indicator),statDate='2020')
# print(df)
df.to_csv("/Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/finance/finance2020.csv")
此时运行一下,成功的话excel报表就生成了:
此时用excel打开就比较好查看了:
数据字段了解:
一大堆字段都啥意思呢?可以参考官网,都有解释:
咱们粗略的简单过一些,有个大概了解,因为之后会要用一些字段当过滤条件来进行选股。
statDate:
财报统计的季度的最后一天, 比如2015-03-31, 2015-06-30。
如咱们导出的表中,表示2020年一整年的数据。
pubDate:
公司发布财报日期,一般是每年的4月份会出【也有晚于4月的,但是少数,基本都会在4月份之前出来】,每个公司出的时间都不太一样,看一下咱们导的数据:
也有最晚7月份发布的:
eps:
每股收益EPS(元),用净利润 / 股本数,比如公司将股本数划为1000份,净利润/1000就是eps, 这个值越高越好,代表公司的盈利能力。
operating_profit:
经营活动净收益(元),营业总收入-营业总成本,通俗理解就是我挣了多少钱,然后减去我花了多少钱,该值也是越高越好。
其中可以看到,有些公司是负数的,那肯定公司的基本面是不太好的。
roe:
净资产收益率ROE(%),这个在之前有提到过,它的计算公式是“归属于母公司股东的净利润*2/(期初归属于母公司股东的净资产+期末归属于母公司股东的净资产)",这个有啥意义呢?其实相当于一个公司资产的产出,举例说明:有两家白酒公司,它们的规模机器情况都差不多,但是公司A一年的产能对应的销量是1000万,公司B却只有100万,很明显公司A的ROE要高对吧,因为同样的资产它获得的利润更多。
其中也可以看到有负的。
inc_net_profit_year_on_year:
净利润同比增长率(%),也就是今年的净利润跟去年的净利润增长的百分比,比如今年的净利润是200万,而去年的净利润是100万,那么这里的值就是200-100,增长了100万,然后除以期初的100万,同比增长度就是100/100。
inc_operation_profit_annual:
营业利润环比增长率(%),由于咱们这边统计的是年,环比跟上面的同比是一样的,所以可以看到在报表中这一列是空的:
根据财务指标条件过滤股票:
好,对于财务指标中的关键字段进行了了解之后,那么重点来了,怎么来通过这些指标来筛选出健康赢利良好的公司呢?
1、eps肯定是要大于0对吧,最起码该公司是赚钱的。
2、operating_profit需要大于一个均值,这里在excel取这一列的平均值吧:
所以条件加上:
3、roe也取一个均值:
所以条件加上:
4、inc_net_profit_year_on_year:这里净利润同比增长率定个10吧,如下:
此时再输出看一下,经过条件过滤之后,整个A股中满足条件的股票有多少:
瞬间缩到307家了,这样选出来的最起码基本面是好的,当然这个条件可以根据自己的要求来进行更改。
使用JQData查询估值指标:
有哪些估值方法?
在A股投资中有一些价值投资喜欢根据企业的估值是高估还是低估来决定买卖决策对吧,所以需要对于估值方法有一定的了解,这里了解两种估值方法。
绝对估值:
它是一种定价模型,也就是计算企业的内在价值,看这么一张计算表格:
思想是先获取公司的近N年的现金流情况:
然后来预测未来的现金流情况:
然后再根据预测的这些数据来进行折现,也就是算出未来五到十年它的价格换算成现在的价格是多少钱,来判断当前的投价到底是贵还是便宜来决定咱们买还是不买它,这也就是典型的估值买入法,一家公司越值钱通常它的股价也是越贵的,而对于投资者来说,就是找到一家公司未来不错,但是呢股价现在处于低估的公司,这也就是挣钱的关键:利用公司本身的价值和它在市场价格的差价,这也是就是大神巴菲特所说的价值投资。
在绝对估值法中,有一个非常重要的指标就是折现率:
它可以理解为未来的钱转换为现在的钱要消去多少,这里设置的是10%,它是根据个人的情况可以更改的【正因为这是一个主观的因素,所以实际用这种方式不太靠谱,因为不同的人算出来的估值情况是不一样的】,所以这个值的设定不同,直接就会影响到对企业的估值的计算,也就是这块的结果:
其中这个估值表很明显可以做为自己买卖的决策了,看这:
当前股价远远大于分析该企业应该值的价格,属于高估状态,那高估状态下的股票,为了稳妥,你会选择买么?
这个方法,你要明白的是因为折现率是可以人为设定的,很明显其算出来的估值会有很大的偏差的,当然也极大的会影响到咱们的买卖决策结果 ,所以常见的估值法就会用相对估值了。
相对估值:
它其实就是使用PE市盈率、PB市净率、PS市销率的估值指标,关于这三者的计算方法可以参照如下表:
那为啥这是属于“相对”估值呢?因为这些指标的大小是取决于同行业其它公司的,也就是通过比较来实现的。
使用JQData查询估值指标:
API了解:
好,还是回到咱们的python世界,来看一下如何来获取这些估值指标:
其中就有我们想要的估值数据:
实现:
咱们来获取一下:
这样就获取了所有股票市值和估值相关的数据了, 好,那这些数据肯定是为了选股用的对吧,在上次咱们已经筛选出了健康的公司了:
那我想再根据估值指标,进一步筛选我想买的公司的股票,那怎么结合起来使用呢?其实也很简单,因为财务指标和估值指标都有一个code是可以进行匹配的,所以可以把估值指标中的pe数据追加到财务指标中新增一列,如下:
好,此时我们就可以加上pe的条件了,比如我只想要pe<50的股票,那么可以这么弄:
总结:
至此,咱们已经学会了如何通过Python编程来获取到股票的一些数据了,当然啦离通过编程来影响咱们炒股的决策这一目的还差很远很远,但是它是一个基石,没有数据何谈量化,所以循序渐进慢慢来,另外就是对于Python这门语言,我已经下定决定在未来的某时会从0基础来重新好好的审视一下它,真的太强大了。
关注个人公众号,获得实时推送