量化投资-数据挖掘技术与实践
定义:量化投资就是利用数学、信息学、统计学等领域的技术对投资对象进行量化分析和优化,从而进行精确投资的行为
-
特点:
- 基于市场是非有效的或弱有效的基础。
- 纪律性:绝对相信模型。
- 系统性:多层次、多角度、多数据。
- 妥善运用套利的思想。找估值洼地。低估买,高估卖。
- 靠概率取胜。
-
核心----量化模型
- 多因子选股模型:打分法、回归法
- SVM择时模型
以上基础知识为博客申请以前所学,每日分享一点。
以下内容为今日所学:
首先,我使用了python作为我的数据分析语言。这里简单说一下我的理由,
- 虽然我的参考书《量化投资--数据挖掘技术与实践》是基于matlab,但是matlab虽然相比于python有一些作图上的优势,但常用的基本数据分析能力二者是相差不大的,而且python语法简单易懂。
- python使用人数是多余matlab的。这里不要去特立独行,使用的人多代表它的错误更少,功能也更齐全。
- python节省了我的时间成本,matlab我需要从头了解。
所以我基于python,今天主要分享一些获取数据的方法:
python这边有许多接口都可以获得金融相关数据,当然其他数据应该也有,墨默并没有去了解他们。
这些股市相关数据的接口封装在pandas内部,有的朋友们可能了解过,之前是在pandas.io.data里面封装的,但是现在早已经换地方了,再次通过pandas.io.data导入会报错。
现在我们可以在 pandas_datareader.data 导入:
1 import pandas_datareader.data as web
在这里我们以在雅虎中读取数据为例:
代码十分简单:
1 start = datetime.datetime(2019,8,1) #开始时间 2 end = datetime.date.today() #结束时间 3 4 apple = web.DataReader("AAPL","yahoo",start,end) #在雅虎获取苹果公司(AAPL) 5 #2019年8月1日以来的数据 6 type(apple) #查看数据类型:pandas.core.frame.DataFrame 7 apple.head() #打印前5行代码 8 9 apple.to_csv("url/apple.csv") #将数据存储到名为apple 的csv文件
运行结果:
apple.csv:
对于数据分析而言可视化是必不可少的,毕竟我们在数据预处理阶段不能拿着一张海量数据的表去看那一条数据有问题……
我简单的做了一条折线图:
1 import matplotlib.pyplot as pl 2 %pylab inline 3 4 pylab.rcParams['figure.figsize'] = (15,9) #定义画布大小 5 apple.plot(grid = True) #
除了雅虎之外我们的python还可以通过tushare获取数据
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import tushare as ts 2 import matplotlib.pyplot as plt 3 import mpl_finance as mpf 4 import numpy as np 5 6 data = ts.get_k_data('600519', ktype='D', autype='qfq', start='2017-09-17', end='') #数据获取 7 8 prices = data[['open', 'high', 'low', 'close']] 9 dates = data['date'] 10 11 candleData = np.column_stack([list(range(len(dates))), prices]) 12 13 fig = plt.figure(figsize=(10, 6)) #画布 14 ax = fig.add_axes([0.1, 0.3, 0.8, 0.6]) 15 16 mpf.candlestick_ohlc(ax, candleData, width=0.5, colorup='r', colordown='b') 17 18 plt.show()#展示
运行结果:
今天的分享暂且到这里,明天持续更新!