楼主: nandehutu2022
1380 47

[量化金融] 基于Agent的计算经济市场模型模拟器SABCEMM [推广有奖]

11
nandehutu2022 在职认证  发表于 2022-6-2 20:55:14
代理引入了公共信息的概念,因为它允许不同类型的代理在同一市场进行交易,同时为每种类型的代理定义不同的公共信息。例如,A类代理可能会使用公开信息来表示市场外的新闻,而B类代理可能会使用公开信息来表示过去n个步骤中股价的演变。备注3。对于代理人,投资决策过程不依赖于其他代理人的单个信息,而只依赖于公共信息,如交叉模型中使用的超额需求[31],Ohm 减少到Ohm  RJi+JEX和投资决策图可以简化为:Ai:Ohm → RJi×R,ω7→ Ai(fi,1,…,fi,Ji;fex,1,…,fex,Jex),其中fi,j(j=1,…,Ji)分别表示代理i的单个信息和fex,j(j=1,…,Jex)公共信息。请注意,仅包含该类型代理的模型本质上是可并行的。备注4。通过环境耦合的影响隐含地构建在代理人的定义中,通过投资决策的可能依赖性-代理其他代理的单个信息。在备注3的简化设置中,不存在耦合。为了可视化通过环境的耦合,我们提供以下示例。示例1。假设一组N∈ N个代理,每个代理都配有一组四条单独的信息:1。代理人的财富;(二)代理人持有的股份数量;(三)代理人对该股票的投资决策(或意见);4.

12
能者818 在职认证  发表于 2022-6-2 20:55:16
代理人子集投资决策的平均值σmi,nii=ni- mi+1niXk=miσk和mi,ni∈ 1.N和mi<ni。这里,平均数量σmi,nii,可能取决于所有代理或代理子集的投资决策,引入了耦合。此外,假设只有外部信息由1给出。股票价格S。然后,决策过程可以写成:Ai:Ohm → R×R,ω7→ Ai(S、wi、qi、σi、’σmi、nii),其中定义了地图Ohm = R4+1。基于上述代理的定义,我们现在引入代理类型的概念,以便更容易地讨论ABCEM模型。定义2。我们确定当两个代理人Ai和Aj(i 6=j)属于相同的代理人类型时。如果可以通过输入向量ω的简单置换来获得另一个映射,则映射a和a是相同的。接下来,我们定义了由超额需求和清算机制组成的市场机制。定义3。N个代理商的总超额需求ED定义为代理商微观超额需求edi的平均值∈ R: ED(S):=NNXi=1edi(S)。代理的超额需求edi取决于股票价格s,因此edi=0对应于第i个代理的无订单。正值edi>0表示买入订单,负值edi<0表示卖出订单。我们的元模型没有规定每个ABCEM模型特定的EDI的明确形式。有关总超额需求的详细讨论,请参见[79,93]示例2。[49]中给出了edi(S)的合理选择:edi(S)=σi(S)γi(S)wi(S)S,投资头寸σi∈ {-1,0,1},投资分数γi∈ [0,1],财富≥ 0和市场价格定义4。SABCEMM模拟器提供了两种可能的清除机制。i) 理性市场:ED(S)!=非理性市场:Sk+1=M(Sk,ED,η)。这里,下标k∈ N表示时间段[0,T]的时间离散化中的时间步长,T>0。

13
可人4 在职认证  发表于 2022-6-2 20:55:19
由!=在对理性市场的定义中,我们表示S需要被满足,即S由方程隐含定义。请注意,理性市场是一个寻根问题,而非理性市场是一个微分方程的数值近似值。非理性市场的一般形式(由函数M定义)不仅包括显式离散化方案,还可能包括指数积分器来近似方程。示例3。当使用示例2中定义的代理超额需求时,我们得到了一个理性市场的示例,如下等式:=NNXi=1σi(S)γi(S)wi(S)S。一个非理性市场readsSk+1=Sk+NλNXi=1σi(S)γi(S)wi(S)S的例子。这里,λ>0表示市场深度[59],之前的定价规则已在模型中使用[49]。关于如何将抽象元模型转换为软件指令的示例,请参阅附录A.4。在本节的其余部分中,我们将分别讨论每个构建块,以便深入了解每个建模方面的理论背景。此外,我们还提供了一些BCEM模型中流行的代理类型和市场机制的示例。2.1市场机制在本节中,我们激励我们元模型的市场机制。我们旨在阐明理性市场和非理性市场之间的联系。为了做到这一点,我们提出了Beja和Goldman的不平衡模型[9]。作为核心概念,我们需要理解总超额需求ED的含义(例如参见[79、36、93])。实质上,总超额需求是指需求之和减去供给之和。

14
nandehutu2022 在职认证  发表于 2022-6-2 20:55:22
正累计超额需求表示未清算的买入订单,负累计超额需求表示未清算的卖出订单。Beja和Goldman[9]提出的非均衡模型如下:ddtP=H(ED(P)),P=log(S),(1)其中S表示股票、债券、期货或期权的价格,ED表示累计超额需求,log(·)表示纳皮尔对数。此外,函数H被假定为单调递增函数,它在零处消失。函数H可能是非线性的,这得到了一些研究的支持[17、59、27]。Beja和Goldman通过H的一阶线性化(H的泰勒展开式,H(0)=λ)来近似模型(1):ddtP=λED(P),(2)其中常数λ>0被解释为市场深度【59】。从数学上讲,函数H的这种线性化很好地近似于ED的小值。事实上,Farmer等人的研究表明,小价格变化会对交易产生线性影响。Beja和Goldman在他们的模型(2)中加入了白噪声,以覆盖随机错误或外部新闻。因此,间隙机制由以下公式得出:ddtP=λED(P)+η,η~ N(0,1)。(3) 因此,普通微分方程(1)已成为随机微分方程(3)。随机微分方程被恰当地定义为一个积分方程,可以用It^o或Stratonovich意义来解释(cmp附录A.2)。从数学上讲,转换代数供需方程0=ED(P)的过程。(4) 进入微分方程(2)可以解释为松弛,其中松弛率由市场深度λ给出。超额需求通常以财富或股票数量来衡量。因此,(2)的右侧是市场深度乘以的比率。因此,随机微分方程的最一般模型为bydS=F(S,ED)dt+G(S,ED)dW,(5)Wiener过程W(cmp)。

15
nandehutu2022 在职认证  发表于 2022-6-2 20:55:26
附录A.2)和任意函数F和G。注意,(3)是模型(5)的特例。我们对It^o随机微分方程使用通常的符号。ABCEM模型的许多市场机制都是模型(5)的特例,例如[34、6、71、22、23、24、25、19、106、8、49、95、58、86、13、27、31、32、30、37、44、74、75、35]中提出的模型。离散化所有ABCEM模型都可以看作是时间连续模型的时间离散版本。为了能够在计算机上实现和模拟相应的数值近似,需要将时间连续模型离散化(cmp.附录a.2)。在ABCEM文献中,通常会发现显式Euler离散化。通常,对数值近似值(cmp附录A.2)进行重新缩放和固定,以便将时间步长设置为1。因此,在ABCEM文献中,我们面临的是以下类型的微分方程Sk+1=Sk+(R)F(Sk,EDk)+G(Sk,EDk)η,(6),而不是微分方程。模型(6)是模型(5)的离散化版本。函数F,G表示函数F,G的离散化版本。这里k∈ N是离散时间步长的索引(Sk=S(t+kt) 对于固定的初始时间t和时间步长t>0)。2.2代理设计在本节中,我们将讨论ABCEM模型的代理设计。代理通常被设计为西蒙意义上的有界理性代理【91,92】。这意味着投资者更愿意将其投资决策建立在启发式(行为规则)基础上,而不是建立在完美的效用最大化基础上。从数学上讲,他们并没有解决最优化问题,而是根据交易规则得出接近最优的满意解。这种次优的交易策略非常接近真实的投资过程[40100]。此外,启发式交易规则通常将心理因素纳入投资决策中。

16
大多数88 在职认证  发表于 2022-6-2 20:55:30
关于学科行为金融的介绍,我们请感兴趣的读者阅读卡尼曼的一篇文章【56】。我们想指出的是,ABCEM模型中的代理也可能基于其他概念,例如,所谓的零情报交易者[45,47]。SABCEMM模拟器对代理的建模没有任何限制。作为启发式交易策略的一个示例,我们介绍了两种常用的投资者类型【72,54】:图表主义者(技术交易者)和原教旨主义者。原教旨主义投资者认为,资产或股票存在一个公平的价格,市场价格将趋同于该价值。对于给定的基本值SF和单调递增函数,Dione可能需要fi(S):=Di(Sfi- S) 。(7) 与原教旨主义者不同,图表学家通过推测过去的价值来预测未来的价格。在最简单的设置中,图表绘制者可能只考虑最后的股价。edCi(S):=Di(Sk- Sk公司-1). (8) 之前的定义是对[72,54]中所做选择的概括。考虑宪章主义者或原教旨主义者的ABCEM模型的例子有【68、24、14、15、24、46】。2.3环境在本节中,我们将介绍元模型的第三个方面:环境。环境的另一个名称是耦合,它代表了许多yabcem模型的关键组成部分。经常使用的环境是放牧机制。Kirman(61)可能是第一个使用放牧的人。羊群效应使投资者聚集在一起,并在金融机构之间建立高度的相关性。这导致市场价格的快速上涨或下跌以及非高斯价格行为。有几个模型实现了放牧机制。g、 [5、62、61、31、46]。示例4。作为一个例子,我们给出了交叉模型的羊群机制【31】。

17
可人4 在职认证  发表于 2022-6-2 20:55:32
放牧压力ci>0描述每一种,进化读数为(ci(t+t) =ci(t)+如果σi(t)ED(t)<0ci(t+t) =ci(t),否则。因此,如果代理人的投资决策σi∈ {-1,1}与总超额需求ED的符号相反。这种情况对应于代理的位置处于少数的事实。如果放牧压力Ci达到阈值αi>0,代理将切换位置。切换后,放牧压力重置为零。这种羊群机制导致了代理人下方的额外耦合,通过与总超额需求的耦合引入。有关模型的进一步介绍,请参阅附录a.1。ABCEM模型中第二种常用的耦合机制是不同代理组之间的切换机制。切换允许代理更改投资策略,从而改变已实施投资策略的权重。因此,价格行为主要受一种投资策略的影响。切换或更准确地说,切换率通常由适应性度量触发。投资者或投资者群体的能力衡量通常是对不同投资策略的过去或实际绩效的比较。因此,这种切换机制再次在试剂之间产生额外的相关性。突出的例子有【14、15、46、74】。尽管如此,我们必须指出,在ABCEM模型中还有其他环境,这些环境似乎可以创建样式化事实。例如,网格拓扑上的代理交互或通过全局信息流的耦合【106,49】。3 SABCEMM软件在本节中,我们将鸟瞰我们的模拟软件SABCEMM(模拟基于代理的计算经济市场模型)。它允许直接实现第2节中介绍的一般ABCEM模型。

18
mingdashike22 在职认证  发表于 2022-6-2 20:55:35
首先,在第3.1节中,SABCEMM仿真软件数值核心的构建块是laidout。然后,我们注意到如何在现有代码库的基础上构建新模型,以便在第3.2节中创建新模型,而几乎不需要额外的编码。作为下一步,我们将在本软件项目第3.3节中讨论软件测试的重要性和实现。然后,在第3.4节中,我们给出了代码的可伸缩性和效率的结果,表明该代码适合于模拟包含300多万个代理的模型。最后,我们讨论了不同伪随机数生成器对模拟时间3.5节的影响。所有模拟结果可在【103】下载。SABCEMM仿真软件的面向对象设计允许实现Dijkstra[38]的关注点分离原则。更准确地说,我们遵循一种基于类的面向对象编程方法,如[88]所述。在我们的特定案例中,面向对象使用户能够在现有构建块的基础上测试和实施新的经济物理模型,而SABCEMM模拟器中的额外编码最少。代码记录在参考手册中,我们提供了用户指南,以便于使用我们的软件工具。完整的代码库可以在GitH上下载ubhttps://github.com/SABCEMM/SABCEMM并且可以作为读者进一步代码开发的示例。此外,我们还提供了代码摘录的链接,以展示代理动力学到C++代码的转换。在附录A.4中,我们按照【84】中提出的类别对软件进行分类。3.1数值核心在本节中,我们介绍了SABCEMM仿真软件数值核心的设计,即仿真回路本身中使用的软件部分的设计。

19
何人来此 在职认证  发表于 2022-6-2 20:55:38
数值核心的三个主要构建块和模拟的主要工作区被划分为抽象类:Agent、ExcessDemandCalculator和PriceCalculator。然后使用这些构建块的专门子类来实现要模拟的模型,这大大降低了实现新经济物理模型的成本。构建块的交互由类StockExchange协调。图2中的类图显示了数字核心的构建块。抽象类代理抽象类代理定义了通用接口,即模拟所需的所有代理类型的一般特征。为了符合[49、31、69、70],每种代理类型都需要以下成员变量:https://sabcemm.github.io/SABCEMM/https://github.com/SABCEMM/SABCEMM/wiki/User-导向交叉羊群机制:https://github.com/SABCEMM/SABCEMM/blob/v0.1-alpha/src/Agent/AgentCross.cpp#L138-L140Harras ED:https://github.com/SABCEMM/SABCEMM/blob/v0.1-alpha/src/ExcessDemandCalculator/ExcessDemandCalculatorHarras.cpp#L71-L87图2:数字核的类图股票是代理人在不同时间持有的股票数量。在更复杂的模型中,如[49],代理商可以买卖不同数量的股票现金是代理人可用的金额。在简单的模型中,这被称为财富,因为拥有的股票和可支配现金之间没有区别决策通常可以采用三个离散值{-1、0、1}代表销售/否/购买订单。o交易量是指代理人想要买入或卖出的股票数量。请注意,并非所有特征都与所有模型相关,即一些特征可能设置为1/0以避免代码重复。

20
kedemingshi 在职认证  发表于 2022-6-2 20:55:41
此外,每种代理类型都需要实现以下方法:oupdateAgent()进行所有必要的计算,以将代理从一个时间步迁移到下一个时间步,例如修改其决策并更新现金/股票。oupdateBisection()仅在rational市场中需要。在搜索下一个价格时,必须调整代理的一些数量,而其他数量必须保持不变。请注意,对于具有依赖于环境的代理的模型(请参见第2节),需要将环境集成到代理类的专门化中。示例5。[49]定义的代理被分组在具有周期性边界条件的虚拟方形晶格上,这样每个代理都有四个邻居(详情见附录a.1)。因此,代理类的相应专门化可以管理邻居。抽象类PriceCalculator定义了计算股票新价格的所有实现的通用接口。calculatePrice方法确定每个时间步的新股票价格。第2节中介绍的每个价格机制都在抽象类PriceCalculator的子类中实现。抽象类ExcessDemandCalculator描述了每个类的接口,实现了一种计算模型中超额需求的方法(比较第2节)。超额需求表示代理和价格之间的耦合元素。methodcalculateExcessDemand迭代所有代理并收集其微观超额需求,以计算全局超额需求。请注意,价格计算器依赖于超额需求来确定新的股票价格。股票交易类代表代理、价格计算器和超额需求计算器之间的交互。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-11 14:03