项目介绍
全球金融市场显然是“大数据”的来源。如果我们只关注一种可交易资产的市场,例如 Amazon.com 的股票,那么买卖该资产的人太多,以至于股价可能会上涨或下跌(尽管通常,在市场开放的所有时间内,每次移动都只是少量)每秒几次,因此在一个交易日内,资产价格可能有 20,000 个或更多时间点。如果每个时间点的感兴趣数据只有一个值,只有以美元和美分为单位的股价,那么这将是相当多的处理工作,但很多时候,我们感兴趣的数据不仅仅是资产的股价。金融市场的交易员通常使用的数据总结了目前在交易所的所有买价(买单)和卖价(卖单):任何想要买单的交易者都可以在交易所发布“买价限价单”,说明他们准备为每股支付什么价格,以及他们希望买多少股;同样,任何卖家都可以发布“限价卖单”,显示他们想卖出多少股,以及他们正在寻找的每股价格。不同的买家会有不同的价格和数量需求,不同的卖家也会有不同的需求,因此在任何时候,证券交易所都会通过发布其“限价订单簿”(LOB)(有时也称为阶梯)来总结当前收到的所有订单,它显示了在每个报价下可供购买或出售的资产单位总数。 任何时候的 LOB 通常涉及数十个不同的(价格、数量)对——并且在任何导致股价变化的交易发生之前,LOB 可能会改变几次,因此在一天的时间序列中可能有 100,000 个数据点,用于高交易量资产,例如亚马逊股票, 而这些数据点中的每一个都是 LOB 更新时的快照,因此 100,000 个数据点中的每一个本身都是一个可能涉及 50 个或更多数值的结构,因此在近似数字中,我们可以合理地预期在任何一天内来自任何一只此类股票的 500 万个值的数据文件。行业从业者将此整个 LOB 数据称为“2 级数据”。有充分的理由相信,对 Level2 时间序列数据执行适当高级的数据分析可以发现有效预测近期价格变动的机会,从而从这些信号中获得有利可图的自动交易。
简单地说,问题在于您实施和评估数据分析技术,这些技术可能有助于识别 Level2 数据中的交易信号(“买入”或“卖出”)。您将获得此项目的 Level2 数据集,但资产的标识已被删除。一些数据将在项目开始后立即提供,供您开始工作,然后可能会在项目的后期阶段发布其他数据:这些数据可能与初始数据集的相同资产或市场周期不同,因此在统计上可能与初始数据集不同, 所以你应该相应地计划。
团队一直致力于探索各种强化学习方法在处理 Level2 时间序列数据时在寻找良好交易策略方面的表现。例如,我们对 A3C 方法感兴趣,尽管我们认识到您的小型项目中可能没有足够的时间来研究、设计、实施和评估完整的 A3C 系统。尽管如此,强化学习是一个历史悠久的领域,拥有非常多的学术文献,并且可能有更简单的方法或免费提供的源代码库,您可以使用它们在可用时间内取得良好的进展。您可能希望从实现一种基本的时间序列分析方法开始,例如 ARIMA1,它相对简单且非常知名,可以作为比较的有用基线,但我们的兴趣超出了这种常用方法;你的也应该如此。
我们不仅希望看到一个进行时间序列预测的系统,我们还希望看到您的系统根据其信号进行实际交易可能会产生什么利润:您需要保留一些 Level2 数据作为测试集,并编写(或找到)一个简单的交易模拟器,以便我们可以看到自动交易系统在使用分析识别的信号时的表现如何。
最后一件事:在你使用它们之前,你将获得的原始数据集可能需要一些初步的整理(清理、提取、处理等),你可能会发现一些初步的探索性可视化和数据挖掘也很有用。
附录: 学习资料
https://www.investopedia.com/ask/answers/100314/whats-difference-between-market-order-and-limit-orderasp#:~:text=Market%20orders%20are%20meant%20to,minor%20price%20variations%20matter%20less. https://www.investopedia.com/terms/m/marketorder.asp https://quadcode.com/blog/matching-engine-what-is-it-and-how-does-it-work
#市场单和限价单 Market Order and Limit Order 市价单立即以当前市场价格执行交易。您将立即获得股票,但确切的价格在您下订单和执行之间可能会略有波动。 限价单让您可以控制您将支付的确切价格。您设置您愿意在买入时支付的最高价格(或卖出时的最低价格),只有当市场达到您的目标时,交易才会进行。这种方法提供了更多的控制权,但不能保证交易会顺利进行。
限价单
限价单让您控制您将为股票支付或接收的价格。对于要购买的限价单,您可以设置您愿意支付的最高价格。对于销售,您设置了您将采用的最低价格。 这些订单在交易以下时特别有价值:
经常进行大幅价格波动的波动性股票
交易清淡的股票,买入价和卖出价之间的差价很大
在市场不确定的时期
当价格比立即获得库存更重要时
限价单的关键权衡是价格的确定性与执行的确定性。虽然您知道您将获得的最差价格,但如果股票没有达到您指定的价格,您的订单可能永远不会执行。
场景1
当天晚些时候,股价跌至 9.50 美元,您的订单自动执行,以 9.50 美元的价格买入 100 股,总成本:950 美元(9.50 美元× 100 股)。即使价格进一步下跌至 9.00 美元,您仍然可以获得目标价格
场景2
XYZ 的价格非但没有下跌,反而上涨至 11.00 美元,您的限价单仍未成交,因为股票从未达到您的 9.50 美元目标。
结果是您可能会错过上涨的机会。这是限价单的主要权衡:您可以以可能不执行交易为代价获得更多的价格控制权。
市价单优先考虑速度 — 它们会以任何可用价格立即执行。相比之下,限价单优先考虑价格控制,并等待您的价格匹配后再执行。
部分订单
库存订单并不总是完全填写。限价单尤其如此,但市价单也可能发生,尤其是对于大宗交易。 当您仅执行部分订购的股票时,将发生部分成交。例如,您可以下达限价单,以 25 美元的价格购买 1,000 股 XYZ 股票,但该价格只有 300 股可用。在这种情况下,您将获得 300 股的“部分成交”,而剩余的 700 股将继续持有订单,直到您的限价有更多股票可用、您的订单到期或您取消未成交的部分。
限价单的执行机制
达到限价不等于立即成交 限价单的执行机制是:当您下达限价单时,系统会首先检查您是否拥有足够的资金来支付该订单。如果资金不足,系统会拒绝该订单。如果资金足够,系统会检查您是否拥有足够的股票来满足该订单。如果股票不足,系统会拒绝该订单。如果股票足够,系统会检查您是否拥有足够的股票来满足该订单。如果股票不足,系统会拒绝该订单。如果股票足够,系统会检查您是否拥有足够的股票来满足该订单。如果股票不足,系统会拒绝该订单。
- 订单执行遵循价格优先,时间优先的规则。
- 如果市场上已有大量挂单,那么你的订单需要排队,可能会部分成交或无法立即成交。
- 只有当有足够的交易量满足你的订单时,才会完全成交
其他知识
Good-‘Til-Canceled (GTC) Order
取消前有效 (GTC) 订单是一个选项,它允许你选择你的订单是否在市场关闭前一直有效。 这些将保持有效状态,直到投资者填写或手动取消。大多数经纪商为 GTC 订单设置了最长时限(通常为 30 或 90 天)。当您耐心地获得目标价格时,这些订单对于限价订单非常方便。例如,如果您下达 GTC 限价单以 50 美元的价格购买一只股票,即使股票的交易价格为 55 美元,它也仍然有效,如果股票最终下跌,您有机会获得您的价格。
Fill-or-Kill Order 全权委托单
这些必须立即全部填充,否则它们将被自动取消(“终止”)。当您一次需要所有股票并且不想部分成交时,这些订单很有用。
止损单
这些用于在市场价格具有您设置的价格时以市场价格购买或出售证券。这种类型的订单结合了市价单和限价单的功能,因为它仅在达到指定价格时执行。然而,该证券通常以市场决定的未知价格进行交易。
底线
在下股票订单时,您必须在市价单的速度和确定性与限价单的价格控制之间做出选择。市价单以当前价格或接近当前价格立即执行,因此值得购买主要股票,或者当立即执行比获得特定价格更重要时。
Matching Engine 匹配引擎
匹配引擎是金融交易所的基石技术,充当配对买卖订单的复杂引擎室。该软件系统对于股票、商品、加密货币交易所和衍生品市场的运作至关重要。它根据复杂的算法处理和匹配来自市场参与者的订单,从而实现交易的无缝执行。该机制支持大量资产的日常交易,并确保市场高效、透明地运作。 匹配引擎的作用是创造一个场所,通过持续的订单撮合来维持市场流动性——资产可以以稳定的价格买卖的便利性。通过有效地协调买家和卖家,而不会出现明显的价格差异,撮合引擎维护了金融市场的完整性,并促进了交易的公平有序执行。
匹配引擎机制
订单簿是匹配引擎的基本组成部分,精心组织和显示资产的所有未结买卖订单。这个实时、动态的分类账按价格水平分类,并随着新订单的下达和现有订单的完成或取消而不断更新。订单簿在结构上分为两个不同的方面:
- 投标方:订单簿的这一侧列出了所有买单,按买家愿意支付的价格从高到低排列。这边反映了市场需求,每个订单都指定了买方愿意支付的最高价格和所需的数量。
- 需求方:订单簿的另一侧列出了所有卖单,按买家愿意支付的价格从低到高排列。这边反映了市场需求,每个订单都指定了卖方愿意支付的最低价格和提供的数量。
订单簿的买入方和卖出方之间的相互作用推动了价格发现过程。价格发现是确定资产市场价格的机制,本质上是找到供需相遇的均衡价格。随着订单的执行和新订单进入系统,订单簿会不断发展,反映最新的市场状况,从而反映资产的最新定价。这种持续的调整对于市场透明度至关重要,它允许参与者根据可见的实时价格变动和订单流做出反应。
匹配算法:The Engine’S Core
匹配引擎的有效性由其匹配算法决定,这些算法旨在以促进市场效率的方式从订单簿中对齐买卖订单。这些算法在特定规则下运行,以决定匹配和执行哪些订单,从而影响市场的流动性和参与者的交易体验。最常用的匹配算法包括:
- 价格时间优先级 (FIFO):这种广泛采用的算法不仅根据最佳价格确定订单的优先级,还根据订单时间确定订单的优先级。相同价格水平的订单按照收到的顺序执行,因此称为“先进先出”。这种方法确保了公平性,并鼓励市场参与者及时下订单,因为较早的订单具有优先权。
- Pro-Rata 按比例:按比例算法在处理大额交易(例如某些商品或衍生品)的市场中特别有用,它根据订单的大小按比例在相同价格的订单之间分配执行。这种方法平衡了市场,允许适当地执行更大的订单,而不会压垮订单簿。
- Size-Time Priority 大小-时间优先级:与 FIFO 类似,该算法不仅根据入场时间对订单进行优先级排序,还考虑其规模。如果与较小的订单同时下达,则可能会优先考虑较大的订单,这使得它在有效填充大量订单至关重要的市场中特别有用。这种方法可以通过确保大量市价订单不会导致过度波动来帮助稳定价格。
- Maker-Taker Maker-taker (创单-吃单):这种模式激励市场参与者提供流动性 (maker) 或带走流动性 (taker)。将订单添加到订单簿的制造商通常会获得返利或折扣费用。相比之下,通过匹配现有订单来消除流动性的吃单者可能会支付更高的费用。该系统鼓励更多的交易和流动性,这对市场的整体健康至关重要。
- Last-In-First-Out (LIFO) 后进先出 (LIFO):与 FIFO 相反,LIFO 算法优先考虑特定价格水平的最近下达的订单。这在快节奏的交易环境中可能很有用,因为最新的订单反映了最新的市场情绪和定价。
- 最大化体积匹配:一些匹配引擎使用一种算法,通过找到买入订单和卖出订单之间可能的最大匹配来最大化交易量。这种方法可能会略微延迟执行以聚合和匹配更大的交易量,从而可能提高整体市场流动性并减少价格滑点。
每种算法都有特定的目的,并根据交易平台的独特特征和需求进行选择。匹配算法的选择至关重要,因为它直接影响交易执行速度、交易执行的公平性、市场流动性和资产价格的波动性。在快速执行和价格稳定至关重要的环境中,选择正确的匹配算法成为一项战略决策,可以显着影响交易平台的成功及其参与者的满意度。
匹配算法影响
匹配算法通过确保有序和高效的交易执行来显着影响金融市场的动态。这些算法对于建立公平的交易环境至关重要,在这种环境中,订单会根据预定义的规则进行有效匹配。例如,FIFO 和 Pro-Rata 等算法促进了透明度和公平性,并防止任何单一参与者占据市场主导地位,从而保护市场免受潜在操纵,并确保所有交易者的公平竞争环境。 此外,通过优化交易执行以提高流动性和减少价格波动,这些算法有助于实现更稳定和可预测的市场状况。这种稳定性对于吸引更广泛的参与者基础、进一步增强流动性和深化市场至关重要。这些算法的战略应用支持核心交易活动,支撑市场的运营完整性并促进整体市场健康。 通过有效地匹配买卖订单,匹配算法不仅仅是处理交易;它们塑造了市场的特点,影响了市场的流动性和波动性,并确保所有市场参与者都能进行交易和公平。它们的影响不仅限于交易执行,在金融市场的整体结构和功能中也至关重要。
匹配引擎的性能主要通过两个指标来评估:延迟和吞吐量。延迟是指订单下达后执行订单所需的时间。低延迟系统在高频交易环境中至关重要,因为订单在毫秒或微秒内执行。这些系统帮助交易者利用非常短期的市场机会。另一方面,吞吐量(系统在给定时间范围内可以处理的订单数量)对于以零售为主的平台或大批量交易环境中的平台尤为重要。此类平台必须确保引擎能够有效地管理大量交易,尤其是在市场活动高峰期,而不会减慢或崩溃。
在任何金融交易系统中,安全性都是最重要的。匹配引擎必须包含强大的安全措施,以防止数据泄露、未经授权的访问和网络攻击。这些措施可能包括高级加密协议、定期安全审计和遵守国际网络安全标准。匹配引擎的可靠性同样重要。停机的财务影响可能很大,不仅在失去交易机会方面,而且在对平台声誉的潜在损害方面。因此,选择以其正常运行时间和故障转移机制而闻名的匹配引擎对于处理意外问题至关重要。