人工智能交易策略
欢迎发表评论
2012-10-19 08:58
编辑:queena
金融数据的数据量庞大而又复杂,人们般试图通过长期观察罔表而对金融数据的运行规律形成定的理解。虽然在很多时候,有不少人能够通过自己的洞察力形成一些天才的见解,但是人脑在处理这些复杂信息时会有一些天生的缺陷,导致我们大部分时候还是处在懵懵懂懂的混沌之中。尤其是当数据曾显现出某种高维的状态时,人脑的天生结构使得我们的直觉随之无能为力。我们之所以发展出很多市场指标,就是为了将市场数据简化成几个我们能够方便理解的数字。
从统计学发展起来的人工智能技术在一定程度上能够帮助人们处理这种情况。有许多人工智能算法的设计思想其实是非常简单的,甚至我们有时还会认为些算法的思想会显得有些愚笨。但是,这些算法的突出好处是,其在定程度上可以应对大量的,高维的数据,从而能够帮助我们对市场形成人脑难以获得的新的理解。
实际上,人工智能在生活中离我们并不遥远。我们每天使用的搜索引擎是人工智能应用的一个最为典型和成功的例子,甚至是最为普通的拼音输人法也加人了人工智能的因素,这才使得现在的拼音输入速度比十五年以前提高了多倍。
人工智能在国外的量化投资中大约兴起于上世纪九十年代。在诸多人工智能算法之中,神经网络和遗传算法是大家研究和应用的最早的,并且直到目前,每年仍然有大量的有关这两种算法在交易之中应用的论又发表。继这两个算法之后,更多的人工智智能算法被融入到量化投资研究之中,其中比较有代表性的有隐马氏模型,贝叶斯网以及聚类分析等等。
鉴于本文篇幅所限,我们接下来将主要介绍人工神经网络和遗传算法(包括遗传编程),对于其他的各种算法,还请读者自行参考相关书籍和论文。另外,本文此部分所提供的交易模型和交易策略都仅供说明之用,我们并不保证该模型和策略的准确性和盈利性。
1.人工神经网络在交易算法设计中的应用
说到人工神经网络,我个人的经验是身边很多人会把这种算法和人工智能等同起来,实际上,人工种经网络仅仅是人工智能算法的一种,人工智能所包含的范围比神经网络要大得多。 人工神经网络的基本组成单位是神经元,这和自然界的神经网络有些类似。在自然界中,一个个神经元联结起来,组成了有感知和思维能力的大脑。而在人工神经网络之中。我们通过数学函数来模拟神经元的工作过程。
2.遗传算法
遗传算法实际上是一种优化算法,这一点使得其和其他的人工智能算法有很大的不同。大部分的人工智能算法都侧重于分类,其核心在于如何根据一定的规则将样本数据归为不同的类别。这种归粪的思想和人类日常行为有很多相似之处,因为,我们在处理各种事情的过程之中,在大部分时候都是自觉或者不自觉的先将目前情形归类,然后再采用相应酌处理办法的。归类的思想在交易中也大有用武之地,因为交易在很大程度上就是判断是涨是跌,风险大还是风险小,而这也就是归类而已。遗传算法则与之不同,其更像是模拟退火这种算法,其本质上是一种优化算法,而不是用于归类的。
遗传算法最早在二十世纪六十年代由John Holland发明,并且在随后的十年间得以完善。遗传算法的基本思想模拟自然界中的进化过程.使得适应“环境”的解法能够保留下来,而不适应的解法则丢弃掉。为了模拟这种“适者生存”的自然选择过程,遗传算法将算法中的元素和自然界中的元素进行了类比。在遗传算法之中,所需要解决的问题对应于自然环境,而问题的解则对应于自然界中的生物个体。值得注意的是,在自然界中,生物个体的数量不止一个,而在遗传算法之中,问题的解也不止一个。当然,不同的生物个体适应自然环境的能力不同,遗传算法之中,不同的解解决问题的能力也有所不同。对于上文所述的类比,我们举一个交易场景之下的具体的例子。用遗传算法学习交易策略时,市场数据每日的变化便是算法中的“自然环境“,对于这种“自然环境”,每种交易策略都对应一个”生物个体”,如果该交易策略适应市场,则对应于该生物个体比较适应自然环境。交易策略适合市场的程度可以用很多标准来衡量,比如夏普比率等等。在遗传算法之中,“生物个体“的优胜劣汰是通过”基因”的复制和重组来完成的。具体的来讲,遗传算法将问题的解法分解成一个个的基因,如果该解法解决问题的能力比较好,则该解法会有较大的概率将其基因遗传下去,而如果一个解法解决问题的能力不好,则其基因遗传下去的可能性较小。除了基因的复制和重组之外。遗传算法中还有模拟基因变异的功能,加八这种功能的好处是,有可能在初始的“生物个体”种群中不存在能够完善解决所面临问题的“基因”,而通过变异,则可能在进化过程之中产生原始基因池中没有的新的能够藏好的解决问题的“基因”。
3.遗传编程
在1993年Franklin Allen和Risto Karjalainen的一篇论文之中,他们将遗传编程引人了交易规则的寻找之中。与遗传算法相比,遗传编程的适用范围更广,并且,遗传编程的突出好处是,其能将各种非数字性的交易规则融入到交易规则的寻找之中.本程序化交易系统就有一部分模块采用了遗传编程的思想。