Tongkui Yu分享 http://blog.sciencenet.cn/u/ytkui

博文

硕士论文(第2章):基于主体的股市模型及其复杂动力行为研究——模拟实验和理论分析

已有 5362 次阅读 2007-12-29 22:44 |个人分类:我的论文

复杂经济系统、基于主体的计算经济学和SWARM平台 
 
 
本章介绍论文相关的背景知识,主要有复杂经济系统理论、基于主体的计算经济学和SWARM多主体仿真平台。基于还原论思想的传统经济学的局限性被越来越多的人所发现,复杂性科学的思想作为新的研究模式正在逐渐被引入到经济研究中。本文把股市看作一个复杂适应系统,研究众多市场主体的交易行为和交互作用如何形成整体的市场现象,并把股市刻画成一个由低维变量和参数支配的动力系统研究其演化发展行为。基于主体的计算机模拟是研究复杂适应系统的一个重要方法,其自下而上的建模方式给复杂经济系统的研究以新的思路,通过刻画每个市场主体的行为模式,模拟个体行为及其形成的整体现象,本文的计算机模拟部分就是用基于主体的计算经济学的方法进行的。SWARM是用于复杂适应系统仿真的多主体软件平台,它为复杂性研究者提供有效可靠和可重用的实验工具,被广泛应用在经济、管理、生物、人文等各个领域的复杂性研究。本文基于SWARM平台进行多主体的股市模拟,由于SWARM国内应用较少,因此投入了较多精力来研究学习。
 
2.1 复杂经济系统
复杂性科学被认为是“21世纪的科学”,对复杂系统的广泛深入研究会成为本世纪科学发展的一个重要趋势[78]。目前,复杂性研究不仅涉及了许多传统上用数理方法处理的学科的前沿问题,诸如物理、化学、天文、气象等,而且也给原先采用数理方法不是十分普遍或完善的学科,例如社会经济、生态环境、生命系统、学习认知等,带来了崭新的概念、思路和方法。研究发现,复杂系统中所涉及的一些基本特征,如非线性、非平衡、突变、分岔、混沌、路径依赖等等,有非常强的普适性,这也是复杂性科学具有强大生命力的重要原因,也是多学科交叉获得实质性进展的重要基础。目前,各门类科学、各层次的学科正不断地交叉融合,这些研究不仅会凭借已经获得的知识加深人们对一些具体系统内部作用机制的理解,也会促进复杂性科学基本概念和基本理论的发展,进一步加快人们对其他复杂系统的研究探索,经济系统的复杂性研究正处于这样的前沿领域。
传统经济理论体系以静态均衡为核心,以实物经济为主线,建立经济变量的数学模型,并应用于现实的宏观经济分析之中,对增长、通胀、失业、经济周期等问题给出了近似的理论解释。但它无法对伴随着新经济的产生愈加突出的规模效益递增、途径依赖、多重均衡、金融涨落等经济事实作出合理解释。
从20世纪80年代开始,一批经济学家、物理学家及数学家指出了一般均衡理论应用于经济研究的局限,认为它不能揭示复杂经济系统多层次、强耦合、非线性、开放性、不确定性、动态性等诸多丰富的现象和特点,并提出“将经济看作一个演化的复杂系统”以拓展原来的一般均衡的论断。1985年,耗散结构理论的创始人、诺贝尔化学奖获得者I. Prigogine提出了社会经济复杂系统中的自组织问题。1988年,诺贝尔物理学奖获得者P. Anderson 和经济学奖获得者K. J. Arrow组织了一个专题讨论会,主题就是经济可以看作一个演化着的复杂系统。参加讨论的有数学、物理、经济、生命科学、计算机等多方面的专家。P. Anderson和K. J. Arrow还给出了一个对演化的经济进行描述的基本思路,他们设想经济系统可能存在内在的核心动力机制,并猜想这种机制可以用低维变量和参量来表示,这个核心机制支配整个经济的发展演化行为。1991年,动力系统领域的权威S. Smale在展望动力系统时把如何将经济一般均衡理论发展成为动态的理论作为10个重大问题之一,并指出这个问题将是经济理论研究的主要问题。
除了这几位学者的集中论述之外,其他的一些著名学者,如德国的H. Haken研究组等,也有过很多支持这种观点的论述。目前,“经济是一个复杂的演化系统”已得到广泛的认可,不仅形成了新的领域和流派,如经济物理、演化经济学,甚至最重要的物理评论(Physics Review)系列的杂志也已开始吸纳经济研究方面的文章。
经济是一个演化的复杂系统,它包含许多子系统,整个系统具有多层次、强耦合、非线性、开放性、不确定性、动态性的特点。这些特点交织在一起,表现出经济系统特有的复杂演化行为。其中,多变量以及变量之间的非线性相互作用是经济复杂性的最基本原因。经济系统是由为数众多的经济因素构成,涉及数目可观的变量和参量。例如一个国家经济系统包含成千上万的厂商、家庭、政府等经济主体,流通着众多品种的货物、货币及货币衍生物,对经济系统任意时刻的描述都要涉及到众多的变量和参量。当然,由于这些变量的耦合关系,从系统论的角度看,其独立变量的个数可能会不多,这使得在低维相空间的研究成为可能。同时,在国际贸易理论、产业组织理论、区域经济学、发展经济学中,都离不开诸如收益递增、积聚效应、良性和恶性循环、阈值作用等体现明显正反馈的行为或自增强机制。这种自增强机制并不能通过线性关系得到,是经济系统非线性作用的体现,而非线性作用的存在使得叠加原理不再适用,需要探索新的动力学机制。
经济系统复杂性研究已经在世界范围内展开,研究思路大致包括以下几条:一是以非线性动力学为基本手段,探讨经济系统特别是宏观经济的动态复杂性,如R. Day和W. Brock等,他们从非线性动力学的角度指出经济系统中存在多重均衡、锁定、途径依赖、模式形成等现象;二是基于个体建模,研究众多个体相互作用的复杂适应系统,利用计算机模拟展开工作,如美国Sandia国家实验室Aspen和Santa Fe研究所的人工股票市场(Artificial Stock Market);此外,利用统计物理的方法来分析经济数据也是一种重要思路。
 
2.2 基于主体的计算经济学
基于主体的计算经济学(Agent-Based Computational Economics,ACE)是西方经济学研究的最新进展之一,是将经济系统看成由自治的相互作用的主体构成的进化系统进行建模的计算研究方法。ACE模型是在计算机模拟实验环境中建立的由大量独立个体构成的演化系统模型。模拟系统通过编写一系列的程序来模拟不同的个体。每个Agent都代表一个独立的个体,拥有不同的决策方法和智力水平,所有Agent相互竞争、相互影响、共同演化,形成一个复杂的动态演化系统。
Agent是一个使用广泛的概念,在不同的学科领域,甚至在同一学科中,对其都有着不同的理解,至今没有一个确切的概念,其中有“主体”、“智能体“、“经纪人”、“代理人”、“代理商”、“代理”等。可以这样描述:Agent是指在一定的环境下能独立自主地运行,作用于自身生成的环境也受到外部环境的影响,并能不断地从环境中获取知识以提高自身能力,且将推理和知识表示相结合的智能实体,具有自治性、反应性、自适应性、可通信性以及自学习性等特点。在我们的股票市场中,Agent代表市场交易主体。
基于主体的计算经济学的核心工作是建立基于主体的经济模型。建立基于主体经济模型的步骤是[35]:①问题识别。分析经济理论和经济现实中存在的问题,并提出解决问题的目标。②模型框架。描述人工经济的框架,包括:主体的类型;主体之间相互作用的市场协议;人工经济一轮进化过程中的事件发生次序;经济总量的统计方式。③主体描述。描述每一类主体的状态和行为模式。主体的状态决定其行为,主体的行为能改变其状态,甚至改变行为模式本身(行为进化)。④实验设计。选择一种系统仿真平台和一种计算机程序设计语言,模拟主体行为模式和经济运行模式;确定每一类主体的数目,采用适当方法为所有主体状态赋初值。⑤结果分析。观察模型运行的结果,应用经济学理论给予解释。
与普遍使用的、以数学方程为基础的建模方法相比,基于主体建模方法的特色在于[35]:①关注的内容不同。传统的建模方法往往以一组数学方程作为起点,这些方程代表了宏观系统的属性之间的关系。基于主体建模方法的关注点是系统中发生于个体间的交互行为和作用,宏观系统的属性变化则是作为上述作用的结果体现出来。②对待系统层次的视角不同。基于数学方程的建模方法基本上是使用系统级的可观察属性,从某一个特定的系统层次去看待系统,基本上不涉及跨层次的问题,而基于主体建模方法则把注意力集中于相关的个体行为,从底向上地观察和描述系统的行为,是一种由低到高、从微观到宏观的、跨层次的研究思路。
因此,基于主体建模方法具有以下几个突出的优点[35]:①提供了表述系统元素的主动性的方法,扭转了把系统中的个体单纯地看作被动的、僵死的部件的观念。②提供了反映层次间相互联系的方法,突破了仅仅从统计规律的角度去理解的范围,从而开辟了理解和认识涌现、突变等现象的新天地。③提供了真正理解发展和演化的可能性,改变了简单化的、只考虑量变的、线性外推的预测方法,引进了更加符合客观现实的、量变和质变相联系的思维方式。④由于基于主体建模方法和计算机技术的先天的、内在的联系,它提供了非常直接的可操作性,从而为研究人员提供了越来越方便的研究工具和软件平台,使得人类对于复杂系统规律的研究和认识进入了一个新的阶段。
 
2.3 SWARM平台
SWARM[96]是一个复杂适应系统仿真的多主体软件工具集,1994年克里斯•兰顿设计了SWARM的框架,大卫•海伯勒设计了软件的原型。1995年完成的SWARM Beta版只能在Unix操作系统和X Windows界面下运行。1998年4月发布的1.1版,可以在windows/95/98/NT上运行。1999年发布的2.0版提供了java的支持,使非计算机专业人员使用起来十分方便。2000年发布的2.1版对2.0版进行了改进,同年4月10日发布了2.1.1版。目前2.2版是最新的稳定版本,本文的模拟实验就是在SWARM Java 2.2版上实现。
SWARM项目的目的就是通过科学家和软件工程师的合作制造一个高效率的、可信的、可重用的软件实验仪器。它能给予科学家们一个标准的软件工具集,就像提供了一个设备精良的软件实验室,帮助人们集中精力于研究工作而非制造工具。用户可以使用SWARM提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互。由于SWARM没有对模型和模型要素之间的交互作任何约束,SWARM应当可以模拟任何物理系统或社会系统。事实上,在各个广泛的研究领域都有人在用SWARM编写程序,这些领域包括生物学、经济学、物理学、化学和生态学等。
SWARM采用自底向上的建模思想,让一系列独立的Agent通过独立事件进行交互,帮助研究由多个体组成的复杂适应系统的行为。图2.1展示了SWARM建模的体系结构。模型中有一系列的有生命或无生命的Agent,这些Agent有自己的行为模式(if-then-else),通过Agent的行为及其交互形成整体的现象。多个Agent还可能组成自己的组织。还可以通过观察者SWARM(Observer SWARM)来观察Agent以及整体的现象,还可以将模拟结果数据输出。
图2.1 SWARM模型体系结构
Fig2.1 The arthitecture of SWARM model
 
SWARM支持的是一种多主体(Multi-Agent)的建模方式,这种方式与面向对象的分析和设计思想是一致的。在面向对象的设计中包括对各种对象类的定义,一个对象包括表示对象状态的实例变量和实现对象行为的方法。在SWARM中,一个主体可直接被模拟为一个对象,SWARM本身就是一个对象框架,在其中定义了一些类库用于模拟工作。SWARM中有七个核心库:defobj、collection、random、tkobjc、activity、swarmobject和simtools。前四个是支持库,有可能在SWARM之外用到,后三个是SWARM专有的。面向对象的方法不仅很自然地被应用到多主体模拟中,也是建立可重用的软件库的一个实用技术。用户可以通过直接使用SWARM类库中有用的类来建模。如果找不到某个具体类具有要用到的行为,用户可以找一个预先存在的类并通过继承增加新的变量和方法。与传统的面向过程的语言相比,面向对象语言提供的继承和封装使得编写可重用的代码变得更容易。因此,它也使得人们可以共享编好的SWARM模型软件,方便人们在讨论模型时交换思想和技术。SWARM对标准面向对象编程的一个发展是“探测器”技术。在大多数计算机程序中,程序去做你希望它做的事情就足够了。在模拟中,运算的所有过程都可以被观察到是很重要的,因为研究者需要从正在运行的模拟中取得数据。SWARM为每个对象定义了可被探测到的功能。“探测器”允许用户在程序运行过程中显示或设置任一对象的状态,并且可以调用对象的方法,这些都不需要用户额外编写代码。“探测器”可以将收集到的数据以图形的方式显示出来,也可以调用分析工具对数据进行统计分析。
SWARM应用的结构围绕着Swarm展开。Swarm是系统模拟的基本构件,一个Swarm由一系列对象以及这些对象的行为时间表组成。在SWARM模型中,Swarm分为模型Swarm和观察员Swarm。模型Swarm是由对象集合、行为时间表以及输入和输出三个部分组成的。模型Swarm中的每一项对应模拟模型中的每一个对象。SWARM中的对象指的是能够产生动作并影响自身和其他个体的一个实体。在复杂经济系统演化仿真中,对象就是微观经济主体。模型Swarm常常包括一组相互作用的对象集合。除了对象的集合,模型Swarm还包括模型中的行为时间表。行为时间表定义了各个对象独立事件的执行顺序。在SWARM中特定的事件发生在特定的时间,事件的执行按照行为时间表的安排进行。例如,在消费者/生产商这个模拟系统中存在着三个动作:消费者购买商品、生产商根据销量决定产量、生产商生产产品。这三个动作可以按照如下行为时间表进行:每天,消费者到市场上购买商品;然后,生产商根据销量决定产量;最后,生产商组织具体的生产活动。模型则按照安排好的事件执行顺序向前发展。模型Swarm还包括一系列的输入与输出。输入的是模拟模型的参数,例如复杂经济系统中微观经济主体的个数等;输出的是可以观察的模型运行结果,例如复杂经济系统中微观经济主体的行为规则等。观察员Swarm的作用是观察模拟模型的运行情况,它可以向模型Swarm输入数据,也可以从模型Swarm中读取数据,它是建模者与模拟模型进行交互的桥梁。
SWARM的建模步骤如下:①建立一个模型Swarm。一个模拟的关键部分是模型Swarm,模型Swarm包括模拟参数、时间表数据结构以及模拟世界中的对象三个部分。②定义一个个体类。定义一个个体就是用SWARM库中的基类定义个体的状态和行为。③建立个体。选择适当的参数,在定义个体的基础上建立一个个体作为模拟模型的主体。④建立空间对象。空间对象是个体活动的范围。⑤模型Swarm的时序安排。该过程定义模拟模型中不同个体活动的时间顺序。⑥建立探测器Swarm。该过程设置一个控制界面,用户可以终止或开始模拟过程。⑦建立主函数。主函数将上述所有过程连结起来,是程序的入口。




https://blog.sciencenet.cn/blog-4716-13540.html

上一篇:硕士论文(第1章 绪论):基于主体的股市模型及其复杂动力行为研究——模拟实验和理论分析
下一篇:硕士论文(第3章):基于主体的股市模型及其复杂动力行为研究——模拟实验和理论分析
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 08:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部