可以通过安装pdfminer3k包,通过编程提取PDF相应的数据。
‘贰’ 1000个excel批量处理,求问怎么用python导出每个excel里"2008年报”所在行至“2009年报“
excel 格式是怎样的呢?
‘叁’ 如何用python计算增长率
增长率计算公式
n年数据的增长率=[(本期/前n年)或(1/(n-1))-1]×100%
同比增长率=(当年的指标值-去年同期的值)÷去年同期的值*100%
环比增长率=(本期的某个指标的值-上一期这个指标的值)/上一期这个指标的值
公式并不复杂,如果你有数据可以帮你看一下。
‘肆’ python的量化代码怎么用到股市中
2010 ~ 2017 沪深A股各行业量化分析
在开始各行业的量化分析之前,我们需要先弄清楚两个问题:
第一,A股市场上都有哪些行业;
第二,各行业自2010年以来的营收、净利润增速表现如何?
第一个问题
很好回答,我们使用JQData提供的获取行业成分股的方法,输入get_instries(name='sw_l1')
得到申万一级行业分类结果如下:它们分别是:【农林牧渔、采掘、化工、钢铁、有色金属、电子、家用电器、食品饮料、纺织服装、轻工制造、医药生物、公用事业、交通运输、房地产、商业贸易、休闲服务、综合、建筑材料、建筑装饰、电器设备、国防军工、计算机、传媒、通信、银行、非银金融、汽车、机械设备】共计28个行业。
第二个问题
要知道各行业自2010年以来的营收、净利润增速表现,我们首先需要知道各行业在各个年度都有哪些成分股,然后加总该行业在该年度各成分股的总营收和净利润,就能得到整个行业在该年度的总营收和总利润了。这部分数据JQData也为我们提供了方便的接口:通过调用get_instry_stocks(instry_code=‘行业编码’, date=‘统计日期’),获取申万一级行业指定日期下的行业成分股列表,然后再调用查询财务的数据接口:get_fundamentals(query_object=‘query_object’, statDate=year)来获取各个成分股在对应年度的总营收和净利润,最后通过加总得到整个行业的总营收和总利润。这里为了避免非经常性损益的影响,我们对净利润指标最终选取的扣除非经常性损益的净利润数据。
我们已经获取到想要的行业数据了。接下来,我们需要进一步分析,这些行业都有什么样的增长特征。
我们发现,在28个申万一级行业中,有18个行业自2010年以来在总营收方面保持了持续稳定的增长。它们分别是:【农林牧渔,电子,食品饮料,纺织服装,轻工制造,医药生物,公用事业,交通运输,房地产,休闲服务,建筑装饰,电气设备,国防军工,计算机,传媒,通信,银行,汽车】;其他行业在该时间范围内出现了不同程度的负增长。
那么,自2010年以来净利润保持持续增长的行业又会是哪些呢?结果是只有5个行业保持了基业长青,他们分别是医药生物,建筑装饰,电气设备,银行和汽车。(注:由于申万行业在2014年发生过一次大的调整,建筑装饰,电气设备,银行和汽车实际从2014年才开始统计。)
从上面的分析结果可以看到,真正能够保持持续稳定增长的行业并不多,如果以扣非净利润为标准,那么只有医药生物,建筑装饰,电气设备,银行和汽车这五个行业可以称之为优质行业,实际投资中,就可以只从这几个行业中去投资。这样做的目的是,一方面,能够从行业大格局层面避免行业下行的风险,绕开一个可能出现负增长的的行业,从而降低投资的风险;另一方面,也大大缩短了我们的投资范围,让投资者能够专注于从真正好的行业去挑选公司进行投资。
“2010-2017”投资于优质行业龙头的收益表现
选好行业之后,下面进入选公司环节。我们知道,即便是一个好的行业也仍然存在表现不好的公司,那么什么是好的公司呢,本文试图从营业收入规模和利润规模和来考察以上五个基业长青的行业,从它们中去筛选公司作为投资标的。
3.1按营业收入规模构建的行业龙头投资组合
首先,我们按照营业收入规模,筛选出以上5个行业【医药生物,建筑装饰,电气设备,银行和汽车】从2010年至今的行业龙头如下表所示:
通过以上行业分析和投资组合的历史回测可以看到:
先选行业,再选公司,即使是从2015年股灾期间开始投资,至2018年5月1号,仍然能够获得相对理想的收益,可以说,红杉资本的赛道投资法则对于一般投资者还是比较靠谱的。
在构建行业龙头投资组合时,净利润指标显着优于营业收入指标,获得的投资收益能够更大的跑赢全市场收益率
市场是不断波动的,如果一个投资者从股灾期间开始投资,那么即使他买入了上述优质行业的龙头组合,在近3年也只能获得12%左右的累计收益;而如果从2016年5月3日开始投资,那么至2018年5月2日,2年时间就能获得超过50%以上的收益了。所以,在投资过程中选择时机也非常重要。
出自:JoinQuant 聚宽数据 JQData
‘伍’ Python 如何爬股票数据
现在都不用爬数据拉,很多量化平台能提供数据接口的服务。像比如基础金融数据,包括沪深A股行情数据,上市公司财务数据,场内基金数据,指数数据,期货数据以及宏观经济数据;或者Alpha特色因子,技术分析指标因子,股票tick数据以及网络因子数据这些数据都可以在JQData这种数据服务中找到的。
有的供应商还能提供level2的行情数据,不过这种比较贵,几万块一年吧
‘陆’ python编程这门科目是用来编写股票指标和选股器的吗
python是一门语言补丁,最大的优势在于拥有众多的包,很多事情都可以做。而在数据分析领域提供了pandas,numpy,matplotlib等进行数据可视化,用于股票,自然也是可以的
‘柒’ 如何用Python写一个抓取新浪财经网指定企业年报的脚本
代码如下:
1). xml可能的中文编码错误处理
def xml_Error_C(filename):
fp_xml=open(filename)
fp_x=''#中文乱码改正
for i in range(os.path.getsize(filename)):
i+=1
a=fp_xml.read(1)
if a=='&':
fp_xml.seek(-1,1)
if fp_xml.read(6)==' ':
i+=5
continue
else:
fp_xml.seek(-5,1)
fp_x+=a
fp_xml=open(filename,'w+')
fp_xml.write(fp_x)
fp_xml.flush()
fp_xml.close()
2). xml转xls
def Xmltoxls(xmlname,xlsname):
if os.path.getsize(xmlname)<1024:#小于1K,无该项数据
return False
wb=xlwt.Workbook(encoding='utf-8')
ws=wb.add_sheet('Table')
fp_xml=minidom.parse(xmlname)
root=fp_xml.documentElement
Row=root.getElementsByTagName('Row')
Data=root.getElementsByTagName('Data')
col_num=len(Data)/len(Row)
row_num= 0
for row in Row:
Data=row.getElementsByTagName('Data')
for i in range(col_num):
if len(Data[i].childNodes)==0:
ws.write(row_num,i,' ')
continue
ws.write(row_num,i,Data[i].childNodes[0].nodeValue.strip().encode('utf-8'))
row_num+=1
wb.save(xlsname)
return True上整体代码:
from xml.dom import minidom
import xlwt
import os,shutil
import time,urllib2
def Xmltoxls(xmlname,xlsname):
if os.path.getsize(xmlname)<1024:
return False
wb=xlwt.Workbook(encoding='utf-8')
ws=wb.add_sheet('Table')
fp_xml=minidom.parse(xmlname)
root=fp_xml.documentElement
Row=root.getElementsByTagName('Row')
Data=root.getElementsByTagName('Data')
col_num=len(Data)/len(Row)
row_num= 0
for row in Row:
Data=row.getElementsByTagName('Data')
for i in range(col_num):
if len(Data[i].childNodes)==0:
ws.write(row_num,i,' ')
continue
ws.write(row_num,i,Data[i].childNodes[0].nodeValue.strip().encode('utf-8'))
row_num+=1
wb.save(xlsname)
return True
def xml_Error_C(filename):
fp_xml=open(filename)
fp_x=''#中文乱码改正
for i in range(os.path.getsize(filename)):
i+=1
a=fp_xml.read(1)
if a=='&':
fp_xml.seek(-1,1)
if fp_xml.read(6)==' ':
i+=5
continue
else:
fp_xml.seek(-5,1)
fp_x+=a
fp_xml=open(filename,'w+')
fp_xml.write(fp_x)
fp_xml.flush()
fp_xml.close()
def errorlog(error):
fp_error=open('errorlog.txt','a')
fp_error.write(error+' ')
fp_error.close
fp_code=open('stockcode..txt')
fp_basic=open('basicdata_url.txt')
temp='z:\temp.xml'
for line in fp_code:#设置代码起始位置
if line.split()[0]=='601958':
break
for line in fp_code:#遍历所有代码及名称
filepath='basicdata\'+line.split()[0]+line.split()[1].replace('*','&')#建立文件夹
if not os.path.isdir(filepath):
os.makedirs(filepath)
for url in fp_basic:#抓取所有数据并保存
url_f=url.split()[0]+line.split()[0]+('01' if int(line.split()[0])>599999 else '02')+'&exp=1'
print 'I am handle '+line+' '+url.split()[1]+' '+'data for you'
filename=filepath+'\'+line.split()[0]+' '+url.split()[1]+'.xls'
while True:#get xml data
try:
u=urllib2.urlopen(url_f)
time.sleep(0.3)
data=u.read()
f=open(temp,'w+')#保存文件
f.write(data)
f.flush()
f.close()
break
except :
print 'Network error,try latter!'
time.sleep(10)
while True:#xml data to xls data
if url.split()[1] in ['News','Notice','Subject']:
shutil.move(temp,filename) # os.rename("oldname","newname")
break
try:
xml_Error_C(temp)
Xmltoxls(temp,filename)
except IOError:
errorlog('No '+filename)
except:
shutil.move(temp,filename)
errorlog('Not Done '+filename)
break
time.sleep(0.2)
time.sleep(7)
fp_basic.seek(0)
print 'All data have been getted.'
fp_code.close()
fp_basic.close()
‘捌’ 用python通过指标成本测算税费和最终的利润率
如果你要的是税后价格.也就是你需要把利润税也加到价格中,那么最终的价格=成本+利润+利润税=成本+成本*利润率+成本*利润率*利润税率.这里利润=利润率*成本,利润税=利润*税率
‘玖’ 如何查找上市公司年报或财务报表
1、未公布年报的上市公司
登陆交易软件,按F10,在“操盘必读”里可以看到“拟披露年报”,上面显示的时间就是该公司年报发布时间,在这个时间沪市A股登陆上交所网站、深市A股(含中小企业板和创业板)登陆深交所网站,就可以看到该公司年报。年报里有详细财务报表。
2、已公布年报的上市公司
登陆上交所或深交所网站查询。如沪市A股,直接登陆上交所网站,点击“信息披露”,在“上市公司公告”旁边方框内输入要查询的上市公司代码,即可看到该公司所有已发布公告,当然也包括历年的年报。