<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>量化交易：如何建立自己的算法交易业务 on Yuunagi Library</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/index.html</link><description>Recent content in 量化交易：如何建立自己的算法交易业务 on Yuunagi Library</description><generator>Hugo</generator><language>zh-CN</language><copyright>© Yuunagi</copyright><lastBuildDate>Fri, 17 Jul 2026 23:03:29 +0800</lastBuildDate><atom:link href="https://uynajgi.github.io/yuulibrary/books/quant-trading/index.xml" rel="self" type="application/rss+xml"/><item><title>前言</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/preface.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/preface.html</guid><description>&lt;p&gt;根据某些估算，量化交易（Quantitative Trading）或算法交易（Algorithmic Trading）目前在美国的交易量中已占三分之一以上。当然，关于机构交易者在这个领域所使用的高级数学和策略的书籍数不胜数。然而，一个独立的散户交易者能从这些算法中获益吗？一个资源和计算能力有限的个人，能否对数千只股票进行回测并执行自己的策略，从而在与强大的行业参与者的博弈中挑战他们？&lt;/p&gt;
&lt;p&gt;我将向你展示，这实际上是完全可以实现的。&lt;/p&gt;
&lt;h2 id="这本书适合谁"&gt;这本书适合谁？&lt;a class="anchor" href="#%e8%bf%99%e6%9c%ac%e4%b9%a6%e9%80%82%e5%90%88%e8%b0%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我写这本书时心中有两类读者：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;有志成为独立（&amp;quot;散户&amp;quot;）交易者，希望开展量化交易业务的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;金融或其他技术学科（本科或MBA水平）的学生，渴望在大型机构成为量化交易者和投资组合经理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这两类截然不同的读者能从同一套知识和技能中获益吗？管理1亿美元的投资组合和管理10万美元的投资组合之间有什么共同之处吗？我的观点是，一个人先成为盈利的10万美元交易者，再成为盈利的1亿美元交易者，这在逻辑上要合理得多。这一点可以从多个方面得到证明。&lt;/p&gt;
&lt;p&gt;许多传奇的量化对冲基金经理，如前Princeton-Newport Partners的Edward Thorp博士（Poundstone, 2005）和Renaissance Technologies Corp.的Jim Simons博士（Lux, 2000），都是从用自己的钱交易开始职业生涯的。他们并不是先在投行和对冲基金担任投资组合经理，然后再开始自己的基金管理业务。当然，也有很多反例，但这显然是通往财富和学术成就的一条可能之路，而且对于有创业精神的人来说，这是一条更优的路径。&lt;/p&gt;
&lt;p&gt;即使你的目标是成为机构交易者，第一步仍然值得先开展自己的交易业务。物理学家和数学家如今正大批涌入华尔街。在这个圈子里，仅凭一所名校的博士学位已经很难让人印象深刻。进入顶级投行和基金最可靠的方式是什么？证明你有一套系统的盈利方法——换句话说，就是交易记录（Track Record）。且不说作为通往大型机构高薪职业的跳板，拥有作为独立交易者的盈利记录本身就是宝贵的经验。这段经历迫使你专注于简单但有效的策略，而不会被过于理论化或复杂的理论带偏。它还迫使你关注量化交易中那些大多数书上学不到的细节：比如如何构建一个不需要花费一万美元编程资源的下单系统。最重要的是，它迫使你关注风险管理（Risk Management）——毕竟，在这里你面临的是个人破产的可能性。最后，鉴于我曾在不同时期担任过机构和散户量化交易者及策略师，我只希望当初在银行开始职业生涯之前就读过这样一本书——那样我本可以早很多年实现盈利。&lt;/p&gt;
&lt;p&gt;鉴于以上这些前言，我在本书后续内容中将不再为专注于创业型独立交易者以及他们如何自行构建量化交易业务而做任何进一步的解释，同时希望其中许多经验教训在他们通往机构资金管理的道路上也能发挥作用。&lt;/p&gt;
&lt;h2 id="你需要什么背景"&gt;你需要什么背景？&lt;a class="anchor" href="#%e4%bd%a0%e9%9c%80%e8%a6%81%e4%bb%80%e4%b9%88%e8%83%8c%e6%99%af"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;尽管书名听起来很吓人，但你不需要成为数学或计算机方面的奇才，就能以这本书为指南开始量化交易。是的，你确实需要具备一些基本的统计学知识，比如如何计算平均值、标准差，或者如何用一条直线拟合一组数据点。是的，你还需要对Excel有一些基本的了解。但你不需要任何关于随机微积分（Stochastic Calculus）、神经网络（Neural Network）或其他听起来令人印象深刻的高级技术知识。&lt;/p&gt;
&lt;p&gt;虽然仅靠Excel确实能赚到数百万，但还有一个工具，如果你熟练掌握，将使你更高效地回测交易策略，同时也可能让你比其他方式更轻松地获取和处理数据。这个工具叫做MATLAB®，它是一个许多机构量化策略师和投资组合经理使用的数学平台。因此，我将演示如何使用MATLAB来回测大多数策略。实际上，我在附录中简要介绍了如何用MATLAB进行一些基础编程。对许多散户交易者来说，MATLAB的购买价格过于昂贵，但有一些更便宜的替代方案，我将在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;第3章&lt;/a&gt;关于回测的内容中提及。此外，许多大学生可以购买更便宜的学生版MATLAB许可证，或者已经通过学校获得了免费使用权限。&lt;/p&gt;
&lt;h2 id="你会在这本书中发现什么"&gt;你会在这本书中发现什么？&lt;a class="anchor" href="#%e4%bd%a0%e4%bc%9a%e5%9c%a8%e8%bf%99%e6%9c%ac%e4%b9%a6%e4%b8%ad%e5%8f%91%e7%8e%b0%e4%bb%80%e4%b9%88"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这本书绝不是量化交易技术或术语的百科全书。它甚至不会关于具体的盈利策略（尽管你可以改进书中嵌入的几个示例策略，使其相当盈利。）相反，这是一本教你如何自己找到盈利策略的书。它教你一个好策略的特征，如何改进和回测一个策略以确保其具有良好的历史表现，更重要的是确保它在未来也能保持盈利。它教你一种系统化的方法，根据策略的实际盈利情况来扩大或缩减规模。它教你一些在自己家中实施自动执行系统的基础知识。最后，它教你一些风险管理的基础知识——如果你想要长期生存，这是至关重要的——以及如果你想拥有一段愉快（而不仅仅是盈利的）交易生涯，需要避免的一些心理陷阱。&lt;/p&gt;
&lt;p&gt;虽然寻找好策略的基本技术对任何可交易证券都应适用，但我将示例集中在了我个人最熟悉的交易领域：股票的统计套利交易（Statistical Arbitrage）。虽然我在回测那一章讨论了股票、期货和外汇的历史数据来源，但我没有将期权纳入其中，因为那不在我的专业范围内。&lt;/p&gt;
&lt;p&gt;本书的大致结构按照交易者建立量化交易业务需要经历的步骤来组织。这些步骤从寻找可行的交易策略（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch02.html"&gt;第2章&lt;/a&gt;）开始，然后回测策略以确保其至少具有良好的历史表现（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;第3章&lt;/a&gt;），建立业务和技术基础设施（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch04.html"&gt;第4章&lt;/a&gt;），构建自动交易系统来执行你的策略（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch05.html"&gt;第5章&lt;/a&gt;），以及管理持有该策略产生的头寸所涉及的资金和风险（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;）。然后我将在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第7章&lt;/a&gt;介绍大多数专业量化交易者熟悉的若干重要高级概念，最后在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch10.html"&gt;第8章&lt;/a&gt;以对独立交易者如何找到自己的利基市场以及如何发展业务的思考作为总结。我还包含了一个MATLAB使用教程作为附录。&lt;/p&gt;
&lt;p&gt;你会在本书中看到两种不同类型的框内材料：
侧边栏，包含对某个概念的阐述或说明，以及
示例，附有MATLAB或Excel代码。&lt;/p&gt;
&lt;p&gt;对于想了解更多并随时掌握量化交易最新动态、观点和趋势的读者，欢迎访问我的博客 epchan.blogspot.com，我会尽力回答他们的问题，以及我的付费内容网站 epchan.com/subscriptions。我的付费网站包含更高级别的文章，以及几个盈利策略的回测结果。本书读者将可免费访问付费内容，并将在后面的章节中找到进入该网站的密码。&lt;/p&gt;
&lt;p&gt;——ERNEST P. CHAN
多伦多，安大略省
2008年8月&lt;/p&gt;</description></item><item><title>致谢</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/acknowledgments.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/acknowledgments.html</guid><description>&lt;p&gt;我在量化交易方面的许多知识和经验来自我在各大投资银行（Morgan Stanley、Credit Suisse、Maple Securities）和对冲基金（Mapleridge Capital、Millennium Partners、MANE Fund Management）的同事和导师，我非常感谢他们多年来给予的建议、指导和帮助。自从我成为独立交易者和顾问以来，我从与客户、博客读者、同行博主以及各种交易伙伴的讨论中获益匪浅。特别感谢 Steve Halpern 和 Ramon Cummins 阅读了手稿的部分内容并纠正了一些错误；感谢 John Rigg 为我的博客建议了一些主题，其中许多后来被收入本书；感谢 tradingmarkets.com 的主编 Ashton Dorkins 帮助联合发布我的博客；感谢 Yaser Anwar 向他非常受欢迎的投资博客读者宣传我的博客。我还要感谢 John Wiley &amp;amp; Sons 的编辑 Bill Falloon 提议出版这本书，以及我的开发编辑 Emilie Herman 和制作编辑 Christina Verigan 将这本书推至最终完成。最后但同样重要的是，感谢 Ben Xie 坚持认为简洁是最好的策略。&lt;/p&gt;
&lt;p&gt;E.P.C.&lt;/p&gt;
&lt;h2 id="量化交易"&gt;量化交易&lt;a class="anchor" href="#%e9%87%8f%e5%8c%96%e4%ba%a4%e6%98%93"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch01.html"&gt;第1章&lt;/a&gt;&lt;/p&gt;</description></item><item><title>第1章 · 量化交易的定义、参与者与原因</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch01.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch01.html</guid><description>&lt;p&gt;如果你有足够的兴趣拿起这本书，你可能已经听说过量化交易（Quantitative Trading）。但即使对于那些之前从主流媒体了解到这种交易方式的读者来说，也值得澄清一些常见的误解。&lt;/p&gt;
&lt;p&gt;量化交易，也称为算法交易（Algorithmic Trading），是指严格基于计算机算法的买卖决策来进行证券（Securities）交易。这些计算机算法由交易者自行设计并可能自行编程，基于编码策略在历史金融数据上的表现进行测试。&lt;/p&gt;
&lt;p&gt;那么，量化交易是否只是技术分析（Technical Analysis）的一个花哨名称呢？诚然，如果一个基于技术分析的策略能够完全编码为计算机程序，它可以成为量化交易系统的一部分。然而，并非所有的技术分析都能被视为量化交易。例如，某些图表技术，如&amp;quot;寻找头肩形态（Head and Shoulders Pattern）的形成&amp;quot;，可能不会被量化交易者采用，因为它们相当主观，且可能无法量化。&lt;/p&gt;
&lt;p&gt;然而，量化交易不仅仅包括技术分析。许多量化交易系统在其输入中融入了基本面数据（Fundamental Data）：如收入、现金流、负债权益比等数字。毕竟，基本面数据不过是数字，计算机当然能够处理输入其中的任何数字！在判断一家公司相对于同行或其自身历史的当前财务表现时，计算机通常与人类金融分析师一样出色——而且计算机可以同时监控数千家公司。一些先进的量化系统甚至可以将新闻事件作为输入：如今，使用计算机来解析和理解新闻报道已经成为可能。（毕竟，我曾在IBM这个领域担任研究员，从事能够大致理解文档内容的计算机系统研究工作。）&lt;/p&gt;
&lt;p&gt;所以你明白了：只要你能将信息转换为计算机能够理解的比特和字节，它就可以被视为量化交易的一部分。&lt;/p&gt;
&lt;h2 id="谁能成为量化交易者"&gt;谁能成为量化交易者？&lt;a class="anchor" href="#%e8%b0%81%e8%83%bd%e6%88%90%e4%b8%ba%e9%87%8f%e5%8c%96%e4%ba%a4%e6%98%93%e8%80%85"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;确实，大多数机构量化交易者拥有物理学、数学、工程学或计算机科学的高等学位。当你想要分析或交易复杂的衍生工具（Derivatives）时，这种硬科学的训练往往是必要的。但那些工具并非本书的重点。没有任何法律规定只能通过使用复杂的金融工具才能致富。（事实上，交易复杂的抵押贷款支持证券（Mortgage-Backed Securities）可能让人变得非常贫穷，正如2007-08年的金融危机和Bear Stearns的倒闭所表明的那样。）我所关注的量化交易叫做统计套利交易（Statistical Arbitrage Trading）。统计套利涉及最简单的金融工具：股票、期货，有时还有货币。你不需要高等学位就能成为统计套利交易者。如果你修过几门高中水平的数学、统计学、计算机编程或经济学课程，你可能和任何人一样有资格尝试一些基本的统计套利策略。&lt;/p&gt;
&lt;p&gt;好吧，你说，你不需要高等学位，但高等学位肯定在统计套利交易中给你带来优势吧？不一定。我从世界顶尖的物理系之一（康奈尔大学）获得了博士学位。我在世界顶尖的计算机科学研究团队之一工作过（在高科技殿堂：IBM的T. J. Watson研究中心）。然后我在一系列顶级投资银行和对冲基金担任研究员，最终成为交易者，包括Morgan Stanley、Credit Suisse等。作为这些显赫机构的研究员和交易者，我一直努力使用我所掌握的一些高级数学技术和训练，并将它们应用于统计套利交易。在进行了数亿美元的交易之后，结果如何？亏损，更多的亏损，以及望不到头的亏损，给我的雇主和他们的投资者带来了损失。最终，我沮丧地离开了金融行业，在家中腾出一间空余卧室作为交易室，开始交易我所知道的最简单但仍然是量化的策略。这些是任何聪明的高中生都能轻松研究和执行的策略。人生中第一次，我的交易策略变得盈利（其中一个是&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;例3.6&lt;/a&gt;中描述的策略），此后一直如此。我学到的教训？正如Einstein所说：&amp;quot;让一切尽可能简单。&amp;quot;但不要过于简单。（敬请期待：我将在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch10.html"&gt;第8章&lt;/a&gt;详细阐述独立交易者为何能在机构资金管理者的主场击败他们。）&lt;/p&gt;
&lt;p&gt;虽然我是通过相当传统的路径成为量化交易者的，但许多其他人并非如此。典型的独立量化交易者是什么样的人？在我认识的人中，他们包括：一家已倒闭的对冲基金的前交易者、一位曾为券商工作的计算机程序员、一位交易所的前交易者、一位前投资银行家、一位前生物化学家，以及一位建筑师。其中一些人接受过高级技术培训，但另一些人只有高中水平统计学的基础知识。他们大多数人使用Excel等基本工具来回测策略，不过也有一些人可能会雇用编程外包来帮忙。他们大多数人在职业生涯的某个阶段曾与金融界有过专业接触，但现在已经决定独立更符合他们的需求。据我所知，他们大多数人都在独立后做得相当不错，同时享受着独立带来的巨大自由。&lt;/p&gt;
&lt;p&gt;除了通过之前的工作获得了一些金融知识外，这些交易者为独立事业攒下了一笔积蓄，这显然也很重要。当一个人投身于独立交易时，对亏损和与外界隔绝的恐惧是自然的，因此对风险有预先的认识和一些可以依靠的储蓄会有所帮助。重要的是不要有对即时利润的迫切需求来维持日常生活，因为策略有其内在的收益率，是不能急于求成的（见&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;与恐惧相反，你们中的一些人计划交易是出于对刺激和危险的热爱，或者对即时财富即将来临的难以置信的自信。这种情绪带到独立量化交易中也是很危险的。正如我将在本章和本书后续内容中试图说服你的，即时财富不是量化交易的目标。&lt;/p&gt;
&lt;p&gt;因此，理想的独立量化交易者是那些在金融或计算机编程方面有一些先前经验、有足够的储蓄来承受不可避免的亏损和没有收入的时期、并且在恐惧与贪婪之间找到了正确平衡的人。&lt;/p&gt;
&lt;h2 id="量化交易的商业逻辑"&gt;量化交易的商业逻辑&lt;a class="anchor" href="#%e9%87%8f%e5%8c%96%e4%ba%a4%e6%98%93%e7%9a%84%e5%95%86%e4%b8%9a%e9%80%bb%e8%be%91"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们许多人从事量化交易业务是因为它令人兴奋、充满智力刺激、经济回报丰厚，或者也许它是我们唯一擅长的事情。但对于那些可能拥有其他技能和机会的人来说，值得思考量化交易是否是适合你的最佳业务。&lt;/p&gt;
&lt;p&gt;尽管人们谈论着对冲基金的无尽财富和以数十亿美元计的收入，但在很多方面，创办量化交易业务与创办任何小型企业非常相似。我们需要从小处着手，投入有限的资金（也许只有五万美元的初始投资），然后随着我们掌握专业知识和实现盈利而逐步扩大业务规模。&lt;/p&gt;
&lt;p&gt;然而在其他方面，量化交易业务与其他小型企业有非常大的不同。以下是其中一些最重要的方面。&lt;/p&gt;
&lt;h2 id="可扩展性"&gt;可扩展性&lt;a class="anchor" href="#%e5%8f%af%e6%89%a9%e5%b1%95%e6%80%a7"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;与大多数小型企业（某些互联网公司除外）相比，量化交易具有很高的可扩展性（在一定程度上）。只要你的策略持续盈利，你很容易在家中舒适地交易数百万美元。这是因为扩大规模通常只是改变程序中的一个数字。这个数字叫做杠杆（Leverage）。你不需要与银行家或风险投资家谈判来为你的业务借入更多资金。券商随时准备好并且乐意这样做。如果你是自营交易公司（Proprietary Trading Firm）的成员（更多内容见&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch04.html"&gt;第4章&lt;/a&gt;关于建立业务的部分），你甚至可能获得远超美国证券交易委员会（Securities and Exchange Commission, SEC）T法规允许的杠杆。自营交易公司让你在账户中只有五万美元权益的情况下交易价值两百万美元的投资组合（40倍杠杆），这并非闻所未闻。同时，量化交易绝对不是一种快速致富的方案。你应该期望利润稳步增长，但最可能的是不会达到每年200%——不像创办互联网公司或软件公司那样。事实上，正如我将在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;关于资金和风险管理中所解释的那样，过度杠杆化追求一夜暴富是危险的。&lt;/p&gt;
&lt;h2 id="时间需求"&gt;时间需求&lt;a class="anchor" href="#%e6%97%b6%e9%97%b4%e9%9c%80%e6%b1%82"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;经营大多数小型企业需要你大量的时间，至少在初期是这样。量化交易占用你的时间相对较少。就其本质而言，量化交易是一种高度自动化的业务。有时，你越是手动干预系统并覆盖其决策，它的表现就越差。（同样，更多内容见&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;。）&lt;/p&gt;
&lt;p&gt;你需要花多少时间在日常量化交易上，很大程度上取决于你实现的自动化程度。例如，在我曾经工作过的一家对冲基金，有些同事一个月只来办公室一次。其余时间，他们只是坐在家里，偶尔远程监控他们的办公室电脑，那些电脑在为他们交易。&lt;/p&gt;
&lt;p&gt;在自动化方面，我认为自己处于中等水平。我需要花费的最长时间段是在市场开盘前的早晨：我通常需要运行各种程序来下载和处理最新的历史数据，阅读我提醒屏幕上出现的公司新闻，运行程序生成当天的订单，然后在市场开盘前启动几批订单篮子，并启动一个程序在全天自动发布订单。我还根据券商的对账单更新电子表格，记录前一天不同策略的盈亏（Profit and Loss, P&amp;amp;L）。所有这些大约需要两个小时。&lt;/p&gt;
&lt;p&gt;之后，在临近收盘时，我再花大约半小时指示程序平仓各种头寸，手动检查这些平仓指令是否正确传达，并妥善关闭各种自动化程序。&lt;/p&gt;
&lt;p&gt;在开盘和收盘之间，一切应该在自动驾驶中。然而，心有余而力不足：我经常忍不住要看看（有时是多次看看）交易屏幕上各策略的日内盈亏。在极端情况下，我甚至可能被巨大的盈亏波动所吸引，忍不住手动平仓。幸运的是，随着时间的推移，我学会了更好地抵御这种诱惑。&lt;/p&gt;
&lt;p&gt;当我有太多空闲时间时，手动干预的冲动也很强烈。因此，与其只是盯着交易屏幕，实际上更重要的是让自己参与一些其他更健康和愉快的活动，比如在交易日去健身房。&lt;/p&gt;
&lt;p&gt;当我说量化交易占用你的时间很少时，我指的是业务的运营方面。如果你想扩大业务，或者保持当前的利润不因竞争加剧而下降，你需要花时间做研究和回测新策略。但新策略的研究和开发是任何业务中有创造性的部分，它可以随时进行。所以在开盘和收盘之间，我做研究、回复电子邮件、与其他交易者、合作伙伴或客户聊天、去健身房等等。我也在晚上和周末做其中一些工作，但只是在我想做的时候——而不是因为我有义务这样做。&lt;/p&gt;
&lt;p&gt;当我赚取更多收入时，我会投入更多的软件开发资源来进一步自动化我的流程，使程序能够在适当的时间自动启动，知道如何自动下载数据，甚至知道如何解读新闻线上的新闻项目并采取适当行动，在收盘后自动关闭自己。当那一天到来时，日常操作可能完全不需要时间，即使我在度假时也能正常运行，只要它能在出问题时向我的手机或技术支持服务发出警报。简而言之，如果你珍惜你的休闲时间，或者你需要时间和资金来探索其他业务，量化交易就是适合你的业务。&lt;/p&gt;
&lt;h2 id="非必要的市场营销"&gt;非必要的市场营销&lt;a class="anchor" href="#%e9%9d%9e%e5%bf%85%e8%a6%81%e7%9a%84%e5%b8%82%e5%9c%ba%e8%90%a5%e9%94%80"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是量化交易与其他小型企业之间最大、最明显的区别。市场营销对大多数小型企业至关重要——毕竟，你的收入来自其他人，他们的购买决策基于价格以外的因素。在交易中，金融市场上的对手方只基于价格做出购买决定。除非你在为他人管理资金（这超出了本书的范围），否则在量化交易业务中绝对不需要做营销。这看起来可能显而易见且微不足道，但实际上是一个重要的区别，因为量化交易业务让你可以专注于你的产品（策略和软件），而不必关注任何与影响他人对你看法相关的事情。对许多人来说，这可能是创办自己的量化交易业务的终极魅力。&lt;/p&gt;
&lt;h2 id="前进之路"&gt;前进之路&lt;a class="anchor" href="#%e5%89%8d%e8%bf%9b%e4%b9%8b%e8%b7%af"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果你确信自己想成为一名量化交易者，一些问题会紧随其后：你如何找到合适的策略进行交易？在投入任何时间进行回测之前，你如何区分好策略和坏策略？你如何严格地回测它们？如果回测表现良好，你需要采取哪些步骤来实施该策略——从业务结构到技术基础设施？如果该策略在初步的实盘交易中盈利，如何扩大资金规模使其成为不断增长的收入流，同时管理交易中不可避免的（但希望只是偶尔出现的）亏损？量化交易的这些具体细节将在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch02.html"&gt;第2章&lt;/a&gt;到&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;中逐一解决。&lt;/p&gt;
&lt;p&gt;虽然要达到持续增长盈利这一最终目的地所需经历的流程清单看起来很长且令人生畏，但实际上它可能比许多其他业务更快、更容易。当我刚开始成为独立交易者时，我只用了三个月就找到并回测了我的第一个新策略，开设了一个十万美元资金的新券商账户，实施了执行系统，并开始交易该策略。该策略在第一个月就立即盈利了。在互联网泡沫时代，我创办了一家互联网软件公司。投资额是前者的三倍，人力是五倍，花了24倍的时间才发现商业模式行不通，结果包括我在内的所有投资者都损失了100%的投资。与那段经历相比，量化交易并盈利确实是一件轻松的事。&lt;/p&gt;</description></item><item><title>第2章 · 寻找策略灵感</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch02.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch02.html</guid><description>&lt;p&gt;我们能从哪里找到好策略？&lt;/p&gt;
&lt;p&gt;令人意外的是：寻找交易创意实际上并不是建立量化交易（Quantitative Trading）业务最难的部分。任何时候都有成百上千个交易创意在公共领域流通，任何人都可以几乎零成本获取。许多交易创意的作者会公开他们的完整方法论和回测（Backtest）结果。获取渠道包括金融投资类书籍、报刊杂志、主流媒体网站、线上或就近公共图书馆可获取的学术论文、交易者论坛、博客等等。我在表2.1中列出了一些我认为有价值的来源，但这只是冰山一角。&lt;/p&gt;
&lt;p&gt;过去，出于学术偏好，我经常翻阅商学院教授发布的各类预印本，或下载最新的线上金融期刊文章来筛选潜在的好策略。事实上，我独立交易后的第一个策略就源自此类学术研究。（它是&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第7章&lt;/a&gt;中提到的PEAD策略的一个版本。）但后来我越来越发现，学术界描述的许多策略要么过于复杂，要么已经过时（曾经盈利的策略可能因竞争而失效），要么需要昂贵的数据来回测（如历史基本面数据）。此外，许多学术策略仅适用于小盘股（Small-Cap Stocks），而小盘股的流动性不足可能导致实际交易利润远不及回测所示。&lt;/p&gt;
&lt;p class="caption"&gt;
 表2.1 交易创意来源
&lt;/p&gt;

&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;网址&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;学术类&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;商学院金融教授个人网站&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.hbs.edu/research/research.html&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;社会科学研究网络&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.ssrn.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;国家经济研究局&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.nber.org&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;商学院量化金融研讨会&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.ieor.columbia.edu/seminars/financialengineering&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Mark Hulbert 在《纽约时报》周日商业版的专栏&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.nytimes.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;《经济学人》杂志金融版 Buttonwood 专栏&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.economist.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;金融网站与博客&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Yahoo! Finance&lt;/td&gt;
					&lt;td&gt;finance.yahoo.com&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TradingMarkets&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.TradingMarkets.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Seeking Alpha&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.SeekingAlpha.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TheStreet.com&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.TheStreet.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;The Kirk Report&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.TheKirkReport.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Alea Blog&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.aleablog.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Abnormal Returns&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.AbnormalReturns.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Brett Steenbarger Trading Psychology&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.brettsteenbarger.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;本人博客&lt;/td&gt;
					&lt;td&gt;epchan.blogspot.com&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;交易者论坛&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Elite Trader&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.Elitetrader.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Wealth-Lab&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.wealth-lab.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;报刊杂志&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Stocks, Futures and Options 杂志&lt;/td&gt;
					&lt;td&gt;&amp;lt;www.sfomag.com&amp;gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这并不是说你找不到金矿——只要足够坚持就行——但我发现许多交易者论坛或博客提出的策略可能更简单且同样盈利。你可能怀疑人们是否真的会在公共空间公开真正盈利的策略。毕竟，这种公开不是会增加竞争、降低策略盈利能力吗？你的怀疑是对的：这些地方的大多数现成策略确实经不起严格回测。与学术研究一样，交易者论坛上的策略可能只在短时间内有效，或仅适用于某类股票，或仅在忽略交易成本（Transaction Costs）时有效。但关键在于，你往往可以修改基础策略使其盈利。（&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;第3章&lt;/a&gt;将详细讨论这些注意事项以及基础策略的常见变体。）&lt;/p&gt;</description></item><item><title>第3章 · 回测</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html</guid><description>&lt;p&gt;传统投资管理流程与量化投资流程的一个关键区别在于，量化投资策略可以进行回测（Backtesting），以检验其在过去的表现。即使你找到了一个描述详尽、历史绩效数据齐全的策略，你仍然需要自己进行回测。这项工作有多重目的。首先，复现研究过程可以确保你完全理解了策略，并精确地将其复现为可执行的交易系统（Trading System）。正如任何医学或科学研究一样，复现他人的结果也能确保原始研究没有犯下困扰这一过程的常见错误。但回测的意义不止于尽职调查，亲手进行回测还可以让你尝试原始策略的各种变体，从而对策略进行精炼和改进。&lt;/p&gt;
&lt;p&gt;在本章中，我将介绍可用于回测的常见平台、对回测有用的各种历史数据来源、回测应提供的一组最低标准绩效指标、需要避免的常见陷阱，以及对策略的简单改进和优化。我还将展示几个完整的回测案例，以阐述所述的原理和技术。&lt;/p&gt;
&lt;h2 id="常用回测平台"&gt;常用回测平台&lt;a class="anchor" href="#%e5%b8%b8%e7%94%a8%e5%9b%9e%e6%b5%8b%e5%b9%b3%e5%8f%b0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;市面上有众多专为回测设计的商业平台，其中一些价格高达数万美元。为了与本书关注初创企业的定位保持一致，我将从我熟悉且可以经济购买、广泛使用的平台开始介绍。&lt;/p&gt;
&lt;h3 id="excel"&gt;Excel&lt;a class="anchor" href="#excel"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这是交易者——无论是散户还是机构——最基础也最常用的工具。如果你能编写Visual Basic宏，还可以进一步增强其功能。Excel的美妙之处在于&amp;quot;所见即所得&amp;quot;（WYSIWYG）。数据和程序都在同一个地方，没有任何隐藏。此外，一种常见的回测陷阱——&amp;quot;前视偏差&amp;quot;（Look-Ahead Bias，详见后文解释）——在Excel中不太可能发生（除非你使用宏，那就不再是所见即所得），因为你可以轻松地在电子表格中将日期与各种数据列和信号对齐。Excel的另一个优势在于，回测和实盘交易生成通常可以在同一个电子表格中完成，消除了重复编程的工作量。Excel的主要缺点是它只能用于回测相对简单的模型。但是，正如我在上一章所解释的，简单的模型往往就是最好的！&lt;/p&gt;
&lt;h3 id="matlab"&gt;MATLAB&lt;a class="anchor" href="#matlab"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;MATLAB&lt;sup&gt;R&lt;/sup&gt;（www.mathworks.com）是大型机构中量化分析师和交易者最常用的回测平台之一。它非常适合测试涉及大规模股票投资组合的策略。（想象一下用Excel回测一个涉及1,500只股票代码的策略——虽然可行，但相当痛苦。）MATLAB内置了大量高级统计和数学模块，因此如果交易算法涉及一些复杂但常见的数学概念，交易者无需重新发明轮子。&lt;/p&gt;
&lt;p&gt;（一个很好的例子是主成分分析（Principal Component Analysis）——在统计套利（Statistical Arbitrage）交易的因子模型（Factor Model）中经常使用，而在其他编程语言中实现起来相当麻烦。参见&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第7章&lt;/a&gt;的示例7.4。）互联网上还有大量第三方免费软件可供下载，其中许多对量化交易非常有用（例如在示例7.2中使用的协整（Cointegration）软件包）。最后，MATLAB在获取包含金融信息的网页并将其解析为有用格式（即所谓的网络爬取（Web Scraping））方面非常有用。示例3.1展示了如何实现这一点。&lt;/p&gt;
&lt;p&gt;尽管该平台看起来很复杂，但实际学起来非常容易（至少对于基本用法而言），使用该语言编写完整的回测程序也非常快。MATLAB的主要缺点是价格相对较高：获取许可证需要超过1,000美元。不过，市场上有几个MATLAB的克隆版本，你可以用它们编写和使用与MATLAB非常相似的代码：
O-Matrix（www.omatrix.com）
Octave（www.gnu.org/software/octave）
Scilab（www.scilab.org）
这些克隆版本可能只需几百美元，或者完全免费。毫不奇怪，克隆版本越贵，与MATLAB程序的兼容性就越好。（当然，如果你打算自己编写所有程序而不使用任何第三方代码，兼容性就不是问题了。但那样你就放弃了使用该语言的主要优势之一。）MATLAB的另一个缺点是它对回测非常有用，但作为执行平台却很笨拙。因此，一旦完成了策略回测，你通常需要用另一种语言构建单独的执行系统。尽管有这些缺点，MATLAB在量化交易社区中已得到广泛使用。我将在本书的所有回测示例中包含MATLAB代码，并在附录中提供MATLAB语言本身的快速概览。&lt;/p&gt;
&lt;h3 id="示例31使用matlab从网页抓取金融数据"&gt;示例3.1：使用MATLAB从网页抓取金融数据&lt;a class="anchor" href="#%e7%a4%ba%e4%be%8b31%e4%bd%bf%e7%94%a8matlab%e4%bb%8e%e7%bd%91%e9%a1%b5%e6%8a%93%e5%8f%96%e9%87%91%e8%9e%8d%e6%95%b0%e6%8d%ae"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MATLAB不仅对数值计算有用&lt;/span&gt;，对文本解析也很有用。下面是一个使用&lt;span class="n"&gt;MATLAB从Yahoo&lt;/span&gt;! &lt;span class="n"&gt;Finance获取股票历史价格信息的示例&lt;/span&gt;：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% 确保之前定义的变量被清除。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;IBM&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% 关注的股票&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 获取网页&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;historicalPriceFile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="c"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;urlread&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://finance.yahoo.com/q/hp?s=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 将日期字段提取到元胞数组中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dateField&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="c"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;historicalPriceFile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;&amp;#39;&amp;lt;td class=&amp;#34;yfnc_tabledata1&amp;#34; nowrap align=&amp;#34;right&amp;#34;&amp;gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;([\d\w-]+)&amp;lt;/td&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;tokens&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 将数字字段提取到元胞数组中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;numField&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;historicalPriceFile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;&amp;#39;&amp;lt;td class=&amp;#34;yfnc_tabledata1&amp;#34; align=&amp;#34;right&amp;#34;&amp;gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;([\d\.]+)&amp;lt;/td&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;tokens&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 转换为字符串元胞数组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dates&lt;/span&gt;&lt;span class="p"&gt;=[&lt;/span&gt;&lt;span class="n"&gt;dateField&lt;/span&gt;&lt;span class="p"&gt;{:}]&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 转换为字符串元胞数组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;numField&lt;/span&gt;&lt;span class="p"&gt;=[&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt;&lt;span class="p"&gt;{:}]&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 转换为双精度数组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 开盘价&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 最高价&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;lo&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 最低价&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cl&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 收盘价&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vol&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 成交量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;adjCl&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;str2double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numField&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% 调整后收盘价&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;该程序文件可从 epchan.com/book/example3_1.m 下载，用户名和密码均为&amp;quot;sharperatio&amp;quot;。这个网络爬取脚本有一个局限性：它一次只能获取一个网页。由于Yahoo!将其历史数据分布在多个页面上，它并不适合获取IBM的完整价格历史。不过，它简单地展示了MATLAB的文本处理功能。&lt;/p&gt;</description></item><item><title>第4章 · 搭建你的交易业务</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch04.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch04.html</guid><description>&lt;p&gt;在本章中，我们将暂时放下交易的技术层面，转而关注其业务层面。假设你的目标是保持独立交易者身份而非为资管机构工作，交易业务的结构选择就很重要。你必须做出的主要选择是开设零售经纪商账户还是加入自营交易公司（Proprietary Trading Firm）。下一步是确定经纪商或交易公司的哪些功能对你重要。最后，你必须决定需要什么样的物理交易基础设施来执行你的量化策略。&lt;/p&gt;
&lt;h2 id="业务结构零售还是自营"&gt;业务结构：零售还是自营？&lt;a class="anchor" href="#%e4%b8%9a%e5%8a%a1%e7%bb%93%e6%9e%84%e9%9b%b6%e5%94%ae%e8%bf%98%e6%98%af%e8%87%aa%e8%90%a5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;作为交易者，你可以选择完全独立或半独立。要完全独立，你可以简单地开设一个零售经纪商账户，存入一些现金，然后开始交易。没有人会质疑你的策略，也没有人会指导你的交易。此外，你的杠杆受美国证券交易委员会（SEC）T条例（Regulation T）限制——如果你持有隔夜头寸，杠杆大约是你权益的两倍。自然，所有的利润和亏损都将归你所有。&lt;/p&gt;
&lt;p&gt;然而，你可以选择加入所谓的&amp;quot;自营交易公司&amp;quot;，如 Bright Trading、ECHOtrade 或 Genesis Securities，成为其会员。要成为此类公司的会员，你必须通过全美证券交易商协会（NASD）系列7考试，获得经纪商注册代表资格。你仍然需要投入自己的资金来开立账户，但你将获得远高于零售账户的杠杆（或&amp;quot;购买力&amp;quot;）。根据你投入的资金量，你可能保留全部利润或其中的一定比例。但在责任方面，你的损失仅限于初始投资。（实际上，如果你成立S型公司或有限责任公司（LLC）并通过该实体在零售经纪商开设账户，责任也是有限的。）通常，你还可以从公司获得培训，可能需要额外付费。你还将受到自营交易公司对其会员施加的各种规则和法规的约束，以及SEC或NASD施加的规则。&lt;/p&gt;
&lt;p&gt;当我说到自营交易公司施加的规则和法规时，我把它们描述得像是坏事。但实际上，其中一些规则（如禁止交易仙股（Penny Stocks）或禁止隔夜持有空头头寸）实际上是保护你自身的风险管理措施。通常，当行情好的时候，交易者会抱怨这些限制了他们灵活性和盈利性的约束。他们甚至可能决定开设自己的零售交易账户，自行交易。然而，当他们遭受（几乎不可避免的）大幅回撤时，他们会希望有人在那里约束他们的风险偏好，并后悔这种不受约束的自由。（我们内心的少年毕竟从未离开。）&lt;/p&gt;
&lt;p&gt;选择零售还是自营交易公司，通常取决于你的资金需求、策略风格和技能水平。例如，如果你运行一个低风险、市场中性的策略，但需要远高于T条例允许的杠杆才能产生良好回报，自营账户可能更适合你。然而，如果你从事不需要太多资金的高频期货交易，零售账户可能会帮你节省大量成本和麻烦。同样，一个经验丰富、有良好风险管理实践和情绪稳定性的交易者可能不需要自营公司提供的指导，但经验较少的交易者可能受益于这些约束。&lt;/p&gt;
&lt;p&gt;还有一个考量适用于那些发现了一些独特、高盈利策略的人。在这种情况下，你可能更倾向于开设零售交易账户，因为如果你通过自营账户交易，你的自营交易公司会发现你的高盈利策略，并可能用大量自有资金&amp;quot;搭便车&amp;quot;（Piggyback）你的策略。随着时间推移，你的策略将承受更多的市场冲击交易成本。&lt;/p&gt;
&lt;p&gt;表4.1总结了每种选择的优缺点。&lt;/p&gt;
&lt;p&gt;最后一点：有些人可能认为加入自营交易公司有税收优势，因为任何交易亏损都可以从当前收入中扣除，而非作为资本亏损扣除。实际上，即使你有零售经纪商账户，你也可以选择申请交易者税务身份（Trader Tax Status），这样你的交易亏损可以抵消其他收入，而不仅仅是其他资本收益。关于交易业务的税收考量详情，你可以访问 &amp;lt;www.greencompany.com&amp;gt; 等网站。&lt;/p&gt;
&lt;p class="caption"&gt;
 表4.1 零售交易与自营交易对比
&lt;/p&gt;

&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;问题&lt;/th&gt;
					&lt;th&gt;零售交易&lt;/th&gt;
					&lt;th&gt;自营交易&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;开户法律要求&lt;/td&gt;
					&lt;td&gt;无。&lt;/td&gt;
					&lt;td&gt;需通过NASD系列7考试并满足其他NASD限制。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;初始资金要求&lt;/td&gt;
					&lt;td&gt;较高。&lt;/td&gt;
					&lt;td&gt;较低。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;可用杠杆或购买力&lt;/td&gt;
					&lt;td&gt;由SEC T条例决定。一般隔夜持仓2倍杠杆，日内持仓4倍。&lt;/td&gt;
					&lt;td&gt;由公司决定。日内或对冲持仓可达20倍或更高。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;亏损责任&lt;/td&gt;
					&lt;td&gt;无限，除非通过S型公司或LLC开户。&lt;/td&gt;
					&lt;td&gt;仅限于初始投资。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;佣金和费用&lt;/td&gt;
					&lt;td&gt;低佣金（可能低于每股0.5美分）和最低数据月费。&lt;/td&gt;
					&lt;td&gt;佣金较高且月费可观。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;经纪商破产风险&lt;/td&gt;
					&lt;td&gt;无风险。账户由SIPC（证券投资者保护公司）承保。&lt;/td&gt;
					&lt;td&gt;有风险。账户无保险。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;培训、指导、辅导&lt;/td&gt;
					&lt;td&gt;无。&lt;/td&gt;
					&lt;td&gt;可能提供此类服务，有时需付费。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;交易秘密泄露风险&lt;/td&gt;
					&lt;td&gt;风险很小或无，特别是零售经纪商无自营交易部门时。&lt;/td&gt;
					&lt;td&gt;有风险。管理层容易&amp;quot;搭便车&amp;quot;盈利策略。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;交易风格限制&lt;/td&gt;
					&lt;td&gt;无限制，只要SEC允许。&lt;/td&gt;
					&lt;td&gt;可能有限制，如禁止隔夜持有空头头寸。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;风险管理&lt;/td&gt;
					&lt;td&gt;主要自我管理。&lt;/td&gt;
					&lt;td&gt;更全面，由管理层施加。&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="选择经纪商或自营交易公司"&gt;选择经纪商或自营交易公司&lt;a class="anchor" href="#%e9%80%89%e6%8b%a9%e7%bb%8f%e7%ba%aa%e5%95%86%e6%88%96%e8%87%aa%e8%90%a5%e4%ba%a4%e6%98%93%e5%85%ac%e5%8f%b8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;许多交易者只用一个标准来选择经纪商或自营交易公司：佣金率。这显然是一个重要的标准，因为如果交易策略回报率低，高佣金可能使其变得不盈利。然而，还有其他重要的考量。&lt;/p&gt;
&lt;p&gt;佣金实际上只占你总交易成本的一部分，有时甚至是一小部分。经纪商的执行速度以及其对所谓&amp;quot;暗池&amp;quot;（Dark Pool）流动性的获取也会影响你的交易成本。暗池流动性由在交易所外撮合的机构订单构成，或者来自经纪商内部客户订单的交叉撮合。这些订单不会显示为买卖报价。提供暗池流动性的一些&amp;quot;另类交易系统&amp;quot;（Alternative Trading System）包括 Liquidnet 和 ITG 的 Posit。你的经纪商可能使用其中一个或多个提供商，也可能只使用其内部交叉网络，或者完全不使用另类交易系统。&lt;/p&gt;
&lt;p&gt;有时，大型经纪商凭借其先进的执行系统和对更深暗池流动性的高速访问，提供的更优执行价格将超过其较高佣金带来的成本。除非你实际上同时在多个经纪商交易并比较实际执行成本，否则这种成本收益分析不容易进行。&lt;/p&gt;</description></item><item><title>第5章 · 资金与风险管理</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch05.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch05.html</guid><description>&lt;p&gt;所有交易策略都会遇到偶尔的亏损，技术上称为回撤（Drawdown）。回撤可能持续几分钟到几年不等。要从量化交易业务中获利，必须以限制回撤到可承受水平的方式来管理风险，同时又要能够使用最优杠杆来实现财富的最大增长。此外，如果你有多个策略，还需要找到在它们之间最优分配资金的方法，以最大化整体的风险调整后收益（Risk-Adjusted Return）。&lt;/p&gt;
&lt;p&gt;资金的最优分配和杠杆的最优使用，以在风险管理和最大增长之间找到恰当平衡，是本章的重点。我们使用的核心工具是Kelly公式（Kelly Formula）。&lt;/p&gt;
&lt;h2 id="最优资本配置与杠杆"&gt;最优资本配置与杠杆&lt;a class="anchor" href="#%e6%9c%80%e4%bc%98%e8%b5%84%e6%9c%ac%e9%85%8d%e7%bd%ae%e4%b8%8e%e6%9d%a0%e6%9d%86"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;假设你计划交易多个策略，每个策略都有自己的预期收益和标准差。应该如何在这些策略之间以最优方式分配资金？此外，整体杠杆（Portfolio Leverage，即投资组合规模与账户权益的比率）应该是多少？我在前言中提到的Edward Thorp博士在他的一篇论文中就此主题写了一篇优秀的阐述文章（Thorp, 1997），本章将紧密跟随他的讨论。（Thorp博士的讨论以证券组合为中心，而我的讨论围绕策略组合构建。不过，数学原理几乎相同。）&lt;/p&gt;
&lt;p&gt;每个优化问题都从目标开始。我们的目标是最大化长期财富——我认为这对个人投资者来说是毫无争议的。最大化长期财富等同于最大化投资组合的长期复合增长率（Compounded Growth Rate）$g$。这个目标隐含地意味着必须避免破产（Ruin），即因为亏损导致权益归零或变为负数。因为如果破产在某个时刻以非零概率可达，长期财富必然为零，长期增长率亦然。&lt;/p&gt;
&lt;p&gt;（在所有讨论中，我假设我们将所有交易利润再投资，因此杠杆化的复合增长率才是最终重要的。）&lt;/p&gt;
&lt;p&gt;我将做一个近似假设：每个交易策略$i$的收益概率分布是高斯分布（Gaussian Distribution），具有固定的均值$m_{i}$和标准差$s_{i}$。（这些收益率应该是扣除所有融资成本后的超额收益率。）这是金融中的常见近似，但可能相当不准确。金融市场中某些重大损失的发生频率远高于高斯分布所允许的水平（或者说，发生的幅度远大于高斯分布所允许的）。不过，就像其他科学和工程领域一样，金融研究也从最简单的模型和最粗糙的近似开始，我将在本章后面讨论如何修正这种不准确性。&lt;/p&gt;
&lt;p&gt;让我们用列向量${\cal F} ^{\ast} = ( f_{1} ^{\ast}$ $f_{2} ^{*} , \ldots , f_{n} ^{*} ) ^{\mathrm{T}}$表示分配给每个策略的最优资金比例。这里T表示转置（Transpose）。&lt;/p&gt;
&lt;p&gt;根据我们的优化目标和高斯假设，Thorp博士已经证明最优配置为&lt;/p&gt;
$$
F^{*} = C^{- 1} M
$$&lt;p&gt;这里，$C$是协方差矩阵（Covariance Matrix），矩阵元素$C_{i j}$是第$i$个和第$j$个策略收益的协方差，${}^{-1}$表示矩阵逆，$M = ( m_{1} , m_{2} , \ldots , m_{\bar{n}} ) ^{T}$是策略平均收益率的列向量。注意，这些收益率是单期的、简单的（非复合的）、无杠杆的收益率。例如，如果策略是做多1美元A股票同时做空1美元B股票，在一个时期内获得0.10美元利润，那么$m$就是0.05，无论账户权益是多少。&lt;/p&gt;
&lt;p&gt;如果我们假设策略之间统计独立，协方差矩阵变成对角矩阵，对角元素等于各策略的方差。这导致一个特别简单的公式：&lt;/p&gt;
$$
f_{i} = m_{i} / s_{i} ^{2}
$$&lt;p&gt;这就是著名的Kelly公式（关于这个公式的许多有趣故事，参见Poundstone, 2005），应用于连续金融（Continuous Finance）而非离散结果的赌博。它给出了特定交易策略应使用的最优杠杆。&lt;/p&gt;
&lt;p&gt;感兴趣的读者可以在本章末尾的附录中找到Kelly公式在简单单策略情况下的推导。&lt;/p&gt;
&lt;h2 id="例51一个有趣的谜题或风险为何对你不利"&gt;例5.1：一个有趣的谜题（或风险为何对你不利）*&lt;a class="anchor" href="#%e4%be%8b51%e4%b8%80%e4%b8%aa%e6%9c%89%e8%b6%a3%e7%9a%84%e8%b0%9c%e9%a2%98%e6%88%96%e9%a3%8e%e9%99%a9%e4%b8%ba%e4%bd%95%e5%af%b9%e4%bd%a0%e4%b8%8d%e5%88%a9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这里有一个可能让许多专业交易者困惑的小谜题。假设某只股票呈现真正的（几何）随机游走（Random Walk），即每分钟有50%的概率上涨1%或下跌1%。如果你买入这只股票，从长期来看（忽略融资成本），你最可能赚钱、赔钱还是不赚不赔？&lt;/p&gt;
&lt;p&gt;大多数交易者会脱口而出&amp;quot;不赚不赔！&amp;quot;，但这是错误的。正确答案是你将会赔钱，速率为每分钟0.005%（或0.5个基点）！这是因为对于几何随机游走，平均复合收益率不是短期（或单期）收益率$m$（此处为0），而是$g = m - s^{2} / 2$。这来自本章附录中给出的复合增长率$g(f)$的一般公式，将杠杆$f$设为1、无风险利率$r$设为0。这也与以下事实一致：一组数的几何平均值总是小于算术平均值（除非所有数相同，此时两者相等）。当我们假设收益率的算术平均值为零时，给出平均复合收益率的几何平均值必然为负数。&lt;/p&gt;</description></item><item><title>第6章 · 量化交易专题</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html</guid><description>&lt;p&gt;本书前六章涵盖了研究、开发和执行你自己的量化策略所需的大部分基础知识。本章将更详细地解释量化交易中的重要主题。这些主题构成了统计套利交易（Statistical Arbitrage）的基础，大多数量化交易者即使不是精通所有这些话题，也至少对其中一些非常熟悉。它们对于培养我们的交易直觉也非常有帮助。&lt;/p&gt;
&lt;p&gt;我将描述两类基本的交易策略：均值回复（Mean-Reverting）策略与动量（Momentum）策略。均值回复和趋势行为的时期是一些交易者所说的&amp;quot;体制&amp;quot;（Regimes）的例子，而不同体制之间的转换是本文讨论的一个话题。均值回复策略的数学依据来源于时间序列的平稳性（Stationarity）和协整（Cointegration）概念，我接下来将予以介绍。然后，我将描述一个许多对冲基金用来管理大型投资组合的理论，这个理论曾给他们的业绩带来了很大波动：即因子模型（Factor Models）。交易者经常讨论的其他策略类别包括季节性交易和高频交易。所有交易策略都需要一种退出仓位的方式；我将描述不同的逻辑方法。最后，我将思考如何最好地提高策略的收益：是通过更高的杠杆，还是交易更高贝塔（Beta）的股票？&lt;/p&gt;
&lt;h2 id="均值回复策略与动量策略"&gt;均值回复策略与动量策略&lt;a class="anchor" href="#%e5%9d%87%e5%80%bc%e5%9b%9e%e5%a4%8d%e7%ad%96%e7%95%a5%e4%b8%8e%e5%8a%a8%e9%87%8f%e7%ad%96%e7%95%a5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;只有当证券价格是均值回复的或趋势性的，交易策略才能盈利。否则，价格是随机游走（Random Walking）的，交易将是徒劳的。如果你相信价格是均值回复的，并且目前相对于某个参考价格较低，你应该现在买入并计划以后在更高价位卖出。然而，如果你相信价格是趋势性的并且目前较低，你应该（卖空）现在卖出并计划以后在更低价格买入。如果你认为价格偏高，则情况相反。&lt;/p&gt;
&lt;p&gt;学术研究表明，股票价格平均而言非常接近随机游走。然而，这并不意味着在某些特殊条件下，它们不能表现出一定程度的均值回复或趋势行为。此外，在任何给定时间，股票价格可能同时具有均值回复和趋势性，这取决于你所关注的时间范围。构建交易策略本质上是确定在特定条件和特定时间范围下，价格将是均值回复的还是趋势性的，以及在任何给定时间的初始参考价格应该是什么。（当价格呈趋势性时，也可以说它们具有&amp;quot;动量&amp;quot;，因此相应的交易策略通常被称为动量策略。）&lt;/p&gt;
&lt;p&gt;有些人喜欢将价格可以同时具有均值回复性和趋势性这一现象描述为股票价格的&amp;quot;分形&amp;quot;（Fractal）性质。技术分析师或图表分析师喜欢使用所谓的艾略特波浪理论（Elliott Wave Theory）来分析此类现象。还有一些人喜欢使用机器学习或人工智能（特别是隐马尔可夫模型、卡尔曼滤波器、神经网络等技术）来发现价格是处于均值回复还是趋势性的&amp;quot;体制&amp;quot;中。就我个人而言，我发现这种关于均值回复或动量的一般理论并不特别有用。（不过请参阅关于体制转换的章节，该节描述了一种对某只特定股票预测体制转换的看似成功的方法。）相反，我认为通常可以安全地假设，除非公司的预期收益发生了变化，否则股票价格将是均值回复的。事实上，金融研究人员（Khandani and Lo, 2007）构建了一个非常简单的短期均值回复模型，该模型在许多年中都能盈利（在扣除交易成本之前）。当然，均值回复是否足够强且足够一致，以至于我们在考虑交易成本后仍能盈利交易，这是另一回事，这需要交易者你自己去找到那些均值回复强且一致的特殊情况。&lt;/p&gt;
&lt;p&gt;尽管均值回复相当普遍，但回测一个盈利的均值回复策略可能相当危险。&lt;/p&gt;
&lt;p&gt;许多历史金融数据库中的价格报价包含错误。任何此类错误都倾向于人为地夸大均值回复策略的表现。原因很容易理解：均值回复策略会在一个远低于某个移动平均线的虚假报价上买入，并在下一个与移动平均线一致的正确报价上卖出，从而获利。在完全信任均值回复策略的回测表现之前，必须确保数据已彻底清除此类虚假报价。&lt;/p&gt;
&lt;p&gt;生存者偏差（Survivorship Bias）也会不成比例地影响均值回复策略的回测，正如我在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;第3章&lt;/a&gt;中讨论的那样。经历过极端价格波动的股票很可能被收购（价格涨得很高）或破产（价格跌至零）。均值回复策略会做空前者、买入后者，在两种情况下都会亏损。然而，如果你的历史数据库存在生存者偏差，这些股票可能根本不会出现在数据库中，从而人为地夸大了你的回测表现。你可以查阅表3.1来了解哪些数据库存在生存者偏差。&lt;/p&gt;
&lt;p&gt;动量可以由信息的缓慢扩散产生——随着越来越多的人意识到某些新闻，更多人决定买入或卖出某只股票，从而推动价格朝同一方向移动。我之前暗示过，当预期收益发生变化时，股票价格可能表现出动量。当一家公司公布其季度收益时，投资者可能逐渐意识到这一公告，或者他们通过逐步执行大额订单来应对这一变化（以最小化市场影响）。而这确实导致了一种被称为盈余公告后漂移（Post Earnings Announcement Drift，简称PEAD）的动量策略。（关于这一策略的一篇特别有用且附有大量参考文献的文章，请参阅 quantlogic.blogspot.com/2006/03/pocket-phdpost-earning-announcment.html。）本质上，该策略建议你在股票收益超过预期时买入，在低于预期时卖空。更广泛地说，许多新闻公告都有可能改变市场对未来收益的预期，从而有可能触发一个趋势期。至于什么样的新闻会触发这种趋势，以及趋势期将持续多久，这需要你自己去发现。&lt;/p&gt;
&lt;p&gt;除了信息的缓慢扩散，动量还可能由大型投资者因流动性需求或私人投资决策而逐步执行大额订单所引起。这一原因可能比任何其他原因都更能解释短期动量现象。然而，随着大型券商采用日益复杂的执行算法，越来越难以确定观察到的动量背后是否有一个大订单。&lt;/p&gt;
&lt;p&gt;动量还可能由投资者的羊群行为（Herd Behavior）产生：投资者将他人（可能是随机和无意义的）买入或卖出决策解读为自己交易决策的唯一依据。正如耶鲁大学经济学家Robert Schiller在《纽约时报》（Schiller, 2008）中所说，没有人拥有做出完全知情的金融决策所需的全部信息。人们不得不依赖他人的判断。然而，没有可靠的方法来辨别他人判断的质量。更成问题的是，人们在不同的时间做出金融决策，并非在市政厅集会并一劳永逸地达成共识。第一个以高价买房的人是在&amp;quot;告知&amp;quot;其他人房屋是好的投资，这导致另一个人做出相同的决定，以此类推。因此，第一个买家可能错误的决定作为&amp;quot;信息&amp;quot;传播给了一群人。&lt;/p&gt;
&lt;p&gt;不幸的是，由这两种原因（私人流动性需求和羊群行为）产生的动量体制具有高度不可预测的时间范围。你怎么知道一个机构需要执行多大的订单？你如何预测&amp;quot;羊群&amp;quot;何时大到足以形成踩踏？那个臭名昭著的临界点在哪里？如果我们没有可靠的方法来估计这些时间范围，我们就无法基于这些现象进行盈利的动量交易。在后面关于体制转换的章节中，我将考察一些预测这些临界或&amp;quot;转折&amp;quot;点的尝试。&lt;/p&gt;
&lt;p&gt;均值回复策略和动量策略之间还有一个值得思考的最后对比。来自使用相同策略的交易者的竞争加剧会产生什么影响？对于均值回复策略，其影响通常是逐步消除任何套利机会，从而收益逐渐递减至零。当套利机会的数量减少到几乎为零时，均值回复策略就会面临一个风险：越来越多的交易信号实际上是由股票估值的基本面变化引起的，因此不会出现均值回复。对于动量策略，竞争的影响通常是趋势持续的时间范围缩短。随着新闻传播速度加快，以及更多交易者更早利用这一趋势，均衡价格将更快达到。在均衡价格之后进入的任何交易都将无利可图。&lt;/p&gt;
&lt;h2 id="体制转换"&gt;体制转换*&lt;a class="anchor" href="#%e4%bd%93%e5%88%b6%e8%bd%ac%e6%8d%a2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;体制的概念对金融市场最为基本。&amp;quot;牛市&amp;quot;和&amp;quot;熊市&amp;quot;不正是体制吗？预测体制转换（也通常被称为转折点）的愿望同样与金融市场本身一样古老。&lt;/p&gt;
&lt;p&gt;如果我们预测从牛市向熊市转换的尝试哪怕稍微成功一点，我们就可以将讨论集中在这唯一一种转换上，然后收工。但事情哪有那么容易。预测这种转换的困难促使研究人员更广泛地研究金融市场中其他类型的体制转换，希望找到一些可能更适合现有统计工具的方法。&lt;/p&gt;
&lt;p&gt;我已经描述了两种由于市场和监管结构变化而产生的体制转换（或&amp;quot;转变&amp;quot;，因为这两个例子都没有转回原来的体制）：2003年股票价格的十进制化和2007年取消卖空加一规则（Shortsale Plus-Tick Rule）。（详见&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch05.html"&gt;第5章&lt;/a&gt;。）这些体制转变是由政府预先宣布的，因此不需要预测转变，尽管很少有人能预测监管变化的确切后果。&lt;/p&gt;
&lt;p&gt;一些其他最常研究的金融或经济体制包括：通胀与衰退体制、高波动与低波动体制、以及均值回复与趋势体制。其中，波动率体制转换似乎最适合经典的计量经济学工具，如广义自回归条件异方差（GARCH）模型（见Klaassen, 2002）。这并不奇怪，因为金融经济学家在波动率建模方面有着悠久的成功历史，这与对底层股票价格本身的建模不同。虽然这种波动率体制转换的预测对期权交易者可能很有价值，但不幸的是，对股票交易者并无帮助。&lt;/p&gt;
&lt;p&gt;学术界对股票价格体制转换建模的尝试通常遵循以下思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;假设两种（或更多）体制以不同的价格概率分布为特征。在最简单的情况下，两种体制的价格对数可以用正态分布表示，只是它们具有不同的均值和/或标准差。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设体制之间存在某种转移概率（Transition Probability）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过将模型拟合到历史价格，使用标准统计方法（如最大似然估计）来确定指定体制概率分布和转移概率的确切参数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基于上述拟合模型，确定下一个时间步的预期体制，更重要的是，确定预期的股票价格。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种方法通常被称为马尔可夫体制转换（Markov Regime Switching）或隐马尔可夫模型（Hidden Markov Models），通常基于贝叶斯概率框架。有兴趣进一步阅读这些方法的读者可以查阅Nielsen和Olesen (2000)、van Norden和Schaller (1993)或Kaufmann和Scheicher (1996)。&lt;/p&gt;
&lt;p&gt;尽管理论框架优雅，但这种马尔可夫体制转换模型在实际交易中通常毫无用处。这种弱点的原因在于它们假设体制之间的转移概率在任何时候都是恒定的。在实践中，这意味着在任何时候（如Nielsen和Olesen论文所说明的），股票从正常的平静体制转变为波动体制的概率总是很小。但这对于想知道转移概率何时——以及在什么精确条件下——会突然达到峰值的交易者来说毫无用处。这个问题由转折点模型来解决。&lt;/p&gt;
&lt;p&gt;转折点模型采用数据挖掘方法（Chai, 2007）：输入所有可能预测转折点或体制转换的变量。诸如当前波动率、上一期收益率、以及宏观经济数据的变化（如消费者信心、油价变化、债券价格变化等）都可以作为输入。事实上，在经济学家Robert Schiller (2007)关于房地产市场转折点的一篇非常应景的文章中，他提出关于即将到来的繁荣或萧条的媒体讨论的升级实际上可能是即将到来的转折点的良好预测指标。&lt;/p&gt;
&lt;p&gt;在示例7.1中，我演示了如何使用数据挖掘方法，仅以基于股票价格序列的简单技术指标作为输入，以多个持有期的股票收益率作为输出来检测转折点。&lt;/p&gt;
&lt;h2 id="示例71使用机器学习工具从股市体制转换中获利"&gt;示例7.1：使用机器学习工具从股市体制转换中获利&lt;a class="anchor" href="#%e7%a4%ba%e4%be%8b71%e4%bd%bf%e7%94%a8%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e5%b7%a5%e5%85%b7%e4%bb%8e%e8%82%a1%e5%b8%82%e4%bd%93%e5%88%b6%e8%bd%ac%e6%8d%a2%e4%b8%ad%e8%8e%b7%e5%88%a9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;正如我在正文中讨论的，我相信体制转换最容易通过数据挖掘方法来发现：检查大量指标，看看哪个可能预测转换。这通常是一项非常繁重的任务，即使使用MATLAB也是如此。但幸运的是，最近的一个机器学习程序使这一发现过程可以在几小时内完成。&lt;/p&gt;
&lt;p&gt;我将在这里使用一个名为Alphacet Discovery的工具，这是Alphacet公司最近推出的集成回测和执行平台（&amp;lt;www.alphacet.com&amp;gt;。全面披露：Alphacet是我公司的客户。）该平台不仅集成了快速策略原型设计、回测、分析和实时部署所需的所有历史和实时数据；它还包含不断扩展的机器学习程序，如神经网络和遗传算法，这些程序非常适合我们正在寻找的那类关系的数据挖掘。&lt;/p&gt;
&lt;p&gt;我将选择一只著名的券商股——GS——作为金融板块的代表。我的目标是找出我是否能检测到该板块从牛市到熊市再回来的转折点。我的初步假设是，利率的重大变化、政府宏观经济数据的发布或收益公告可能是触发转折点的因素。在撰写本文时，Alphacet尚未完成将宏观经济或公司新闻数据整合到其数据库中，因此我将使用GS的大幅百分比变化作为此类新闻发布的代理指标。此外，我相信每当GS在价格大幅下跌或上涨之前达到N日最高或最低点时，这是前一个体制即将结束的良好信号。因此我将把这个条件也作为额外的输入。&lt;/p&gt;
&lt;p&gt;我们面临的搜索问题是：多大的百分比变化足以触发体制转换？在N日最高/最低条件中，N应该取多少？新的体制通常持续多久？（换句话说，最优持有期是多少？）以传统的手动方式回答这些问题非常耗时，因为需要对自变量使用不同的阈值、对因变量使用不同的收益率范围来运行多次模拟。让我们看看Alphacet Discovery能否帮助我们自动化这一过程。&lt;/p&gt;
&lt;p&gt;模型的自变量只是GS的日收益率。因变量是GS在各种持有期内的未来收益。Discovery可以轻松找到最优规则或最优规则组合，从而获得最佳的回测表现。在我们的案例中，每个百分比变化阈值都可以封装为一个规则。我输入了两个买入阈值和两个卖出阈值：1%、3%、1%和3%。同样，每个持有期也可以封装为一个规则，我输入了六个这样的时期：1天、5天、10天、20天、40天和60天。&lt;/p&gt;
&lt;p&gt;为这次搜索准备价格、百分比变化和10日最高/最低时间序列非常容易：在Discovery中，大多数操作都可以通过鼠标拖放完成。（为简单起见，我在此策略中将N固定为10，但这个参数也可以优化。）我只需将GS价格序列拖到策略编辑器中，并使用可用控件指定1天频率。（价格序列大约从2006年12月开始。）参见图7.1中的方框S1。然后我将几个预封装的&amp;quot;规则&amp;quot;（计算1天百分比变化和序列的简单10日移动最高价和最低价）拖到策略编辑器中（图7.1中的方框I2）。我通过从Symbol Group方框到Program Group方框的箭头将原始价格序列输入到Program Group方框中。&lt;/p&gt;</description></item><item><title>结论</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch10.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/ch10.html</guid><description>&lt;p&gt;独立交易者能成功吗？&lt;/p&gt;
&lt;p&gt;量化交易在2007年夏天声名狼藉，当时一些由最知名基金经理运营的大型对冲基金在短短几天内录得数十亿美元的亏损（尽管有些在月底前已经恢复）。这让人回想起长期资本管理公司（Long-Term Capital Management）和 Amaranth Advisors（两者都在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;中提及）等臭名昭著的对冲基金崩溃事件，只是这次不是一家交易者或一家公司，而是多家基金在短时间内同时亏损。&lt;/p&gt;
&lt;p&gt;然而，自从我开始从事机构量化交易业务以来，我与许多在简陋办公室或自家卧室工作的小型独立交易者交谈过，他们年复一年获得虽小但稳定且不断增长的利润，与大众想象中鲁莽的日内交易者刻板印象截然不同。事实上，我认识的许多独立交易者不仅在大型基金亏损数十亿美元的时期生存了下来，而且实际上在那些时期繁荣发展。多年来，这一直是交易的核心谜题：一个资金微薄、基础设施极简的独立交易者如何能够以高夏普比率（Sharpe Ratio）交易，而拥有一流团队的公司却惨败？&lt;/p&gt;
&lt;p&gt;2006年初，我离开了机构资管行业，独立创业以亲身体验。我想，如果我在摆脱所有机构约束和政治斗争后仍不能盈利交易，那么要么交易是骗局，要么我天生就不是交易者的料。无论哪种情况，我都向自己承诺，在这种情况下我会永远退出交易。幸运的是，我活了下来。在这个过程中，我也找到了前面提到的那个核心谜题的关键。&lt;/p&gt;
&lt;p&gt;关键原来是容量（Capacity），这是我在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch02.html"&gt;第2章&lt;/a&gt;末尾引入的一个概念。（回顾一下：容量是一个策略能在其上产生良好回报的资金量。）用100,000美元账户交易产生高夏普比率，远比用1亿美元账户容易得多。有许多简单且盈利的策略可以在低容量端发挥作用，但完全不适合对冲基金。这就是像我们这样的独立交易者的利基市场（Niche）。&lt;/p&gt;
&lt;p&gt;让我详细阐述这个容量问题。大多数具有低容量的盈利策略都在充当做市商（Market Maker）：在需要时提供短期流动性，在流动性需求消失时快速获利。然而，如果你有数十亿美元要管理，你现在就变成了需要流动性的一方，你必须为此付费。为了最小化这种流动性需求的成本，你必然需要长期持有头寸。当你长期持有时，你的投资组合将受到宏观经济变化（即体制转换（Regime Shift））的影响，这可能对你的投资组合造成巨大损害。虽然如果你的模型是健全的，长期来看可能仍然盈利，但你无法避免偶尔的剧烈回撤，这些回撤会登上报纸头条。&lt;/p&gt;
&lt;p&gt;大型机构青睐的大容量策略还面临其他不利因素。对冲基金之间的激烈竞争意味着策略的盈利能力下降。降低的回报反过来迫使基金经理过度杠杆化。为了超越竞争对手，交易者需要诉诸越来越复杂的模型，这反过来又招致数据窥探偏差（Data-Snooping Bias）。但尽管模型越来越复杂，它们试图利用的基本市场低效性可能保持不变，因此它们的投资组合最终可能仍持有非常相似的头寸。我们在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;讨论了这一现象。当市场环境变化时，类似的亏损头寸的恐慌性出逃可以（而且确实）导致市场完全崩溃。&lt;/p&gt;
&lt;p&gt;独立交易者在大型基金失败时往往能成功的另一个原因，是机构环境中管理层施加的无数约束。例如，作为量化基金的交易者，你可能被禁止交易仅做多策略，但仅做多策略通常更容易找到、更简单、更盈利，而且如果以小规模交易，风险并不比市场中性策略高。或者你可能被禁止交易期货。你可能被要求不仅市场中性，还要行业（Sector）中性。你可能被要求寻找动量策略（Momentum Strategy），而你知道均值回归策略会更有效。如此等等。许多这些约束是出于风险管理原因施加的，但许多其他可能只是管理层的突发奇想、怪癖和偏见。正如每个学过数学优化的学生所知，对优化问题施加的任何约束都会降低最优目标值。同样，对交易策略施加的每个机构约束往往都会降低其回报，如果其夏普比率没有被降低的话。最后，一些监督量化基金一线投资组合经理的高级管理人员实际上并不精通量化技术，他们往往基于量化理论以外的任何东西来做决策。&lt;/p&gt;
&lt;p&gt;当你的策略显示初始利润时，这些经理可能施加巨大压力让你快速扩大规模，当你的策略开始亏损时，他们可能迫使你立即清算投资组合并放弃策略。这些对量化投资过程的干预没有一个是数学最优的。&lt;/p&gt;
&lt;p&gt;此外，这样的经理往往脾气反复无常，这很少能与量化投资管理良好配合。当亏损发生时，理性往往是第一个受害者。&lt;/p&gt;
&lt;p&gt;作为独立交易者，你不受这些约束和干预的限制，只要你有足够的情绪能力来遵守量化交易的纪律，你的交易环境实际上可能比大型基金更接近最优。&lt;/p&gt;
&lt;p&gt;实际上，还有一个原因使得对冲基金比个人交易者交易自己的账户更容易爆仓。当一个人交易别人的钱时，其上行空间几乎是无限的，而下行只是被解雇。因此，尽管名义上遵守严格的机构风险管理和约束，一个人从根本上被驱动去交易风险更大的策略，只要能瞒过风险管理者。但 Société Générale（法国兴业银行）的 Jérôme Kerviel 先生向我们展示了这一点一点都不难！&lt;/p&gt;
&lt;p&gt;法国兴业银行事件给该银行造成了71亿美元的损失，并可能间接导致了美国联邦储备委员会的紧急降息。该银行的内部控制系统三年来未能发现这些违规交易，因为 Kerviel 先生曾在后台工作，对规避控制程序的方法非常熟悉（Clark, 2008）。&lt;/p&gt;
&lt;p&gt;事实上，Kerviel 先生的欺骗手段绝非原创。当我在一家大型投资银行工作时，有一对进行量化交易的自营交易者。他们被封闭在巨大交易大厅角落的一个玻璃气泡中，可能是因为他们不想被非量化交易者的喧嚣打扰，也可能是因为他们必须对交易秘密保持秘密。据我所知，他们中的任何一个人都不与任何人交谈。似乎他们彼此之间也不说话。&lt;/p&gt;
&lt;p&gt;有一天，其中一个交易者消失了，再也没有回来。不久之后，大批审计师在他的文件和电脑中搜查。结果发现，就像 Kerviel 先生一样，这个交易者曾在信息技术（IT）部门工作，对计算机相当精通。他设法制造了数百万的虚假利润，没有人质疑过他，直到有一天，电脑崩溃不知怎地停止了他的违规程序并暴露了他的活动。有传言说他消失去了印度，从此过着奢华的生活。&lt;/p&gt;
&lt;p&gt;所以你明白了。我希望我已经提出了一个有说服力的论据，证明如果交易是有纪律和谨慎进行的，独立交易者可以比机构交易者获得优势。当然，作为独立交易者的附带好处很多，首先是自由。就我个人而言，我现在比职业生涯中任何时候都更快乐，尽管不可避免地会不时遭遇令人心碎的回撤。&lt;/p&gt;
&lt;h2 id="下一步"&gt;下一步&lt;a class="anchor" href="#%e4%b8%8b%e4%b8%80%e6%ad%a5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;假设你已经找到了几个好的简单策略，并在你的卧室里愉快地交易。你从这里走向何方？你如何成长？&lt;/p&gt;
&lt;p&gt;实际上，我在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch06.html"&gt;第6章&lt;/a&gt;讨论过增长，但只是在有限的意义上。使用凯利公式（Kelly Formula），你确实可以实现权益的指数增长，但仅限于你策略的总容量。之后，增长的来源必须来自增加策略数量。例如，你可以寻找比你现有策略交易频率更高的策略。要做到这一点，你必须投资并升级你的技术基础设施，并购买昂贵的高频历史数据。或者，反过来，你可以寻找持有期更长的策略。尽管它们的夏普比率通常较低，但它们确实大幅提高了你的容量。对于许多这类策略，你可能需要投资昂贵的历史基本面数据用于回测。如果你是一名股票交易者，你可以扩展到期货或货币交易，它们通常比股票模型具有更高的容量。如果你用完了创意或缺乏你想进入的新市场的专业知识，你可以与其他志同道合的交易者合作，或者雇用顾问来帮助研究。如果你运行的策略太多，无法自己手动管理，你可以进一步推进自动化，这样除非出现异常或问题，你就不需要手动干预日常交易。当然，你也可以雇用一个交易者来为你监控所有这些策略。&lt;/p&gt;
&lt;p&gt;这些在数据、基础设施和人员方面的投资都是将部分收益再投资以进一步发展交易业务的一部分，与经营任何其他类型的业务增长没有什么不同。当你达到容量高于凯利公式建议你审慎使用的程度时，可能是时候开始接受投资者了，他们至少可以分担你的基础设施成本，甚至可能提供激励费。或者，你可能想将你的策略（更重要的是你的业绩记录）带到一家较大的对冲基金，要求签订利润分成合同。&lt;/p&gt;
&lt;p&gt;在量化对冲基金近期的重大亏损之后，许多人开始质疑量化交易是否长期可行。虽然量化策略的灭亡之说目前看来似乎为时过早，但从独立交易者的角度来看，这仍然是一个重要的问题。一旦你实现了一切自动化，你的权益在指数增长，你可以坐下来放松并享受财富吗？不幸的是，经验告诉我们，随着更多交易者发现它们，策略确实会随时间失去效力。需要持续的研究来为你提供新策略。&lt;/p&gt;
&lt;p&gt;总会有动荡和重大体制变革，可能每十年发生一次，但仍然会导致某些策略的突然消亡。与任何商业活动一样，快速增长期之后不可避免地是成熟业务稳定但不惊人的回报。然而，只要金融市场需要即时流动性，量化交易就总有一个有利可图的利基市场。&lt;/p&gt;</description></item><item><title>附录A · MATLAB速览</title><link>https://uynajgi.github.io/yuulibrary/books/quant-trading/appendix_a.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://uynajgi.github.io/yuulibrary/books/quant-trading/appendix_a.html</guid><description>&lt;p&gt;MATLAB是由Mathworks公司开发的通用软件包，被许多机构量化研究员和交易者用作回测平台，特别是那些从事统计套利（Statistical Arbitrage）的人。在&lt;a href="https://uynajgi.github.io/yuulibrary/books/quant-trading/ch03.html"&gt;第3章&lt;/a&gt;中，我介绍了这个平台，并将其与其他替代方案的优缺点进行了比较。本书中的大多数策略示例都是用MATLAB编写的。其中许多策略是涉及数百只股票的组合交易策略，在Excel中非常难以回测。这里，我将为不熟悉该语言的交易者提供MATLAB的快速概述，以便他们判断是否值得投资学习和使用这个平台进行自己的回测。&lt;/p&gt;
&lt;p&gt;MATLAB不仅是一种编程语言；它还是一个集成开发平台，包含非常用户友好的程序编辑器和调试器。它是一种解释型语言（Interpreted Language），类似于Visual Basic，但与C等传统编程语言不同，它不需要编译就可以运行。然而，由于大量内置的数学计算函数，以及它是一种专门设计用于简单快速地对数组（即向量或矩阵）进行计算的数组处理语言（Array-Processing Language），它在回测方面比使用Excel或Visual Basic更加灵活和强大。特别是，C或Visual Basic中必需的许多循环在MATLAB中只需一行代码即可替代。它还包含广泛的文本处理功能，使其成为解析和分析文本（如网页）的强大工具。此外，它有一个全面的图形库，可以轻松绘制各种类型的图形，甚至动画。（本书中的许多图表都是使用MATLAB创建的。）最后，MATLAB代码可以编译成C或C++可执行文件，在没有安装MATLAB平台的计算机上运行。事实上，也有第三方软件可以将MATLAB代码转换为C源代码。&lt;/p&gt;
&lt;p&gt;MATLAB的基本语法与Visual Basic或C非常相似。例如，我们可以这样初始化数组$x$的元素：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)=&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 3 elements of an array initialized.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% This is by default a row-vector&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)=&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意我们不需要先&amp;quot;声明&amp;quot;这个数组，也不需要事先告诉MATLAB它的预期大小。如果你省略&amp;quot;;&amp;quot;号，MATLAB将打印出被赋值变量的内容结果。任何注释都可以写在&amp;quot;%&amp;quot;号之后。如果你愿意，你可以将大量元素一次性初始化为相同的值：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% assigning the value 0.8 to all elements of a 3-vector y.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在如果你想对两个向量做向量加法，你可以用传统方式（就像在C中一样），即使用循环：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;i&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;% z is [0.91.11]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但MATLAB的强大之处在于它可以非常简洁地并行处理许多数组操作，而无需使用循环。（这就是为什么它被称为向量处理语言。）所以上面的循环，你只需写&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;z=x+y % z is the same [0.91.11]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更强大的是，你可以轻松地选择不同数组的部分并对其进行操作。你认为以下代码的结果是什么？&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;$x([13])$选择了$x$的第一个和第三个元素，所以$x([13])$就是$[0.1\ 0.2]$。$z([21])$按顺序选择了$y$的第二个和第一个元素，所以$z([21])$是$[1.1\ 0.9]$。因此$w$是$[1.2\ 1.1]$。&lt;/p&gt;
&lt;p&gt;你可以同样轻松地删除数组的部分：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x([13]) = [] % this leaves x as [0.3]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;连接两个数组也很简单。按行连接，使用&amp;quot;;&amp;quot;分隔数组：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;=[&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% u is now&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% [0.90000.9000;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% 1.20001.1000]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;按列连接，省略&amp;quot;;&amp;quot;：&lt;/p&gt;</description></item></channel></rss>