嵌入式技术
说一说我的背景,大学里c入门,转入R。在学校里弄了一阵生统与经济。现在搞云端理财的网站,后端是用R实现的,搞量化风险管理和资产组合的,其中要用到很多运算。R已用了有些年头,见过一些写金融包的男神女神,时常会通信见面(@任坤,github看过了,拜拜你哈哈),去过芝加哥的 Rfinance大会,看看R在金融保险的前沿是什么样的。网站已经进入了第二开发周期。对R有了另一种感悟。
对于量化金融分析师,R是拿来用的。对于金融软件开发者,R是用来拆的。。。请听我慢慢道来。。。
对于金融人士来讲,R也许能被我片面地概括几个领域:时间序列,模拟预测,最优化,制图(其实最终还是要归总到贝叶斯,最优化,和simulation的问题)。这些R的工具涵盖的金融方面有:资产组合,量化风险,资产定价,交易模拟,制图报告等。几乎可以满足所有机构投资人与个体投资人的需求。“听起来好诱人哦,好像万金油一样,R好强大哦~“大家心里可能会这么想。不过实话说,这并不是R的功劳,这是给R写包的人的功劳。在cran上的包,是有多少人不(xian)辞(de)辛(dan)劳(teng),大(ai)公(mu)无(xu)私(rong)堆上去的啊。
如果作为一个量化分析师,学R的意义在于,你可以对你的分析更可控。可是你千万想好这几点再去深学: 1. 你同事愿意读代码还是愿意读excel?如果其他人都用vba,会显得你格格不入,甚至降低团队效率。2. 你真的需要那么多可控性吗?真的有必要用单反相机照午餐放到微博去吗?如果真的需要(代表你不是因为刻意用R才用R),用尼康(比喻成R)与用佳能(比喻成matlab)真的那么重要吗? 绝不是打消各位学R的积极性,或者居高临下给大家喝鸡汤。这些是亲身感悟。很多时候为了自己装高贵冷艳,总会学一些冷门的手艺,这样用不熟的技术闭门造车,其实很耽误事。毕竟分析师的最终结果是分析,最注重的是分析效率。具体怎么得到结果的,你只会看图表的老板才不管呢。~_~ 。。。如果以上答案都是yes,那你还在这里看我的帖子干什么,赶紧去cran看包裹吧。这个是一个知乎的传送门,各位神们讲的很好了,不在这里卖骚了:
该如何学习 R 语言?
如果作为一个金融统计软件开发者,R会让你很失望,因为它追求的是概括性以及抽象性,并不是performance。开发时你会经历这样几个循环:
第一步:哇,别人已经写了这个问题的解决方案了,我能偷懒了
第二步:这个包裹好像没有我想要的方程 / 这个方程写的太烂了 / 多余运算太多了 / 靠,O(n^4)啊有木有,总之就是各种不满意
第三步: 自己去啃包裹里面c和fortran的代码,重复劳动
问题终于被攻克,下一问题,请回到第一步。所以如果你做软件开发,请端正心态。R不像java那样什么class都为你写好了拿过来就用,R不是一站式服务。如果可以的话,请仔细阅读源代码,领会作者,取其所需,没有赘肉的移植到底层语言c或fortran,再用OO类语言裹上一层API以便团队使用。我有一阵子走上了邪路,总要把R本身性能提高,想尽一切办法,比如共享内存,毫无必要的平行运算,减少reference,甚至尝试过compile R的代码。这些蛋疼的执着也就顶多把性能提高一点点。与其这样,还不如用底层语言直接写。为什么要逼刘翔去摘跳水冠军呢?大家各有所长。我的回答也是我走弯路的小结:
在牢骚一点,也是提醒自己不要在钻死牛犄角,运算架构优化 远大于 方程优化 远大于 语言选择。从下往上的优化是邪路,容易走火入魔。把mapreduce写好一点,storm的topology些精巧一点比死扣R强多了。
说了那么多也许没有很好的扣题,不过就当作我对R新的领悟的自我整理吧。下一阶段的开发,R实在是胜任不了。不过不代表R不是一款好的软件。如果再想起什么在交流吧。
全部0条评论
快来发表一下你的评论吧 !