计算一段时期内,某个主题相关个股的涨幅——利用 Python 构建

2016-11-01 11:18:43 +08:00
 datayes2015
加入了期间结束的市值,并把行情改为复权后的涨幅,更加正确。
自己研究主题投资历史用的,简单方便,代码效率还可以。
主题名称可以输入想要的,日期也可选择。
×

import pandas as pd
import numpy as np
bdt="20160311" #期间开始
edt="20161011" #期间结束


themeName =u'锂电池'
#获取某主题相关股票的信息
ztid=DataAPI.TickersByThemesGet(themeID=u"",themeName=themeName,beginDate=u"",endDate=u"",isNew=u"",field=u"",pandas="1")
gpjc=ztid.secShortName.tolist() #股票简称
stocklist=ztid.secID.tolist() #股票代码
returnall=[] #设立收益列表
mrktval1=[]
mrktval2=[]
ysdf=pd.DataFrame()
#print(stocklist)
#获取股票 list 中的各股票收益并装入 returnall 中
for i in stocklist:
price1=DataAPI.MktEqudAdjGet(secID=i,\
beginDate=bdt,endDate=bdt,field=u"secID,closePrice",pandas="1")#期间开始价格
price2=DataAPI.MktEqudAdjGet(secID=i,\
beginDate=edt,endDate=edt,field=u"secID,closePrice,negMarketValue,marketValue",pandas="1")#期间结束价格
returnget=round(float(price2.closePrice[0]
1
import pandas as pd
2
import numpy as np
3
bdt="20160311" #期间开始
4
edt="20161011" #期间结束
5

6

7
themeName =u'锂电池'
8
#获取某主题相关股票的信息
9
ztid=DataAPI.TickersByThemesGet(themeID=u"",themeName=themeName,beginDate=u"",endDate=u"",isNew=u"",field=u"",pandas="1")
10
gpjc=ztid.secShortName.tolist() #股票简称
11
stocklist=ztid.secID.tolist() #股票代码
12
returnall=[] #设立收益列表
13
mrktval1=[]
14
mrktval2=[]
15
ysdf=pd.DataFrame()
16
#print(stocklist)
17
#获取股票 list 中的各股票收益并装入 returnall 中
18
for i in stocklist:
19
price1=DataAPI.MktEqudAdjGet(secID=i,\
20
beginDate=bdt,endDate=bdt,field=u"secID,closePrice",pandas="1")#期间开始价格
21
price2=DataAPI.MktEqudAdjGet(secID=i,\
22
beginDate=edt,endDate=edt,field=u"secID,closePrice,negMarketValue,marketValue",pandas="1")#期间结束价格
23
returnget=round(float(price2.closePrice[0]/price1.closePrice[0]-1),4)#收益,保留四位小数
24
returnget1=str(returnget*100)+'%'
25
returnall.append(returnget1)
26
mrktval1.append(int(price2.negMarketValue/100000000))
27
mrktval2.append(int(price2.marketValue/100000000))
28
#print mrktval1
29
indexlen=len(stocklist)+1#为了设置 Index
30
alltable=pd.DataFrame(np.array(zip(stocklist,gpjc,returnall)),columns=['代码','股票简称','期间涨幅'])#index=list(range(1,indexlen))
31

32
alltable1=alltable.join(pd.Series(mrktval1,name='流动市值'))
33
alltable2=alltable1.join(pd.Series(mrktval2,name='总市值'))
34

35

36
alltable2

详细代码和回测结果: https://uqer.io/community/share/57fce2b0228e5b3668facaf0?source=home
2486 次点击
所在节点    Python
1 条回复
paolongtao
2016-11-01 13:14:32 +08:00
回顾历史的意义是啥

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317026

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX