
现在我们已经下载了所有当前标准普尔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 مسؤولية دقة أو اكتمال أو موثوقية المعلومات المُقدمة، ولا تتحمل مسؤولية أي إجراءات تُتخذ بناءً على المحتوى، ما لم يُنص على ذلك صراحةً كتابيًا.

اترك رسالتك الآن