python的量化代码怎么用到股市中

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-24
怎样用python处理股票

用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare;一个国内股票数据获取包。可以在百度中搜索“Python tushare”来查询相关资料,或者在tushare的官网上查询说明文档。

作为一个python新手,在学习中遇到很多问题,要善于运用各种方法。今天,在学习中,碰到了如何通过收盘价计算股票的涨跌幅。
第一种:
读取数据并建立函数:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置

t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)


plt.show()
f(t)
第二种:
利用pandas里面的方法:
import pandas as pd

a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets

第三种:
close=a['close']
rets=close/close.shift(1)-1
print rets


总结:python是一种非常好的编程语言,一般而言,我们可以运用构建相关函数来实现自己的思想,但是,众所周知,python中里面的有很多科学计算包,里面有很多方法可以快速解决计算的需要,如上面提到的pandas中的pct_change()。因此在平时的使用中应当学会寻找更好的方法,提高运算速度。

2010 ~ 2017 沪深A股各行业量化分析

在开始各行业的量化分析之前,我们需要先弄清楚两个问题:

  • 第一,A股市场上都有哪些行业;

  • 第二,各行业自2010年以来的营收、净利润增速表现如何?

  • 第一个问题
    很好回答,我们使用JQData提供的获取行业成分股的方法,输入get_industries(name='sw_l1')
    得到申万一级行业分类结果如下:它们分别是:【农林牧渔、采掘、化工、钢铁、有色金属、电子、家用电器、食品饮料、纺织服装、轻工制造、医药生物、公用事业、交通运输、房地产、商业贸易、休闲服务、综合、建筑材料、建筑装饰、电器设备、国防军工、计算机、传媒、通信、银行、非银金融、汽车、机械设备】共计28个行业。

    第二个问题
    要知道各行业自2010年以来的营收、净利润增速表现,我们首先需要知道各行业在各个年度都有哪些成分股,然后加总该行业在该年度各成分股的总营收和净利润,就能得到整个行业在该年度的总营收和总利润了。这部分数据JQData也为我们提供了方便的接口:通过调用get_industry_stocks(industry_code=‘行业编码’, date=‘统计日期’),获取申万一级行业指定日期下的行业成分股列表,然后再调用查询财务的数据接口:get_fundamentals(query_object=‘query_object’, statDate=year)来获取各个成分股在对应年度的总营收和净利润,最后通过加总得到整个行业的总营收和总利润。这里为了避免非经常性损益的影响,我们对净利润指标最终选取的扣除非经常性损益的净利润数据。

    我们已经获取到想要的行业数据了。接下来,我们需要进一步分析,这些行业都有什么样的增长特征。

    我们发现,在28个申万一级行业中,有18个行业自2010年以来在总营收方面保持了持续稳定的增长。它们分别是:【农林牧渔,电子,食品饮料,纺织服装,轻工制造,医药生物,公用事业,交通运输,房地产,休闲服务,建筑装饰,电气设备,国防军工,计算机,传媒,通信,银行,汽车】;其他行业在该时间范围内出现了不同程度的负增长。

    那么,自2010年以来净利润保持持续增长的行业又会是哪些呢?结果是只有5个行业保持了基业长青,他们分别是医药生物,建筑装饰,电气设备,银行和汽车。(注:由于申万行业在2014年发生过一次大的调整,建筑装饰,电气设备,银行和汽车实际从2014年才开始统计。)

    从上面的分析结果可以看到,真正能够保持持续稳定增长的行业并不多,如果以扣非净利润为标准,那么只有医药生物,建筑装饰,电气设备,银行和汽车这五个行业可以称之为优质行业,实际投资中,就可以只从这几个行业中去投资。这样做的目的是,一方面,能够从行业大格局层面避免行业下行的风险,绕开一个可能出现负增长的的行业,从而降低投资的风险;另一方面,也大大缩短了我们的投资范围,让投资者能够专注于从真正好的行业去挑选公司进行投资。

「2010-2017」投资于优质行业龙头的收益表现

选好行业之后,下面进入选公司环节。我们知道,即便是一个好的行业也仍然存在表现不好的公司,那么什么是好的公司呢,本文试图从营业收入规模和利润规模和来考察以上五个基业长青的行业,从它们中去筛选公司作为投资标的。

3.1按营业收入规模构建的行业龙头投资组合

首先,我们按照营业收入规模,筛选出以上5个行业【医药生物,建筑装饰,电气设备,银行和汽车】从2010年至今的行业龙头如下表所示:

可以看到,虽然时间跨度很长,但是在这5个行业中,营收规模大的公司始终处于领先地位。它们分别是【上海医药,中国建筑,上海电气,工商银行,上汽集团】。

由于各年度上市公司年报的公布截止日是4月30日,待所有上市公司年报公布后,确定行业龙头,然后将这些行业龙头构建成一个投资组合。那么,持有投资组合的收益表现如何呢?为了保证投资时间的一致性,我们假设从2015年4月30号之后的第一个交易日开始投资,本金是100万,每个标的投资权重相同,都是20%,并且忽略交易成本,那么持有该组合至2018年4月30号的投资收益是多少呢?

我们利用JQData提供的获取行情接口get_price(security='股票代码', start_date='开始交易日', end_date='投资截止日', frequency='daily', fields=None, skip_paused=False, fq='pre'),分别获取组合中各个公司在各年度开始交易日和投资截止日(4.30之后的第一个交易日)的价格,得到最终的投资结果如下图所示:

可以看到,除了2015.5.4-2016.5.3股灾期间,该组合投资收益率和上证指数、沪深300指数有一个同步的大幅下跌外,从2016.5.3至2018年5.2,改组合连续两年获得了正收益,并在2016年大幅跑赢另外两个基准指数20%以上。

聪明的读者一定会问这样一个问题,如果我从2018年5月2号开始,投资100万买入这样一个按营收规模衡量的行业龙头组合,至2018年5月30号,收益表现会如何呢?答案是【3.04%】,而同期上证指数收益率和沪深300收益率分别是【-0.20%】和【-0.39%】,可以说表现非常之好了。具体收益如下表所示:

3.2按扣非净利润规模构建的行业龙头投资组合
如果我们按照扣除非经常性损益的净利润来衡量,以上5个行业从2010年至今的行业龙头又会是哪些呢,我们查出来如下表所示:

可以看到,按照扣非净利润来构建投资组合,医药生物和电气设备两个行业分别发生了行业龙头的更替,如果要构建基于扣非净利润的投资组合,那么我们就需要每年去调整我们的组合标的以保证组合中都是上一年度的行业龙头。和上述投资回测方式一样,我们从2015年5月4号买入这样一个组合,并在之后每年4月30号之后的第一个交易日调整组合中的行业龙头标的,最终的投资结果如下表所示:

可以看到,即使是2015.4.30-2016.5.3股灾期间,该组合也跑赢上证指数和沪深300指数3%左右;而2016.5.3至2018年5.2期间更是大幅跑赢两个基准指数高达30%以上。

同样的,如果从2018年5月2号开始,投资100万买入这样一个按扣非净利润规模衡量的行业龙头组合,至2018年5月30号,收益表现会如何呢?答案是【2.83%】,对比同期上证指数收益率和沪深300指数的【-0.20%】和【-0.39%】,仍然维持了非常良好的表现。具体收益如下表所示:

结论

通过以上行业分析和投资组合的历史回测可以看到:

  • 先选行业,再选公司,即使是从2015年股灾期间开始投资,至2018年5月1号,仍然能够获得相对理想的收益,可以说,红杉资本的赛道投资法则对于一般投资者还是比较靠谱的。

  • 在构建行业龙头投资组合时,净利润指标显著优于营业收入指标,获得的投资收益能够更大的跑赢全市场收益率

  • 市场是不断波动的,如果一个投资者从股灾期间开始投资,那么即使他买入了上述优质行业的龙头组合,在近3年也只能获得12%左右的累计收益;而如果从2016年5月3日开始投资,那么至2018年5月2日,2年时间就能获得超过50%以上的收益了。所以,在投资过程中选择时机也非常重要。

出自:JoinQuant 聚宽数据 JQData



使用第三方支持python语言开发量化交易模型的量化交易平台,并进行回测、仿真、实盘等步骤,从而实现股票量化交易的过程,目前国内较好的量化交易平台推荐您使用 ~掘|金|量|化~

(1) #按照市值从小到大的顺序活得N支股票的代码;
(2) #分别对这一百只股票进行100支股票操作;
(3) #获取从2016.05.01到2016.11.17的涨跌幅数据;
(4) #选取记录大于40个的数据,去除次新股;
(5) #将文件名名为“股票代码.csv”。

  • python的量化代码怎么用到股市中
    答:我们利用JQData提供的获取行情接口get_price(security='股票代码', start_date='开始交易日', end_date='投资截止日', frequency='daily', fields=None, skip_paused=False, fq='pre'),分别获取组合中各个公司在各年度开始交易日和投资截止日(4.30之后的第一个交易日)的价格,得到最终的投资结果...
  • 用Python 打造你的股市分析工具箱:从数据获取到 K 线图绘制
    答:Python为股市分析提供了强大的工具箱,本文将指导你如何利用akshare和mplfinance库从东方财富网获取并绘制K线图,以深入理解股票价格动态。首先,akshare的stock_zh_a_hist函数作为数据入口,通过输入股票代码、数据周期和日期范围,获取前复权的日线数据,这在长期分析中尤为重要,因为它考虑了分红和拆分的影响...
  • Python 通过 Tushare库取得股市数据
    答:要开始使用Tushare,首先在Tushare社区门户注册,获取并保存你的TOKEN凭证。安装Tushare库后,可通过设置token来初始化接口。对于数据调取,可以利用交易日期和证券代码参数,或是采用HTTP RESTful API进行。为了高效地提取大量数据,建议使用交易日历和重试机制,避免因股票数量众多而降低效率。Tushare的目标是帮助...
  • 如何建立一个股票量化交易模型并仿真?
    答:4、概率取胜。一是定量投资不断从历史数据中挖掘有望重复的规律并加以利用;二是依靠组合资产取胜,而不是单个资产取胜。
  • python能股市分析吗
    答:可以是可以。关键还是要有可靠的技术。软件只是辅助。
  • 股市量化交易的方式适不适合散户?
    答:如果你是非科班,有没有精力学。那么可以选择非编程量化交易语言,比如交易开拓者TB,金字塔,MT4等语言,他们的主要用途是实现你的交易逻辑,而只能在其软件内使用该语言。如果你是计算机科班出身,难么建议学习Python+一门非编程量化交易语言,作者推荐TB语言。Python在量化交易,数据分析等方面用途非常广,...
  • 谁有Python机器学习与量化投资,谁有这个教材的网盘资源?
    答:提取码:1234 本书采用生动活泼的语言,从入门者的角度,讲解了Python 语言和sklearn 模块库内置的各种经典机器学习算法;介绍了股市外汇、比特币等实盘交易数据在金融量化方面的具体分析与应用,包括对未来股票价格的预测、大盘指数趋势分析等。简单风趣的实际案例让广大读者能够快速掌握机器学习在量化分析方面...
  • 股票量化分析工具QTYX使用攻略系列——远程量化机器人
    答:操作流程简洁易懂:首先加载自选股票,配置买卖指令,选择是否开启自动交易。当条件满足,机器人会通过邮件或特定平台的提醒,自动执行交易或发送通知。定制化设置,灵活应对 自动交易的验证:可以参考《小散量化炒股记》中的策略,确保设置正确。 功能扩展:当val['auto_trade']为True时,深入理解公众...
  • Pandas的10大惊人应用-哪个行业领域正在使用Python Pandas?
    答:通常,这些模型是用python创建的,而Pandas是python的主要库,在处理此类模型中的数据时会使用它们。我们知道,熊猫最适合管理大量数据。推荐系统只有通过学习和处理大量数据才有可能。诸如groupBy和映射之类的功能极大地帮助了使这些系统成为可能。3.库存预测 股市非常动荡。但是,这并不意味着无法预测。借助...
  • 小白是小学C语言好,还是先学Python好
    答:python是个好工具。可以用来作很多事情,当然,也可以用来分析股票。现在我们对科大讯飞的股票用python做个可视化分析,分析它的买点。或者说,什么情况发生了,股票会上涨。我们 只要在之前买入,不就赚钱了吗。哈哈 先上程序 python程序分析科大讯飞股票 程序20行意思是股票的ma5,ma20,close指标。close是...