首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
datayes2015
V2EX  ›  Python

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

  •  
  •   datayes2015 · 2016-11-01 11:18:43 +08:00 · 1793 次点击
    这是一个创建于 1183 天前的主题,其中的信息可能已经有所发展或是发生改变。
    加入了期间结束的市值,并把行情改为复权后的涨幅,更加正确。
    自己研究主题投资历史用的,简单方便,代码效率还可以。
    主题名称可以输入想要的,日期也可选择。
    ×

    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
    1 回复  |  直到 2016-11-01 13:14:32 +08:00
    paolongtao
        1
    paolongtao   2016-11-01 13:14:32 +08:00
    回顾历史的意义是啥
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   818 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 20:23 · PVG 04:23 · LAX 12:23 · JFK 15:23
    ♥ Do have faith in what you're doing.