既然是金融与计算机学习笔记,今天说一些两者共性的东西。

计算机与金融虽然是两个具有根本性差异的领域,但他们的共性之一是整个体系中始终伴随着基本不可调和的互斥因子。在计算机领域我们常提的便是空间与时间,你无法让系统做到耗时最少,同时消耗最小的空间资源,而金融领域,不用多说,首当其冲的便是收益与风险
很多情况下我们都会在互斥因子中寻求一个折中方案,即tradeoff,其中一种做法就是简单的稍微牺牲一项来强化另外一项。比如,在计算机领域增加缓存来提高响应速度(典型的空间换时间),比如金融领域的减仓、加仓(风险与收益互换),都可以认为属于此范畴。这是非常普适的做法,基本可以适合任何状态的系统。
虽然上述方案朴实无华且实用,但并非tradeoff的全部。大家会发现,对于某些相对稳态的系统,引进“虚增”或者说“虚拟化”的思想往往可以取得更优解。我们来说说这个方案的思想。
先说金融领域,继续以期权为例,在期权交易策略里面有一个常用的经典策略叫做covered call。所谓covered call,即对自己手里一定数量股票做一个卖出看涨期权(sell call option)。这个策略里,虽然你看似多了一个头寸,却是以准备卖出手里的股票为代价,合约若执行你无法同时拿到钱还保留原有的股票。因此可以理解为是个“虚增”的头寸。对于covered call,若处于上涨行情,他会限制你的收益上限,若处于下跌行情,他虽然会通过权益金弥补部分损失,有明确的下行保护作用,但远不如直接减仓所持股票来得明智。因此,covered call的哲学是当你对一只股票未来一段时间的走势预期为横盘或者微跌时,可以选择的交易策略。
很明显,他就是一个相对稳态系统中可以使用的tradeoff。在这种场景中,我们并不需要通过加减仓来平衡收益与风险,而是通过“虚增”自己的头寸,降低风险,同时增加收益。但还是要强调一遍,这个sell call option是实实在在存在的头寸,只是考虑到与所持股票其实为一种多空相对的关系,因此可以用“虚增”来理解。

这种思想在计算机领域非常常见,这里就举个例子。我们知道,计算机理论中内存分为虚拟内存与物理内存,用户进程访问物理内存都需要通过虚拟内存。
在引入虚拟内存概念之前,一旦用户进程与内核进程填满物理内存,新的用户进程将无法被创建。引入虚拟内存后,通过虚拟页拥有了更多的映射空间(虚拟内存=物理内存+磁盘可置换空间)。虽然CPU寄存器只能访问物理内存,计算机瞬时处理的上限并没有提高,但虚拟内存的引入意味着更多的创建更多进程被允许。
其实计算机大部分时间可能都处于进程数较为饱和(简单理解你开启了不少程序),但活跃进程数处于可处理能力以内(某个时间段你在用的程序也就那么一两个)的状态,因此虚增内存空间在硬件水平还不是那么发达的年代,是非常合理的做法。可当活跃进程数激增,虚拟内存虽然通过开辟更多的磁盘交换空间保证进程都可以存在,但会发生频繁查询页表、页面置换操作,仅仅依赖虚拟内存被认为是低效的,更好的办法就是扩展物理内存。而当系统进程数非常少的时候,其实虚拟内存存在的必要性就大打折扣,毕竟页表查询始终要有,对程序的执行会带来一点点时间消耗。
不过,需要强调一点,现如今计算机的硬件条件越来越强,物理内存本身的承载能力很多时候已经绰绰有余,虚拟内存的作用慢慢趋向于防止用户态直接访问内核空间,即保护与管理的意义多于提升空间阈值(可创建进程数)的意义。但是,从计算机发展的角度来看,我们还是可以把虚拟内存理解为一个用于稳态系统的tradeoff。这种思想,其实与covered call不谋而合。
虚拟化是一种思想或者说思路,但没有严格的范式,通过虚拟化强化了某个因子,代价依然是弱化其对立因子。covered call虚增更多头寸强化了风险控制,弱化了收益上限。虚拟内存强化了可创建进程数(空间),弱化内存读取速度(时间)。tradeoff毕竟是tradeoff,他是权衡策略,而并非两全其美策略。只是在相对稳态系统,通过虚拟化取其一是完全可以接受的。

题外

前不久写了一篇微服务知识体系简单梳理,由于所写的主题比较大不敢轻易分享。技术文章是这样,越细节的东西越好切入,越宽泛的东西反而很难写得非常全面,毕竟个人的认知有他的局限性,不过还是欢迎各位各抒己见多多指教。
另外,有些朋友希望能写一个公众号,其实我是有的,只不过停更了很久。后面写文章我也尽量同步推到公众号上,所以欢迎大家关注下。