Excel是世界上最危险的软件工具

云计算
最近一篇被全世界媒体大量引用并被欧美政客广泛用于证明推行经济紧缩政策有效(即通过削减政府开支,降低高预算赤字,减少政府债务以推动经济增长)的知名经济学论文被发现本身含有严重缺陷——作者用Excel电子表格处理数据时用错了公式。

 [[71293]]

 

和乐高玩具一样,微软公司的电子表单程序Excel也是一个妇孺皆知,老少咸宜,经久不衰的的办公宠儿,你可以用它来统计每月的零花钱流水帐,也可以用来计算复杂的投资风险模型,但是很少有人意识到,在Excel平易和强大的外表下,潜伏着巨大的商业风险。

最近一篇被全世界媒体大量引用并被欧美政客广泛用于证明推行经济紧缩政策有效(即通过削减政府开支,降低高预算赤字,减少政府债务以推动经济增长)的知名经济学论文被发现本身含有严重缺陷——作者用Excel电子表格处理数据时用错了公式。

2010年初,两名哈佛大学(Harvard)经济学家卡门·莱因哈特(Carmen Reinhart)和肯尼斯·罗格夫(Kenneth Rogoff)发表了一篇论文,题为《负债时代的增长》,文章声称要找出政府债务的关键性“阈值”,一个拐点。他们表示,一旦债务超过了国内生产总值(GDP)的90%,经济增长会严重放缓。论文发表时希腊刚刚爆发危机,正好迎合了许多主张把政策“重心”从刺激转向紧缩的官员。因此这篇论文迅速走红。

随着时间推移,另一个问题出现了:其他的研究人员,使用看上去差不多的债务和经济增长数据,无法重现莱因哈特-罗格夫的研究结果。他们一般都能在高负债和低增长之间找到某种关联——但是没有90%这种拐点,或者任何特定的债务水平。后来莱因哈特和罗格夫终于同意让马萨诸塞州立大学(University of Massachusetts)的研究人员查看他们的原始Excel数据表——这个结论无法再现的谜解开了。首先他们遗漏了一些数据;其次他们用了非常规的、非常不可取的统计程序;最后,是的,他们的Excel代码出了个错。把这些怪异和错误的地方改正后,你就得到了其他研究人员的发现:高债务和低增长之间存在某种关联,看不出谁是因谁是果,至于90%这个“阈值”就完全看不出来。这篇文章的结论虽然被证明是错误的, 但是由于这篇论文的影响给全球经济造成的损失却是无法估量的。 Excel的威力可见一斑。

不过, 并不是所有的损失都是无法估计的。 在2012年5月, 摩根大通银行(JPMorgan)的交易员Bruno Michel Iksil(绰号“伦敦鲸”)在企业债券衍生品交易中就因为Excel模型的错误导致了20亿美元的损失。

故事是这样的, JP摩根的首席投资官办公室需要一个估算投资价值及风险的模型(Value at Risk)用以指导衍生品交易。 这个模型由一系列的Excel表格组成,通过手动的从表格间复制数据。 “伦敦鲸”事件后, JP摩根的内部调查发现, “伦敦鲸”在交易操作中并没有违规。 随后, JP摩根的模型审查小组对投资模型进行了审查, 他们发现了一些错误, 比如模型计算并不是自动化, 有些地方的数据错误等。 但是, 最大的错误就是,在一个本来应该是除以“新利率和旧利率的平均值”的公式里, 模型设计者错误的除以了“新利率和旧利率的和”。 这个错误可能会导致对波动性的估算降低一半, 从而影响VaR模型。 而根据这个模型进行交易的“伦敦鲸”, 则由于不知道实际风险要远大于模型的风险, 从而导致交易量超过实际应该进行交易的量。

这次“伦敦鲸”事件, 直接导致了JP摩根20亿美元的交易损失,而且JP摩根估计实际损失可能会超过75亿美元, JP摩根的市值因此缩水397亿美元并且导致JP摩根的CIO(首席投资官)辞职。

总结:

随着企业对数据分析的需求越来越高, Excel在很多企业里都是必备的工具。 Excel很容易学习, 这也使得很多没有编程经验的人可以使用Excel, 不过这也使得在一些重要场合使用Excel变得很危险。 Excel不是一种编程语言, 它不具备调试和测试的功能。而现有的Excel高级编程培训, 也并不重视对代码质量的要求。 这也导致了很多公司使用的Excel模板或者工作表, 除了最早的创建者之外几乎没人能看的懂, 更不要说去维护了。

因此, 对于企业来说, 在数据分析中使用Excel,可以参考下面的一些原则:

1)在重要的数据分析场合, 特别是一些需要长期使Excel用的模型,要尽量不用Excel来实现。 利用编程语言来实现, 虽然麻烦一些, 但是从调试到测试到维护, 都会容易很多。

2)一些Ad Hoc的工作, Excel会方便一些, 不过要尽量把Excel表格简单化。很多分析师喜欢炫耀Excel技巧而把表格搞得过于复杂。 从软件维护的角度来看, 这样的做法对于工作表的维护来说,困难很多。 因为Excel的引用和注释都很难追溯, 在表格关联复杂的情况下对使用者和维护者来说都是噩梦。

3)在Excel编程培训中,要按照软件工程的一些原则, 对代码的设计提出要求。 增加代码的可读性, 可调试和可维护性。

原文链接:http://www.ctocio.com/ccnews/12146.html

责任编辑:王程程 来源: IT经理网
相关推荐

2019-07-21 07:37:20

APT恶意软件网络安全

2023-07-31 08:59:46

软件FossilSQLite

2018-11-06 12:22:18

排序算法代码

2013-03-18 14:33:05

2024-10-14 10:58:13

2010-09-02 13:21:46

2014-09-05 09:08:58

2013-06-09 08:52:50

哈希表

2024-01-11 09:11:08

数据库SQLite管理

2019-11-18 15:07:54

编程语言C#

2015-11-25 09:41:05

数据中心

2017-12-04 23:25:24

2014-02-11 09:58:19

环保数据中心泰坦

2020-03-03 21:46:56

智能交通物联网智慧城市

2013-07-09 10:11:41

程序设计大赛程序员

2019-12-12 08:26:34

技术网络安全人工智能

2015-02-26 11:14:18

2015-08-11 09:18:44

程序员最好

2024-07-10 10:25:15

2024-07-15 09:06:51

点赞
收藏

51CTO技术栈公众号