- 博客(28)
- 收藏
- 关注
原创 预测金融时间序列 - 第一部分
针对 Python 3.10 进行更新,2023 年 1 月在本系列文章中,我们将创建一个统计上稳健的流程来预测金融时间序列。这些预测将构成一组自动交易策略的基础。本系列的第一篇文章将讨论建模方法和一组分类算法,这些算法将使我们能够预测市场方向。在这些文章中,我们将使用,这是一个 Python 机器学习库。Scikit-learn 包含许多机器学习技术的实现。这不仅为我们节省了大量的实现时间,而且还最大限度地降低了我们自己的代码引入错误的风险,并允许针对其他软件包(如 R)中编写的库进行额外验证。
2024-10-18 14:16:38
916
原创 使用 Pandas 在 Python 中对移动平均线交叉进行回测
技术是一种非常著名的简单动量策略。它通常被认为是量化交易的示例。此处概述的策略仅适用于多头。创建两个单独的线过滤器,具有特定时间序列的不同回溯期。当较短的回溯移动平均线超过较长的回溯移动平均线时,就会出现购买资产的信号。如果较长的平均值随后超过较短的平均值,则资产将被卖回。当时间序列进入强劲趋势期然后缓慢逆转趋势时,该策略非常有效。对于这个例子,我选择了苹果公司(AAPL)作为时间序列,短回溯期为 100 天,长回溯期为 400 天。这是提供的示例。
2024-10-18 14:12:30
748
原创 使用 pandas 研究 Python 中的回测环境
设计一个强大的回测系统的过程极其困难。有效地模拟影响算法交易系统性能的所有组件是一项挑战。数据粒度差、经纪商的订单路由不透明、订单延迟和无数其他因素共同改变了策略的“真实”性能与回测性能。在开发回测系统时,人们很容易想不断地“从头开始重写它”,因为越来越多的因素在评估性能方面至关重要。没有一个回测系统是永远完成的,在开发过程中必须判断系统是否已经捕获了足够多的因素。考虑到这些问题,这里介绍的回测器会有些简单。随着我们进一步探讨问题(投资组合优化、风险管理、交易成本处理),回测器将变得更加强大。
2024-10-18 14:06:06
832
原创 使用 Python 中的 pandas 对 S&P500 的预测策略进行回测
本文将大量使用我们在上述文章中已经开发的软件,包括面向对象的回测引擎和预测信号生成器。面向对象编程的本质意味着我们随后编写的代码可以保持简短,因为“繁重的工作”是在我们已经开发的类上进行的。成熟的 Python 库(例如和也减少了编写样板代码或自己实现知名算法的必要性。
2024-10-18 14:04:19
822
原创 使用 Python、IBPy 和 Interactive Brokers API 实现交易自动化
不久前,我们讨论了。Interactive Brokers 是零售算法交易者使用的主要经纪商之一,因为它的最低账户余额要求相对较低(10,000 美元)且 API(相对)简单。在本文中,我们将使用模拟账户通过 Python 和 IBPy 插件自动执行 Interactive Brokers API 交易。披露:我与 Interactive Brokers 没有任何关系。我之前在专业基金环境中使用过它们,因此熟悉它们的软件。
2024-10-18 14:01:14
1601
原创 统计均值回归测试基础
到目前为止,我们在 QuantStart 上讨论了算法交易以及如何构建。现在是时候将注意力转向形成实际的交易策略以及如何实施它们了。量化工具箱中的一个关键交易概念是。此过程指的是时间序列显示出回归其历史平均值的趋势。从数学上讲,这种(连续)时间序列称为过程。这与随机游走(布朗运动)形成对比,后者没有“记忆”它在每个特定时间点的位置。时间序列的均值回归特性可用于制定有利可图的交易策略。在本文中,我们将概述识别均值回归所需的统计测试。特别是,我们将研究的概念以及如何对其进行测试。
2024-10-18 11:47:30
1166
原创 统计均值回归测试基础 - 第二部分
不久前,我们开始。在那篇文章中,我们研究了一些有助于我们确定时间序列是否均值回归的技术。特别是,我们研究了增强迪基-福勒检验和赫斯特指数。在本文中,我们将考虑另一种均值回归测试,即(CADF) 检验。首先,应该注意的是,找到具有均值回归行为的可直接交易资产实际上非常困难。例如,股票的行为大致类似于,因此均值回归交易策略相对无用。但是,没有什么可以阻止我们创建一个平稳的价格序列组合。因此,我们可以将均值回归交易策略应用于投资组合。
2024-10-18 11:32:42
735
原创 对 SPY 和 IWM 之间的日内均值回归配对策略进行回测
在本文中,我们将讨论我们的第一个日内交易策略。它将使用经典的交易理念,即“交易对”。在这种情况下,我们将利用两只(ETF),和,它们在纽约证券交易所 (NYSE) 交易,并分别试图代表美国股票市场指数,即和。该策略通过做多一只 ETF 并做空一定数量的 ETF 来大致在 ETF 对之间创建“价差”。多头与空头的比率可以通过多种方式定义,例如利用统计协整时间序列技术。在这种情况下,我们将通过滚动对冲比率。这将使我们能够在 SPY 和 IWM 之间创建“价差”,并将其标准化为。
2024-10-18 11:28:10
956
原创 选择回测和自动执行的平台
本文将讨论的概念。广义上讲,这是允许交易策略通过电子交易平台生成交易执行信号而无需任何后续人工干预的过程。迄今为止,QuantStart 上讨论的大多数系统都被设计为自动执行策略。本文将介绍提供回溯测试和自动执行功能的软件包和编程语言。首先要考虑的是如何对策略进行回测。我个人认为,使用一流的编程语言定制开发回测环境可以提供最大的灵活性。相反,供应商开发的集成回测平台总是必须对如何进行回测做出假设。尽管如此,可用的编程语言选择范围很广,而且种类繁多,这往往让人不知所措。在开发之前,很难确定哪种语言可能合适。
2024-10-18 11:24:12
832
原创 用于回测目的的连续期货合约
期货是双方签订的一种合约,约定在未来某一特定日期购买或出售一定数量的标的资产。该日期称为交割日或到期日。当该日期到来时,买方必须按照合约签订日商定的价格向卖方交付实物标的资产(或现金等价物)。实际上,期货是在交易所交易的(与场外交易相反*)*,交易标的物的数量和质量都是标准化的。价格每天都按市价计算。期货流动性极强,被大量用于投机目的。虽然期货通常用于对冲农产品或工业品的价格,但期货合约可以针对任何有形或无形标的物形成,例如股票指数、外汇价值的利率。期货情况说明书。
2024-10-18 11:19:59
1225
原创 使用 Python 从 DTN IQFeed 下载历史日内美国股票数据
在本文中,我们将讨论如何从市场数据供应商处获取日内历史美国股票数据。可以通过创建帐户时提供的本地 IQLink 服务器套接字连接获取数据。在本文中,我们将利用 Python 的流式套接字连接来缓冲这些数据并创建美国股票日内市场数据的 CSV 文件。注意:我与 DTN IQFeed 没有任何关系,只是客户而已。我写这篇文章只是为了帮助那些拥有 IQFeed 帐户(或正在考虑获取帐户)的人无需 GUI 软件即可下载数据。
2024-10-18 11:12:29
913
原创 使用 Python 进行事件驱动的回测
事件Event是事件驱动系统的基本类单元。它包含一个类型(例如“MARKET”、“SIGNAL”、“ORDER”或“FILL”),该类型决定了如何在事件循环中处理它。事件队列- 事件队列是一个内存中的 Python 队列对象,它存储由其余软件生成的所有事件子类对象。是一个抽象基类(ABC),它提供了一个用于处理历史或实时市场数据的接口。这提供了很大的灵活性,因为策略和投资组合模块可以在两种方法之间重复使用。DataHandler 会在系统每次心跳时生成一个新的数据(见下文)。策略Strategy。
2024-10-18 11:07:51
1163
原创 使用 Python 进行事件驱动的回测-第二部分
我们讨论了如何构建策略类层次结构。策略,正如这里定义的,用于生成信号,投资组合对象使用这些信号来决定是否发送订单Portfolio。和以前一样,创建一个抽象基类 (ABC)是很自然的,所有后续子类都从其继承。本文介绍了一个对象,它跟踪投资组合中的头寸并根据信号生成固定数量股票的订单。后续的投资组合对象将包括更复杂的风险管理工具,并将成为后续文章的主题。
2024-10-18 11:05:25
728
原创 使用 Python 进行事件驱动的回测-第三部分
中,我们考虑了一个基本的 ExecutionHandler 层次结构。在本文中,我们将讨论如何使用 Portfolio 对象中先前构建的权益曲线 DataFrame 来评估策略回测后的表现。
2024-10-18 11:03:12
815
原创 随机数生成器抽象基类
在本文中,我们将构建类来帮助我们封装随机数的生成。随机数生成器 (RNG) 是量化金融中必不可少的工具,因为它们对于支持数值期权定价技术的蒙特卡罗模拟必不可少。到目前为止,QuantStart 上的其他文章都以程序化的方式使用了 RNG。具体来说,我们利用 Box-Muller 技术生成一个或多个以标准高斯分布的随机变量。现在我们将展示如何构建随机数生成器类层次结构。这使我们能够将随机数的生成与使用它们的蒙特卡罗求解器分开。
2024-10-17 17:06:16
803
1
原创 通过蒙特卡洛方法用 C++ 进行双重数字期权定价蒙特卡洛方法用 C++ 进行双重数字期权定价
之后,我们现在将修改该文章中提供的代码以处理双数字期权。由于我们不区分看涨期权和看跌期权,因此我们只需编写一个支付函数。Heaviside 函数已被删除并替换为函数。请注意,它需要三个参数:两个执行价值和到期时标的资产的现货价格。我还替换了payoff_sum蒙特卡洛函数中的行以使用此支付函数。与之前一样,我们可以看到 Box-Muller 函数以及通过蒙特卡洛方法对双数字期权定价所需的收益函数。再次强调,我们将继续在这些文章中重复代码,这不是生产部署的最佳实践!
2024-10-17 17:00:56
977
原创 蒙特卡洛方法用 C++ 进行欧式香草期权定价通过蒙特卡洛方法用 C++ 进行欧式香草期权定价
我们能够采用欧式香草看涨期权或看跌期权的 Black-Scholes 方程的闭式解并提供价格。这是可能的,因为欧式香草期权的支付函数产生的边界条件使我们能够轻松计算出闭式解。许多期权支付函数导致的边界条件更难通过分析解决,有些甚至无法通过这种方式解决。因此,在这些情况下,我们需要依靠数值近似。在本文中,我们将使用 C++ 中非常基本的蒙特卡罗求解器对相同的欧式香草期权进行定价,然后将我们的数值与分析情况进行比较。我们在此阶段不会专注于极其高效或优化的实现。
2024-10-17 16:56:52
929
原创 Python 中的雅可比方法。我们已经研究过 Python 中的其他一些数值线性代数实现
本质上,我们使用这种方法是因为我们想要创建一个上三角矩阵,𝑅。,0)t.电视.我们将使用Q转变A到上三角形式,得到矩阵𝑅.我们表示Q作为Qk并且,由于k=1在第一步中,我们问Q1作为第一个 Householder 矩阵。与其他求解线性最小二乘法的方法相比,使用 QR 分解的主要优势之一是它在数值上更稳定,尽管执行速度较慢。第一步是创建向量𝕩,即K矩阵的第列A,步骤K我们定义𝛼=−𝑠g𝑛(xk)(||x||). 常态||⋅||这里使用的是。给定单位矩阵的第一列向量,I大小相等A,𝕖1=(1,0,…
2024-10-17 16:50:20
726
原创 Python 和 NumPy 中的 Cholesky 分解Python 和 NumPy 中的 Cholesky 分解
我们将研究方法的 Python 实现,该方法用于某些量化金融算法。具体来说,它出现在蒙特卡罗方法中,用于模拟具有相关变量的系统。将 Cholesky 分解应用于相关矩阵,提供下三角矩阵 L,当将其应用于不相关样本向量 u 时,会产生系统的协方差向量。因此,它与量化交易高度相关。Cholesky 分解假设被分解的矩阵是Hermitian且正定的。由于我们只对实值矩阵感兴趣,我们可以用**对称性(即矩阵等于其自身的转置)代替 Hermitian 的性质。
2024-10-17 16:44:56
937
原创 添加杠杆、多空因子策略来提高税收阿尔法
,发现单独管理账户 (SMA) 中的税收损失收获策略可以通过采用出售亏损证券头寸的策略来提高投资组合的税后回报,从而产生资本损失,这些损失可用于抵消整个投资组合产生的收益。换句话说,经济风险和税收优惠是相互关联的。平均而言,直接指数化的净损失在推出后的头几年逐渐减少——第一年的累计净资本损失为 13%,第三年超过 20%,在 10 年模拟的最后五年越来越接近 30%。”,发现正如直觉所暗示的那样,股票投资组合应该提供更多的收获机会,以及更高的一致性,因为即使市场有正回报,个人持股中也可能存在收获机会。
2024-10-17 14:40:02
739
原创 所有闪光的东西并非都是金子:大量交易算法的回测与样本外表现的对比
当使用历史价格数据对自动化交易策略进行开发和评估时,存在对过去过度拟合的倾向。我们使用Quantopian平台上开发和回测的888个算法交易策略的独特数据集,这些策略至少有6个月的样本外表现,研究了回测过度拟合的普遍性和影响。具体来说,我们发现常用的回测评估指标,如夏普比率,在预测样本外表现方面几乎没有价值(R²
2024-10-17 14:35:06
571
原创 算法交易绩效衡量的夏普比率算法交易绩效衡量的夏普比率
威廉·福赛斯·夏普是一位诺贝尔经济学奖获得者,他帮助创建了资本资产定价模型(CAPM),并于 1966 年开发了夏普比率(后来于 1994 年更新)。夏普比率年代由以下关系定义:在哪里𝑅一个是资产或策略的期间回报,𝑅𝑏是合适基准的期间收益。该比率将资产或策略的超额收益的平均值与这些收益的标准差进行比较。因此,假设收益相同,收益波动性越低,夏普比率就越高。执行交易策略的人经常引用的“夏普比率”是年化夏普比率,其计算取决于衡量回报的交易期。
2024-10-17 14:24:22
907
原创 使用 Polygon Forex 数据计算实际波动率对外汇对的详细数据进行了探索性数据分析
我们还建议您查看我们的以在 Jupyter Notebook 中创建算法交易环境。
2024-10-17 14:19:36
916
原创 使用 Docker、Jupyter 和 QSTrader 实现 Motium Top N用 QSTrader 将 Momentum Top N 战术资产配置策略实施自己的研究和回测环境
在上一个中的回测框架设置了一个回测环境。我们使用和隔离了这个研究环境及其依赖项。在本文中,我们将向您展示如何实现 QSTrader 的示例策略之一,即 Momentum Top N 战术资产配置策略。为了跟上本教程,我们强烈建议您完成上一个。
2024-10-17 14:13:56
649
原创 量化交易的 Python 库从数据处理到实时交易系统开发
对于任何想要涉足量化金融和系统交易领域的人来说,Python 都是不可或缺的工具。作为许多量化开发人员的首选编程语言,Python 提供了庞大的库生态系统,可简化从数据分析到策略执行的所有流程。无论您是刚起步还是想要提高技能,了解正确的 Python 库都是自信地构建和部署交易策略的关键。本指南向您介绍专业量化分析师和系统交易员使用的基本 Python 库。我们将介绍涵盖从数据处理和技术分析到回测和高级财务建模的所有内容的库。如果您渴望将交易理念转化为可执行的策略,这些库将成为您工具包的支柱。
2024-10-17 14:11:10
1058
原创 多头和空头均值回归机器学习Long & Short Mean Reversion Machine Learning
在我发现生产代码中的细微偏差和改进领域后,我想象我会解决这些问题并获得更适度的回测结果。不幸的是,事实并非如此:数字仍然看起来太好了。但这一次,代码经过了双重检查。三重检查将来自市场结果。事实上,如果我们去掉 2020 年这一辉煌的一年,即该系统在新冠疫情复苏中表现突出的一年,年回报率将达到 26%。这更有可能是该系统的真实表现。同水平的交易成本如何影响结果:滑点和交易成本的影响在我发现生产代码中的细微偏差和改进领域后,我想象我会解决这些问题并获得更适度的回测结果。
2024-10-17 14:08:09
676
原创 币抛(LUBI.AI)浅谈量化交易者:如何利用锤型K线图形态进行交易
价格行为交易者通过锤形K线图可有效识别看涨或看跌趋势后根据具体背景和时间框架,这些蜡烛线形态可能会暗示下跌趋势结束时将出现看涨工具,或在上涨趋势后出现看跌工具。在加密货币领域,这些指标仅适用于主流币(如BTC\ETH等),山寨币\空气币等控盘的币种,或交易深度较低的币种,并不适用上述规则,所以大家进行交易时,还应采取适当的风险管理,提高交易回报率。天地单在此刚才多的叙述,而趋势是作为收益较高,但风险也较高的交易策略,对交易者而言自然提出了较高的技术分析要求,这里面就包括对未来趋势的判断。
2024-10-17 14:04:00
967
原创 Docker、Jupyter Notebook 和 QSTrader 创建回测环境创建自己的研究和回测环境使用 Jupyter 笔记本可视化策略一个可移植且可扩展的隔离环境
本教程的其余部分将假设已遵循此目录结构,并将在 docker-compose.yml 中实现一些特定于路径的上下文。接下来,我们需要为我们的服务定义两个卷。我们的笔记本目录将在容器内的 /app 下可见,数据目录将位于容器的根目录中。由于我们计划可视化我们的策略的权益曲线,因此这个选择将使我们能够访问所需的所有底层软件包。我们首先指定我们的服务,我们将其命名为 qst,这是 QSTrader 的缩写。但是,由于我们在自己的主机上运行 Docker,而不是在更广泛的环境中运行,因此这是一个可以接受的权衡。
2024-10-17 13:56:05
955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人