
现在我们已经下载了所有当前标准普尔500成分股的历史定价,我们希望能够在Python中访问它。Pandas库让这变得非常简单。下面的脚本从我们的SecuritiesMaster数据库中获取谷歌股票在一定时间段内的开-高-低-关(OHLC)数据,并输出数据集的尾部:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# retrieving_data.py
from __future__ import print_function
import pandas as pd
import MySQLdb as mdb
if __name__ == "__main__":
# Connect to the MySQL instance
db_host = ’localhost’
db_user = ’sec_user’
db_pass = ’password’
db_name = ’securities_master’
con = mdb.connect(db_host, db_user, db_pass, db_name)
# Select all of the historic Google adjusted close data
sql = """SELECT dp.price_date, dp.adj_close_price
FROM symbol AS sym
INNER JOIN daily_price AS dp
ON dp.symbol_id = sym.id
WHERE sym.ticker = ’GOOG’
ORDER BY dp.price_date ASC;"""
# Create a pandas dataframe from the SQL query
goog = pd.read_sql_query(sql, con=con, index_col=’price_date’)
# Output the dataframe tail
print(goog.tail())
下面是脚本的输出:
adj_close_price
price_date
2015-06-09 526.69
2015-06-10 536.69
2015-06-11 534.61
2015-06-12 532.33
2015-06-15 527.20
这显然只是一个简单的脚本,但它显示了本地存储的证券主程序的强大功能。使用这种方法可以非常快速地对某些策略进行回测,因为数据库的输入/输出(I/O)速度将比internet连接的速度快得多。
Processing Financial Data
处理财务数据
本章将讨论在策略测试中使用之前处理的金融市场数据。讨论将首先概述算法交易员感兴趣的不同类型的数据。然后将考虑数据的频率,从季度数据(如美国证券交易委员会的报告)到毫秒级的tick和订单簿数据。然后将概述这些数据的来源(免费和商业)以及获取数据的代码。最后,将讨论如何清理和准备用于战略的数据。
市场及工具分类
作为算法交易员,我们通常对广泛的金融市场数据感兴趣。这可以从基础和衍生工具的时间序列价格、基于文本的非结构化数据(如新闻文章),到企业盈利信息。本书将主要讨论金融时间序列数据。
市场
美国和国际股票、外汇、大宗商品和固定收益是算法交易员感兴趣的主要市场数据来源。在股票市场上,直接购买标的资产仍然极为普遍,而在后三个市场中,流动性较高的衍生工具(期货、期权或更奇特的工具)更常用于交易目的。这种宽泛的分类,本质上使得股市交易相对容易。因此,零售算法交易领域的很大一部分基于股票,例如一些公司股票或交易所交易基金(etf)。外汇(“外汇”)市场也非常受欢迎,且经纪商允许保证金交易的百分点(PIP)的运动。pip是货币汇率中第四个小数点的一个单位。对于以美元计价的货币,这相当于百分之一美分。大宗商品和固定收益市场更难直接交易相关资产。一个零售算法交易员通常对把石油桶运送到一个油库不感兴趣!相反,标的资产的期货合约被用于投机目的。融资融券交易被采用,允许对此类合约施加广泛的杠杆作用。
工具
算法交易员可以使用多种基础和衍生工具。
下表描述了感兴趣的常用用例。

这里我们将几乎完全集中于股票和etf,以简化实现。
基本数据
虽然算法交易员主要对金融价格时间序列进行分析,但基本数据(不同频率的)也经常被添加到分析中。所谓的量化价值(QV)策略在很大程度上依赖于对基本数据的积累和分析,如宏观经济信息、企业盈利历史、通胀指数、薪资报告、利率和SEC文件等。这类数据通常也是时间格式的,尽管在时间跨度上要大得多。本书集中讨论日常或更频繁的策略,主要来自价格波动。
非结构化数据
非结构化数据由新闻文章、博客文章、论文或报告等文档组成。这些数据的分析可能很复杂,因为它依赖于自然语言处理(NLP)技术。分析非结构化数据的一个用途是试图确定情绪背景。这对推动交易策略可能很有用。例如,通过将文本分类为“看涨”、“看跌”或“中性”,可以产生一系列交易信号。这个过程的术语是情绪分析。Python为文本数据分析提供了一个非常全面的库,称为自然语言工具包(NLTK)。
全文本数据
有许多全文数据来源可能对生成交易策略有用。彭博(Bloomberg)和英国《金融时报》(financial Times)等受欢迎的金融消息来源,以及Seeking Alpha和ZeroHedge等金融评论博客,都提供了可供分析的重要文本来源。此外,数据供应商提供的专有新闻提要也是此类数据的良好来源。为了在更大范围内获取数据,必须使用“web获取”工具,这些工具的设计目的是自动批量下载网站。这里要小心,因为自动web获取工具有时会违反这些站点的服务条款。在开始下载这类数据之前,一定要检查一下。一个特别有用的web抓取工具是ScraPy库,它使这个过程更高效、更结构化。
社交媒体数据
在过去几年里,人们对从社交媒体数据中获取情感信息非常感兴趣,尤其是通过Twitter微博。2011年,围绕Twitter人气推出了对冲基金Derwent Capital。事实上,学术研究
已经表明,基于这种情绪分析,有可能产生一定程度的预测能力。如果你想对情绪进行研究,那么情绪分析不在本书的讨论范围之内,但是Matt Russell有两本书是关于通过这些web服务提供的公共api获取社交媒体数据的。
【交易学习】
【交易员洞察】
【基础知识】
【货币交易】
【黄金交易】
風險提示:本文所述僅代表作者個人觀點,不代表 Followme 的官方立場。Followme 不對內容的準確性、完整性或可靠性作出任何保證,對於基於該內容所採取的任何行為,不承擔任何責任,除非另有書面明確說明。

暫無評論,立馬搶沙發