1. 用Python怎么做量化投资
本文将会讲解量化投资过程中的基本流程,量化投资无非这几个流程,数据输入------策略书写------回测输出
其中策略书写部分还涉及到编程语言的选择,如果不想苦恼数据输入和回测输出的话,还要选择回测平台。
一、数据
首先,必须是数据,数据是量化投资的基础
如何得到数据?
Wind:数据来源的最全的还是Wind,但是要付费,学生可以有免费试用的机会,之后还会和大家分享一下怎样才Wind里摘取数据,Wind有很多软件的借口,Excel,Matlab,Python,C++。
预测者网:不经意间发现,一个免费提供股票数据网站 预测者网,下载的是CSV格式
TB交易开拓者:Tradeblazer,感谢@孙存浩提供数据源
TuShare:TuShare -财经数据接口包,基于Python的财经数据包,利用Python进行摘取
如何存储数据?
Mysql
如何预处理数据?
空值处理:利用DataFrame的fill.na()函数,将空值(Nan)替换成列的平均数、中位数或者众数
数据标准化
数据如何分类?
行情数据
财务数据
宏观数据
二、计算语言&软件
已经有很多人在网上询问过该选择什么语言?笔者一开始用的是matlab,但最终选择了python
python:库很多,只有你找不到的,没有你想不到,和量化这块结合比较紧密的有:
Numpy&Scipy:科学计算库,矩阵计算
Pandas:金融数据分析神器,原AQR资本员工写的一个库,处理时间序列的标配
Matplotlib:画图库
scikit-learn:机器学习库
statsmodels:统计分析模块
TuShare:免费、开源的python财经数据接口包
Zipline:回测系统
TaLib:技术指标库
matlab:主要是矩阵运算、科学运算这一块很强大,主要有优点是WorkSpace变量可视化
python的Numpy+Scipy两个库完全可以替代Matlab的矩阵运算
Matplotlib完克Matlab的画图功能
python还有很多其他的功能
pycharm(python的一款IDE)有很棒的调试功能,能代替Matlab的WorkSpace变量可视化
推荐的python学习文档和书籍
关于python的基础,建议廖雪峰Python 2.7教程,适合于没有程序基础的人来先看,涉及到python的基本数据类型、循环语句、条件语句、函数、类与对象、文件读写等很重要的基础知识。
涉及到数据运算的话,其实基础教程没什么应用,python各类包都帮你写好了,最好的学习资料还是它的官方文档,文档中的不仅有API,还会有写实例教程
pandas文档
statsmodels文档
scipy和numpy文档
matplotlib文档
TuShare文档
第二,推荐《利用Python进行数据分析》,pandas的开发初衷就是用来处理金融数据的
三、回测框架和网站
两个开源的回测框架
PyAlgoTrade - Algorithmic Trading
Zipline, a Pythonic Algorithmic Trading Library
2. 用python做数据分析和数据挖掘用哪个IDE比较好
推荐使用
ipython和jupyter组合。下载安装这个就行.集成包.数据分析的绝大部分包都有集成.而且自带python环境与编译器。地址:https://www.continuum.io/downloads/。具体使用请搜索:anaconda
3
如果你需要的仅仅是一款编译器:推荐pycharm。可以搜一下
3. 用pycharm能做数据分析吗
1 如果你是web开发工程师
那就选择pycharm。针对大型的web框架修改调试,还是需要个大型IDE。
2 如果你是数据处理工程师
那就选择spyder或者anaconda。安装后就处理好集成环境。不用再处理环境依赖关系,也包含了numpy,matplotlib和pandas,可以做些数据处理。
3 如果你是初学者
那就用python+vscode。可以智能提示,语法检查,逐行调试等
4. 利用python进行数据分析 用什么软件
与数据分析相关的 Python 库
NumPy
NumPy 是 Python 科学计算的基础包,它提供:
快速高效的多维数组对象 ndarray;
直接对数组执行数学运算及对数组执行元素级计算的函数;
线性代数运算、随机数生成;
将 C、C++、Fortran 代码集成到 Python 的工具等。
它专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或Matlab 等所做的任务。
Pandas
Pandas 主要提供快速便捷地处理结构化数据的大量数据结构和函数。
Matplotlib
Matplotlib 是最流行的用于绘制数据图表的 Python 库。
IPython
IPython 是 Python 科学计算标准工具集的组成部分,是一个增强的 Python Shell,目的是提高编写、测试、调试 Python 代码的速度。主要用于交互式数据处理和利用matplotlib 对数据进行可视化处理。
SciPy
SciPy 是一组专门解决科学计算中各种标准问题域的包的集合。主要包括以下包:
scipy.integrate: 数值积分例程和微分方程求解器;
scipy.linalg: 扩展了由 numpy.linalg 提供的线性代数例程和矩阵分解功能;
scipy.optimize: 函数优化器以及根查找算法;
scipy.signal: 信号处理工具;
scipy.sparse: 稀疏矩阵和稀疏线性系统求解器;
scipy.special: SPECFUN(这是一个实现了许多常用数学函数的 Fortran 库)的包装器。
scipy.stats: 标准连续和离散概率分布、各种统计检验方法和更好的描述统计法;
scipy.weave: 利用内联 C++ 代码加速数组计算的工具。
5. python 数据分析 用什么软件
1.安装Jupyter notebook(或者安装pycharm直接下载安装皆可,linux和windows同样适用)
#如果是ubuntu16.04 默认已经安装了python2和python3
#需要另行安装pip,python2的pip安装
sudo apt-get python-pip
#如果安装python3的pip
sudo apt-get python3-pip
12345671234567
#安装开发工具Jupyter notebook
sudo pip3 install jupyter1212
注意,只能安装一个jupyter notebook,默认只能包含一个内核,如python3或者python2,请根据自己开发需求。
特殊需求:
需要python3和python2共存的,请看我另几篇文章。Windows下Python多版本共存
2.在线安装(windows/linux)主要的数据分析工具(轮子)
注意:Ubuntn中,默认的pip 是指python2的,pip3才是python3的,如果安装python3的轮子,请将pip替换成pip3,反之亦然。
数据分析(为了避免依赖冲突,请按顺序安装)
sudo pip3 install numpy
sudo pip3 install pandas
#安装matplotlib需要先安装libpng和freetype
sudo apt-get install libpng-dev
#如果不知到需要下载工具的全称,可以用来查找需要工具的关键词sudo apt search freetype
sudo apt-get install libfreetype6-dev
sudo pip3 install matplotlib
sudo pip3 install scipy
#文本处理工具
sudo pip3 install gensim
#机器学习
sudo pip3 install scikit-
安装完成某个轮子之后,应该是这样的
以此方法安装,随着知识领域的扩展和经验的增加,我们会发现更多更有趣的轮子。
查看已经安装的轮子
pip3 list11
3.离线安装(windows/linux)数据分析工具(轮子)
直接在上述网址下载对应的.whl(虽然本网址http://www.lfd.uci.e/~gohlke/pythonlibs/只有win的= =,但是方法适合任何平台,离线包可以去官网下载,如https://pypi.python.org/pypi/scipy/)
pip3 install 下载的本地路径/numpy-1.11.1+mkl-cp35-cp35m-win_amd64.whl
pip3 install 下载的本地路径/numpy-1.11.1-cp27-cp27mu-manylinux1_x86_64.whl
4.主要的大数据分析轮子介绍
博主比较懒,已经存在的介绍就不赘述了,直接上送包下载地址,且该地址对包有了大意的介绍。
6. 如何用python代码判断一段范围内股票最高点
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登录
python+聚宽 统计A股市场个股在某时间段的最高价、最低价及其时间 原创
2019-10-12 09:20:50
开拖拉机的大宝
码龄4年
关注
使用工具pycharm + 聚宽数据源,统计A股市场个股在某时间段的最高价、最低价及其时间,并打印excel表格输出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚宽数据账户名和密码设置
auth('username','password')
#获取A股列表,包括代号,名称,上市退市时间等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 获取股票代号
stocks = list(get_all_securities(['stock']).index)
# 获取股票名称
stocknames = pd2['display_name']
start_date = '2015-01-01'
end_date = '2018-12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表头列
# 为:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("执行完毕!