分享

Python For Finance:算法交易

 静幻堂 2020-01-04
python小白社区 2019-04-09 23:43:54

这篇Python for Finance教程向您介绍了算法交易等等。

技术已成为金融领域的一项资产:金融机构现在正在向技术公司发展,而不仅仅是仅仅依靠财务方面:除了技术带来创新的速度,并有助于获得竞争优势,速度和频率金融交易以及大量数据使得金融机构多年来对技术的关注度不断提高,技术确实成为金融业的主要推动者。

在最热门的财务编程语言中,你会发现R和Python,以及C ++,C#和Java等语言。在本教程中,您将学习如何开始使用Python进行财务管理。本教程将涵盖以下内容:

  • 您需要开始的基础知识:对于那些刚接触财务的人,您将首先了解有关股票和交易策略的更多信息,时间序列数据以及设置工作区所需的内容。
  • 介绍时间序列数据和一些最常见的财务分析,例如移动窗口,波动率计算,......使用Python包Pandas。
  • 简单动量策略的开发:您将首先逐步完成开发过程,然后从制定和编写简单的算法交易策略开始。
  • 接下来,您将使用Pandas,zipline和Quantopian 回溯测试制定的交易策略。
  • 之后,您将看到如何对策略进行优化以使其更好地运行,并最终评估您的策略的性能和稳健性。

在这里下载本教程的Jupyter笔记本。

Python For Finance:算法交易

Python for Finance入门

在进入交易策略之前,先了解基础知识是个好主意。本教程的第一部分将重点介绍入门所需的Python基础知识。然而,这并不意味着你将完全从零开始:你应该至少完成DataCamp的免费Intro to Python for Data Science课程,其中你学习了如何使用Python列表,包和NumPy。另外,希望已经知道Pandas的基础知识,Pandas是流行的Python数据操作包,但这不是必需的。

然后我建议你参加DataCamp的Python入门课程,学习Python的基础知识。如果您希望将新的“Python for Data Science”技能应用于实际财务数据,请考虑在Python中导入和管理财务数据。

股票和交易

当一家公司想要发展和承接新项目或扩大规模时,它可以发行股票以筹集资金。股票代表公司所有权中的份额,并以换取金钱的方式发行。股票买卖:买卖双方交易现有的先前发行的股票。出售股票的价格可以独立于公司的成功而变化:价格反映了供给和需求。这意味着,只要股票被认为是“理想的”,由于成功,受欢迎,...股票价格将会上涨。

请注意,股票与债券不同,即公司通过借贷筹集资金,无论是作为银行贷款还是发行债券。

正如您刚才所读到的那样,当您谈论股票时,购买和出售或交易是必不可少的,但当然不限于此:交易是购买或出售资产的行为,可能是财务安全,如股票,债券或有形产品,如黄金或石油。

然后股票交易是为股票支付的现金转换为公司所有权的一部分,可以通过销售转换回现金,这一切都有望带来利润。现在,为了获得有利可图的回报,你可以在市场中做多或做空:你要么认为股价会在未来以更高的价格卖出,要么卖掉你的股票,期望你能买到它以较低的价格回归并实现盈利。当您遵循固定计划在市场中做多或做空时,您就有了交易策略。

制定交易策略需要经历几个阶段,例如,当您构建机器学习模型时:您制定策略并以可在计算机上测试的形式指定策略,进行一些初步测试或者回测,你优化你的策略,最后,你评估你的战略的性能和稳健性。

交易策略通常通过回溯测试来验证:您使用历史数据重建过去可能使用您开发的策略定义的规则进行的交易。通过这种方式,您可以了解策略的有效性,并且可以将其作为优化和改进策略的起点,然后再将其应用于实际市场。当然,这一切都在很大程度上依赖于潜在的理论或信念,即过去运作良好的任何策略在未来可能也会很好地发挥作用,并且任何过去表现不佳的战略都可能也会将来很糟糕。

时间序列数据

时间序列是在连续的等间隔时间点获取的数字数据点序列。在投资中,时间序列跟踪所选数据点的移动,例如股票价格,在指定的时间段内定期记录数据点。如果您仍然怀疑这将是什么样子,请看下面的示例:

您会看到日期位于x轴上,而价格则显示在y轴上。在这种情况下,“连续等间隔时间点”意味着x轴上的天数相隔14天:注意2005年3月7日和下一个点之间的差异,2005年3月31日, 2005年4月5日和2005年4月19日。

但是,当您使用库存数据时,您经常会看到的不仅仅是两列,包含期间和价格观察,但大多数情况下,您将有五列包含期间和开头的观察那个时期的高,低和收盘价。这意味着,如果您的期间设置为每日水平,那么当天的观察结果将让您了解当天的开盘价和收盘价以及当天特定股票的极高和低价格变动。

现在,您已经了解了完成本教程所需了解的基本概念。这些概念很快就会回来,您将在本教程的后面部分了解更多相关概念。

设置工作区

让工作区准备就绪是一件容易的事:只需确保在系统上运行Python和集成开发环境(IDE)。但是,有些方法可以让您在刚刚开始时更容易上手。

以Anaconda为例,它是Python和R的高性能发行版,包含100多种最流行的数据科学Python,R和Scala软件包。此外,通过安装Anaconda,您可以访问超过720个软件包,这些软件包可以使用我们着名的软件包,依赖项和环境管理器conda轻松安装,该软件包含在Anaconda中。除此之外,你还可以使用Jupyter Notebook和Spyder IDE。

这听起来很划算,对吗?

你可以从这里安装Anaconda ,不要忘记在DataCamp的Jupyter Notebook教程:权威指南中查看如何设置你的Jupyter笔记本。

当然,Anaconda不是您唯一的选择:您还可以查看Canopy Python发行版(不是免费的),或试用Quant平台。

后者提供了一些额外的优势,例如,使用Jupyter或Spyder IDE,因为它为您提供了在浏览器中专门进行财务分析所需的一切!使用Quant Platform,您将可以访问基于GUI的金融工程,交互式和基于Python的财务分析以及您自己的基于Python的分析库。更重要的是,您还可以访问一个论坛,在那里您可以与同行讨论解决方案或问题!

Python For Finance:算法交易

Python财务基础知识:pandas

当您使用Python进行融资时,您经常会发现自己正在使用数据操作包Pandas。但是,一旦你开始深入挖掘,其他软件包如NumPy,SciPy,Matplotlib等......都会过去。

现在,让我们关注Pandas并使用它来分析时间序列数据。本节将介绍如何使用Pandas导入数据,探索和操作数据。最重要的是,您将学习如何对导入的数据执行常见的财务分析。

将财务数据导入Python

该pandas-datareader软件包允许从Google,World Bank等来源读取数据...如果您想拥有此功能提供的数据源的更新列表,请转到文档。您曾经能够从Yahoo!访问数据 直接融资,但已被弃用。访问Yahoo! 财务数据,请查看Matt Macarty的视频,其中显示了一种解决方法。在本教程中,您将使用该包从Yahoo!读取数据。金融。确保首先通过pip安装最新版本来安装软件包pip install pandas-datareader。

提示:如果要安装最新的开发版本,或者遇到任何问题,可以在此处阅读安装说明。

import pandas_datareader as pdr
import datetime
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2006, 10, 1),
end=datetime.datetime(2012, 1, 1))

请注意,Yahoo API端点最近已更改,如果您希望自己已经开始使用该库,则需要安装临时修补程序,直到将修补程序合并到主分支中以开始提取数据来自雅虎!财务与pandas-datareader。在您自己开始之前,请务必阅读此处的问题!

不过不用担心,对于本教程,数据已经为您加载,以便您在使用Pandas学习Python中的财务时不会遇到任何问题。

尽管如此,尽管pandas-datareader提供了很多将数据引入Python的选项,但这是明智的,但它并不是唯一可用于提取财务数据的软件包:您还可以使用Quandl等库,例如,从Google财经获取数据:

import quandl 
aapl = quandl.get("WIKI/AAPL", start_date="2006-10-01", end_date="2012-01-01")

有关如何使用Quandl直接将财务数据导入Python的更多信息,请转到此页面。

最后,如果您已经在财务部门工作了一段时间,您可能会知道您最常使用Excel来操纵您的数据。在这种情况下,您应该知道可以将Python与Excel集成。

有关更多信息,请查看DataCamp的Python Excel教程:权威指南。

使用时间序列数据

当您最终在工作区中拥有数据时,您想要做的第一件事就是弄脏手。但是,现在您正在使用时间序列数据,这可能看起来并不那么简单,因为您的索引现在包含DateTime值。

不过不用担心!让我们一步一步地开始探索数据,首先使用一些您可能已经知道的函数,如果您之前有过R的编程经验,或者您之前曾使用过Pandas。

无论哪种方式,你都会看到它非常简单!

正如您在上面的代码块中看到的那样,您已经习惯pandas_datareader将数据导入工作区。生成的对象aapl是DataFrame,它是一个二维标记数据结构,具有可能不同类型的列。现在,当你手上有一个常规DataFrame时,你可能会做的第一件事就是运行head()和tail()函数来查看DataFrame的第一行和最后一行。幸运的是,当您使用时间序列数据时,这不会改变!

提示:还要确保使用该describe()函数获取有关数据的一些有用的摘要统计信息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多