利用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.顺风太浪,逆风就投,牛市来的时候可以搞,熊市很难做到降低风险

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GPU利用率低的解决办法

    GPU利用率低的解决办法watch-n0.1-dnvidia-smi#检查GPU利用率参数解决办法:1.dataloader设置参数2.增大batchsize3.减少IO操作,比如tensorboard的写入和打印。4.换显卡

    2022年6月30日
    72
  • AvalonDock使用心得「建议收藏」

    AvalonDock使用心得「建议收藏」  桌面程序的应用,不可避免的就会用到大量的布局控件,之前的一个项目也想过去做类似于VisualStudio的那种灵活的布局控件,也就是界面上的控件能够实现拖拽放置、隐藏、窗口化等一系列的操作,但由于开发时间以及需求的原因,没有太严格要求这方面功能的实现,也就只能算是想过一下而已,实际用的时候还是固定布局,但是最近接触到新的项目,需要这方面的应用就不得不自己动手查找和做这样的东西了。  有朋…

    2022年7月20日
    14
  • 内网IP和公网IP的区别及作用

    内网IP和公网IP的区别及作用说明:本文仅是针对网络知识懵懂人事的一篇白话解说文,并非技术探讨及进阶文章,各位看官自行甄选;本文仅以ipv4为基础。使用网络的人必然会接触IP地址,ip地址又分内网(私有)ip和公网(外网)ip地址,那么他们之间的区别是什么?为什么要分为内网和外网ip?何时使用哪种ip今天我就用大白话的形式,给大家举一个例子,希望能对各位对于ip有一个初步的了解。拿一个家庭来举例,一般你的路由器以内,就是内网,并且路由器内连接的所有设备或终端都会被分配一个内网ip;反之,路由器及以外就是外网ip,这个外网ip通常

    2022年6月9日
    37
  • 用户行为路径分析(User Path Analysis)「建议收藏」

    用户行为路径分析(User Path Analysis)「建议收藏」什么是用户行为路径?用户行为路径即抽象用户在网站或APP中的访问路径。其可用桑基图展现,称为用户路径图。什么是用户行为路径分析?用户路径分析追踪用户从某个开始事件直到结束事件的行为路径,即对用户

    2022年7月2日
    23
  • 死链处理的详细步骤[通俗易懂]

    死链处理的详细步骤[通俗易懂]死链处理:查找死链;收集死链;提交处理  一:查找死链  1.工具检测,在360极速浏览器的拓展中心下载安装检查网页死链的插件,可以查找当前网页的死链  2.直接点击页面查找死链  3.网站日志分析查找死链,去空间商后台下载IIS。  4.百度站长平台里面有个链接分析,也可以查看  二:收集死链  1.建一个TXT文

    2022年7月22日
    15
  • redis 的两种持久化方式及原理[通俗易懂]

    redis 的两种持久化方式及原理[通俗易懂]redis 的两种持久化方式及原理

    2022年4月23日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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