利用python建立股票量化交易系统(一)——小市值选股票模型[通俗易懂]

利用python建立股票量化交易系统(一)——小市值选股票模型[通俗易懂]从今天开始正式开启我的博客之旅,博客内容全部是我自己的量化心得,主要还是为自己将来中工作之中遇到相似问题,可以方便的找到答案,如果能帮到有相似问题的其他同学,我也很开心,如果帮不到的话,不喜勿喷,如果文章中有什么不对的地方,欢迎批评指正。建立第一个简单的量化模型——小市值选股票模型。思路:在A股市场之中,在每个月月底的时候,按照市值排名,选择最小市值的10只股票买入,持有到下个月月底…

大家好,又见面了,我是你们的朋友全栈君。

从今天开始正式开启我的博客之旅,博客内容全部是我自己的量化心得,主要还是为自己将来中工作之中遇到相似问题,可以方便的找到答案,如果能帮到有相似问题的其他同学,我也很开心,如果帮不到的话,不喜勿喷,如果文章中有什么不对的地方,欢迎批评指正。

 

建立第一个简单的量化模型——小市值选股票模型。

思路:在A股市场之中,在每个月月底的时候,按照市值排名,选择最小市值的10只股票买入,持有到下个月月底,每月调仓一次,坚持一年,看收益率能否跑赢同期的创业板指数/中小板指数

 


具体操作:

方法1:

自己下载数据并且进行清洗和计算,建议使用tushare网站——http://tushare.org/,数据质量不错,还免费。

然后经过清洗和计算之后,得到自己想要的结果,我大概是用了近3天的时间才搞定,主要还是自己以前没学过python,很多函数都是现学现卖,浪费很多时间,之前的博客写过相关的内容,现在来看不值得新手学习,原因有二:

1:下载太多,数据清洗步骤太多,需要用到pandas 的各种方法,相比较之下都不是很好的方法,毕竟量化交易的核心不在数据清洗,这些都是基本工作,如果有质量很高的数据的话,可以减少很多无用功,所以建立一个好的数据库,可以节省很多时间。

2:在自己进行这个策略编织的时候,其实90%以上的时间都是用于计算各种数值,或者画图,这里还不包括用来评价策略好坏的夏普比率,要是加上的话,代码更多,真正策略本身的代码其实少得可怜,大多数都是脏活累活的数据清洗和整理,所以决定以后还是用第三方平台效率更高一些,可以更加的专注策略本身。

方法2:

使用第三方平台,目前我使用的是聚宽,我对比了一下聚宽、优矿、大宽网(已经倒闭了),都大同小异,选哪个都一样。

 

顺便说一句,虽然这些平台都大同小异,但是代码可不能简单复制粘贴,因为底层函数库是不一样的,有可能在别的平台根本用不了某个函数,并且简单复制到自己电脑中的python的话百分之百用不了。

talking is cheap, show me the code

展示部分源代码

def find(context):
    # 计算出要买的股票——按照流通市值从小到大排序,并且选出50只,因为有可能有ST/*ST/停牌/涨停的股票,所以先得出股票池
    df=get_fundamentals(query
    (valuation.code,valuation.circulating_market_cap).order_by(valuation.circulating_market_cap)).loc[:49,'code']
    
    # 把股票池转为列表,并且带入过滤函数得到最后的buylist
    buylist=list(df)
    buylist=filter_stock(buylist)[:30]
    
    #得到目前持仓 
    hold=[]
    for i in context.portfolio.positions.keys():
        hold.append(i)
    # 如果目前持有的股票不在buylist中,就都卖出
    sell=[]
    for i in hold:
        if i not in buylist:
            order_target_value(i,0)
    # 如果在buylist中的股票,不在目前的持仓中,就把股票放到to_buy中
    to_buy=[]
    for i in buylist:
        if i not in hold:
            to_buy.append(i)
    # 如果to_buy不是空列表的话,就给每只股票平分可用资金,然后进场
    if len(to_buy)>0:
        cash=context.portfolio.available_cash/len(to_buy)
        for i in to_buy:
            order_value(i,cash)

代码的思路是,每个月底进行调仓,选出市值最小的股票交易,去掉ST/*ST/停牌/涨停的股票,然后选择最小市值的10只,基准是创业板综指,看看结果吧。

时间2017.1.1-2018.12.31,这波大盘走势先上后下,形成巨幅震荡行情

利用python建立股票量化交易系统(一)——小市值选股票模型[通俗易懂]

跑输创指,并且整体很悲催

 

时间2016.1.1-2018.2.28,大盘先下后上,和上次走势正好相反,但是因子的效果不同

利用python建立股票量化交易系统(一)——小市值选股票模型[通俗易懂]

这次跑赢指数,但是惨胜,回撤有点过分了

 

2014.4.28-2014.12.11,大盘单边上涨行情

利用python建立股票量化交易系统(一)——小市值选股票模型[通俗易懂]

表现非常靓丽。

结论:

1.因子本身的确有效,但是很明显单因子是不可能直接使用的。

2.顺风太浪,逆风就投,牛市来的时候可以搞,熊市很难做到降低风险

如果自己有策略,但是不会写代码的话,可以给我私信,价钱从几十到几百不等,看策略实现的难易程度而定,我使用的是聚宽平台,代码写好之后,可以在上面上模拟盘和实盘,对应的券商是第一创业证券。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153178.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号