您现在的位置:程序化交易>> 程序化交易>> 程序化老手>>正文内容

用蒙地卡罗模拟法来看资金管理的一些模型[程序化老手]

有些人在开发出来一套系统之后,就会开始投入资金作实际的交易了。有关于资金管理的议题,大部分的人可能用固定资金模型(比如说三十万台币作一口台指期),或是用像我很久以前用的模型:每一口所需要的保证金加上系统的maximum drawdown来操作一口,比如说系统测试出来的maximum drawdown是15万台币,那加上台指期每口的保证金8万,就用15+8=23万台币来操作一口台指期商品。然后就认为这样的资金应该就足够可以作长久的操作了。

但是这样的资金管理方式其实还是有断头(破产)风险的。尤其是对于使用顺势系统的人而言,顺势系统的特性就是输小赢大,在市场没有出现趋势的时候,系统可能会被巴来巴去。这时候会出现很多笔小额的亏损,然后等到趋势发生的时候,再来狠狠的赢上一笔大金额的获利。

这时候有一个问题会产生:如果我们的资金在很多笔小额亏损的时候就全部输光光的话,怎麽办?

答案其实也很简单:就是断头(破产)而已。

如果准备的资金不够充足的话(<=这句话是重点),很可能在趋势还没发生的时候,我们就已经没钱可以继续赌下去了。更让人吐血的是,市场通常在我们断头破产以后就出现一个完美的大趋势。这时候我们就只能看著市场喷出的K线图在牆角哭泣而已。

接下来可能会有人问:那我到底应该准备多少资金来作交易才足够?

这裡跟各位报告一个方法,可以用蒙地卡罗模拟的方法来看每种资金管理的方式,对于我们的最终财产和破产风险(risk of ruin)的影响会是如何。

蒙地卡罗模拟法的作法是:採用交易系统所测试出来的每一笔输赢资料,经过乱数的挑选,去模拟未来实际交易时所可能会产生的资金曲线(equity curve)。然后搭配不同的资金管理模型,来看最终财产和破产风险的机率百分比。

这裡就以我实际交易的e-mini S&P 500系统来作例子说明(系统在这篇文章有说明:

http://tw.myblog.yahoo.com/Blue-Specula ... =1#yartcmt

这个系统过去11年的equity curve长的是像这样的,看起来应该还可以。在贴出文章以后也赌赢了一些钱,:

 

这个系统一些基本的测试资料和假设如下:
历史测试时间: 1997 – 2008年,约11 年的时间
Max drawdown(Intra-day) : 约USD $17,000
交易保证金:约USD$6,000(接下来我们假设交易过程中,如果资金输到比一口的保证金还要少而无法开仓的话,就断头破产出场,不再交易)
交易成本:滑价和佣金,每次来回设USD$30。
作1000次的模拟,看系统在未来一年的交易状况。


现在我们看几种资金管理的模型,来看不同的资金管理模拟出来的结果会是如何:
1. Fix contract(每次都只交易一口),用保证金三倍的初始资金来作交易。
2. Fix contract(每次都只交易一口),用保证金 + maximum drawdown的初始资金来开始交易。
3. Fix amount(每固定USD $10,000元交易一口合约)
4. Conservative Fixed(下面会详细说明公式)

1. Fix contract(每次都只交易一口),用保证金三倍的初始资金来作交易。
保证金是USD$6000,所以三倍的金额就是USD$18,000。那我们用USD18,000来开始交易。最终财产的分配图长的会是像这样。


可以看得出来,如果我们只用USD18,000来作交易的话,经过一年的交易以后,我们仍然有7%的机率会被断头出场。而最终财产的中位数会是落在USD$26,500左右。
而发生Maximum Drawdown的中位数约略是30%,也就是大约一半的人会发生30%的Maximum drawdown。


2. Fix contract(每次都只交易一口),用保证金 + maximum drawdown的初始资金来开始交易。
保证金是USD$6000,Maximum drawdown是USD$17,000。那我们用6,000+17,000=USD23,000来开始交易。最终财产的分配图长的会是像这样。


可以看得出来,如果我们只用USD23,000来作交易的话,经过一年的交易以后,我们被断头出场的机率会由7%降到变成只有2.5%。而最终财产的中位数会是落在USD$30,000左右。


而发生Maximum Drawdown的中位数会由30%降为26%,也就是大约一半的人会发生26%的Maximum drawdown。

3. Fix amount(每固定USD $10,000元交易一口合约)
接下来我们提高准备的初始资金,然后採用不同的资金管理模型。假设我们准备USD$30,000来开始交易的话。然后採用fix amount的资金管理模型,也就是每USD10,000交易一口合约,如果我们初始资金是三万的话,就是交易三口合约。当资金增加到八万的时候,就交易八口合约。依此类推。

这样最终财产的分配图长的会是像这样。


可以看得出来,如果我们增加初始资金到USD$30,000来作交易的话,经过一年的交易以后,我们被断头出场的机率会增加到12%左右,因为现在等于是每一万元就交易一口,风险会变的比较大。而最终财产约略会是落在USD$42,000左右。
发生Maximum Drawdown的中位数,则会因为我们随著资金的增加,而增加我们交易的口数。会提高变成为65%,也就是大约一半的人会发生65%的Maximum drawdown。这种drawdown看来是有点难以让人接受。


4.Conservative Fixed
这个模型有点类似fix amount模型,但是增加交易合约数量的速度比较慢一点。是属于比较保守一点的资金管理模型。
计算的方式是:
第一口合约所需资金 = 保证金 + Maximum Drawdown
第二口合约所需资金 = 第一口合约所需资金 + 保证金 + Maximum Drawdown*2
第三口合约所需资金 = 第二口合约所需资金 + 保证金 + Maximum Drawdown * 3
第四口合约以下就是依此类推。
 

假设我们同样也是准备USD$30,000来开始交易的话。然后採用conservative fixed的资金管理模型。这样最终财产的分配图长的会是像这样。


可以看得出来,如果我们採用这个资金管理的模型后,我们被断头出场的机率也会大幅减少,变成不到1%。而最终财产的中位数会是落在USD$38,000左右。
而且发生Maximum Drawdown的中位数,也会因为我们採用比较保守的资金管理模型,降低变为只有20%,也就是大约一半的人会发生20%的Maximum drawdown。这种drawdown看来就比较容易让人接受一点。


上面简单介绍几种资金管理的模型和蒙地卡罗的模拟方法。刚开始看的人可能会觉得很难,其实懂了原理以后就不会很困难。这个蒙地卡罗测试的软体是免费的,有兴趣人的可以来这裡download:
http://www.tickquest.com/product/equitymonaco.html
我个人是觉得很好用。而现在财务风险管理裡面所谈的Value at Risk(VaR,风险值),也可以用这种蒙地卡罗模拟来做出来。VaR是风险管理当中的一个衡量值,有兴趣的人可以到这些地方看看:
http://greenhornfinancefootnote.blogspot.com/2007/11/risk-metricsstandard-deviationrisk-of.html
http://tw.myblog.yahoo.com/601114-VAR/
http://web.ydu.edu.tw/~kkau/risk/VaR.ppt#1
蒙地卡罗模拟的限制:
 其实蒙地卡罗模拟法也是有他的限制和缺点的。因为蒙地卡罗模拟法是採用系统”过去的测试资料”来作”未来的模拟”。所以有一个很大的限制,就是如果这个系统是经过over-fitting的话,那麽过去的历史资料就会很漂亮,而我们用这种很漂亮的历史资料去跑任何的模拟,也都是假的。所以先决条件就是系统不能有over-fitting的情形发生,要避免这种情形就要靠walk forward analysis,参数孤岛(参数高原)等方法来避免。这一点在部落格之前的文章有做过说明了。
而如果过去的历史资料没有包含到类似像世贸大楼911事件,或是520两颗子弹事件,则在未来的时间如果发生像这种重大事件的话,则需要靠情境分析(Scenario Analysis)和压力测试(Stress testing)来作分析了。

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198   点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容