技术分析指标 移动平均值、波动率、交易量

基于历史价格信息的技术分析是金融专业人士和感兴趣的业余人士感兴趣的典型任务。在维基百科上可以找到如下定义:

在金融学中,技术分析是通过对过去市场数据(主要是价格和成交量)的研究预测价格方向的证券分析方法。

在下面的段落中,我们将重点放在用于事后验证的过去市场数据的研究,而不是过多地关注使用我们的认识预测未来股价变动。我们的研究目标是标准普尔(S&P)500基准指数,这通常被认为是整个美国股票市场很油代表性的指标,因为指数中包含许多著名公司的股票,代表着高额的市场资本。而且,该指数还具有高流动性的期货和期权市场。

我们将通过Yahoo的web数据接口来读取历史指数水平信息,并为一个基于趋势信号的交易系统实现简单的事后验证。

import pandas as pd
import numpy as np
from pandas_datareader import data, wb
stock_code = '^GSPC'
start_date = "2000-11-01"
end_date = "2019-03-30"
sp500 = data.get_data_yahoo(stock_code, start_date, end_date)
# 展示前5行
sp500.info()


data.get_data_yahoo已经通过互联网线路连接到数据源,并读取了从2000年的11-01交易日到结束日期2019-03-30的S&P指数事件序列数据,而且自动地用TimeStamp对象生成一个时间索引。

可以绘制收盘价的时间序列图,如下:

我们要实现的趋势策略基于两个月(42个交易日)和一年(252个交易日)的趋势(也就是两种期间指数水平的移动平均数)。同样,pandas可以高效地生成各个时间序列,并在一张图上绘制3个相关的事件序列。首先是生成趋势数据:

sp500['42d'] = np.round(sp500['Close'].rolling(window=42, center=False).mean(), 2)
sp500['252d'] = np.round(sp500['Close'].rolling(window=252, center=False).mean(), 2)
sp500[['Close', '42d', '252d']].plot(grid=True, figsize=(8,5))

sp500['42-252'] = sp500['42d'] - sp500['252d']
# 生成投资体制 Regime
SD = 50
sp500['Regime'] = np.where(sp500['42-252'] > SD, 1, 0)
sp500['Regime'] = np.where(sp500['42-252'] < -SD, -1, sp500['Regime'])
sp500['Regime'].plot(lw=1.5)
plt.ylim([-1.1, 1.1])

做多、做空策略

假设投资者可能做空、做多市场(指数)或者持币观望。投资者做多时形成市场收益(1),做空时形成负的市场收益(-1),持币时不形成任何市场收益(0)。首先先计算每日的对数收益率:

sp500['Market'] = np.log(sp500['Close']/sp500['Close'].shift(1))
sp500['Stragety'] = sp500['Regime'].shift(1) * sp500['Market']
sp500[['Market', 'Stragety']].cumsum().apply(np.exp).plot(grid=True, figsize=(8, 5))


可以看到,在研究中忽略操作问题(比如交易执行)和相关市场的围观因素(例如交易成本)的话,在上证A股的收益率可以到7倍,但是在真实环境中还需要考虑市场的操作条件和买卖成本。

Python股票数据分析——策略、收益率计算相关推荐

  1. python股票数据分析_Python数据分析之股票走势

    本篇文章讲了用python爬取六家公司的股票数据,分析股票走势.波动性.涨幅等,最终得出一点点结论. 一.包的安装 Python进行数据分析时,有几个包比较重要,所以需提前把这几个包安装好. pand ...

  2. python股票数据分析_用Python浅析股票数据

    本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData.txt文本文件中,我们使用 ...

  3. python股票数据分析实例_Python之简单股票数据分析

    1.获取数据 #定义所需要的数据 gafataDict={"谷歌":"GOOG","亚马逊":"AMZN"," ...

  4. python股票数据分析_如何使用Python进行股票的金融数据量化分析

    Python作为一门高ji语言是很好用的,语法简单,通俗易懂,非chang容易上手,丰富的第三方库支持使得开发速度快,相对于其他编程语言来说,初学者入门并不困难.它只是一门语言工具,zui终还是要将这 ...

  5. python股票数据分析_用Python抓取新浪的股票数据

    最近做数据分析,先是找到了Tushare这个免费开源的第三方财经包,但后来用了几天之后发现,它的日交易历史数据有时候有不准确的情况,查看源代码发现,这个包的数据源是凤凰财经,而对比凤凰网站其站点的数据 ...

  6. python股票数据分析_用Python进行股票数据分析

    本篇运用Python进行自选股的数据分析,帮助进行投资决策,分析用到以下两个模块:pandas(数据分析包):pandas_datareader(可以查询雅虎的股票数据接口). 本篇参考了猴子老师的课 ...

  7. python股票数据分析_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  8. python股票数据分析

    介绍 项目地址 https://github.com/zouxlin3/StockDataAnalysis 使用python分析csv格式的股票数据 使用方法如下 from StockData imp ...

  9. 毕设着急了吧?Python股票数据分析,制作动态柱状图

    写在前面的一些屁话: 雪球成立于 2010 年,是北京雪球信息科技有限公司旗下推出的投资者社区.雪球一直致力于为中国投资者提供跨市场(沪深.香港.美国),跨品种(股票.基金.债券等)的数据查询.资讯获 ...

最新文章

  1. linux下磁盘镜像软件DRBD的使用
  2. 快速搭建一个网关服务,动态路由、鉴权看完就会(含流程图)
  3. 工业机器人原来可以这么酷,马斯克和中国美的都对它青睐有加
  4. Pytorch用tensorboarX查看损失图打不开
  5. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
  6. Android中GridView使用总结
  7. 联想T460 Win10下“系统中断”CPU占用率高的解决办法
  8. Bash脚本:怎样一行行地读文件(最好和最坏的方法)
  9. Spring Boot JDBC
  10. 参考TinyOS官方网站实现BlinkToRadio
  11. python的作用域 gbel_[ python ] 全局和局部作用域变量的引用
  12. 从 Android 6.0 源码的角度剖析 Binder 工作原理 | CSDN 博文精选
  13. input输入框只能输入正整数
  14. 结构方程模型_结构方程模型(Structural Equation Model, SEM) 三下
  15. python爬iptv直播源脚本_GitHub - bensonlai2002/iptv-m3u-maker: IPTV 国内+国外 电视台直播源m3u文件, 收集汇总本地源脚本...
  16. python的30个编程技巧
  17. 基于SSM(Spring+SpringMVC+MyBatis)的外卖点餐管理系统
  18. Android 巧用 flexboxLayout 布局
  19. 概率论与数理统计学习笔记(6)——分布律,分布函数,密度函数
  20. linux服务器移动硬盘挂载,linux挂载命令mount及U盘、移动硬盘的挂载

热门文章

  1. [Matlab]糖葫芦代码实现
  2. sudo spctl --master-disable
  3. Java数组之一维数值数组之数据去重
  4. linux卸载netcdf,科学网-Ubuntu中安装netcdf4以上方法-伍志元的博文
  5. 实力悍将联想Z5s发布1398元起售,2019超旗舰Z5 Pro GT 855版惊世降临
  6. c语言冗余数据什么意思,冗余是什么意思_冗余解释和意思
  7. (九十)第六章复习题
  8. 关于日文系统的安装[转]
  9. rails连接Mysql的数据库
  10. jenkins持续集成与持续交付