实时计算交易盈亏、平仓盈亏和浮动盈亏

       先看股票。从单笔交易来看,即先买后卖,那么很自然的,盈利就是卖价减去买价;对于多笔交易,如果可以追踪每笔交易的成交价格以及买卖时点,那么我们就可以精确的知道每笔平仓交易的盈亏,最后加总起来就可以了。这个想法很朴素,因为我们需要追踪每笔交易以及知道平仓对应的开仓交易,这样用卖价减去买价,自然就是这笔交易的盈亏。这种想法的代价就是我们需要知道的信息太多,包括每笔交易的价格和数量、买卖顺序以及平仓顺序。但是这种想法有助于我们得到更加简单的算法。

       实际上,通过上面最朴素的想法,最后加总起来可以发现,最后的盈亏就等于所有的卖价和手数的乘积减去买价和手数的乘积,因为我们在意的是总盈亏,而不是每笔交易的盈亏,所以每笔交易的时点和平仓顺序这个信息其实不再重要。因此,两个时间点之间的盈亏就等于累计卖价乘以手数减去累计买价乘以手数。

       如果末时点有持仓,那么持仓按照最新市价计算盈亏,即假设用最新市价平仓可以获得的收益来计算总盈亏,市价是作为卖价还是买价,取决于持仓方向。如果初时点有持仓,那么假设初时点的持仓以前一日收盘价建仓即可,卖价还是买价取决于仓位方向,这个取决于具体的规定。这样便可以计算实时盈亏,只是不同的时点需要更新买卖信息以及最新价而已。

       接下来看期货,期货和股票的主要区别在于期货可以在多头和空头分别建仓,即可以在买的方向上建仓,同时也可以在卖的方向建仓。例如假设我们已经有多头仓位,接下来卖出一手,可以卖出开仓,也可以卖出平仓,而不是强制性的卖出已有的多头仓位即平仓。看起来,多了一层开平的逻辑使得盈亏的计算更复杂了,但实际上并不然。开平和盈亏无关,即我们卖出或者买入一手,无论是选择开仓还是平仓,不会影响我们实际的盈亏,我们需要在意的只是买卖方向。比如,假设我们已经有了多头仓位,现在卖出一手,如果选择平仓,那么就跟股票一样了,如果选择开仓,那么盈亏和平仓是一样的,相当于锁住了一手的盈亏,因为无论市场价格怎么变化,一方的盈亏都会被另一方抵消。因此,我们计算盈亏时,不需要关心是开还是平,只需要关心到底是买还是卖,然后同样的通过累计卖价和手数乘积减去累计买价和手数乘积即可,和股票一样。

       由于只在于买卖方向,不在意开平,因此如果时点初末有持仓,只需要关心净持仓,即裸头寸即可,因为其他持仓数量相等方向相反,卖价减去买价中,买卖价格都是用相同的结算价或者市价,因此直接抵消了。所以,对于期货,算法和股票一样,只是不要被开平逻辑迷惑;对于时点的持仓,也只需要计算裸头寸的即可。

       最后,区分一下平仓盈亏和浮动盈亏。总盈亏等于平仓盈亏和浮动盈亏,平仓盈亏就是已经实现的盈亏,即通过平仓获得的盈亏,而浮动盈亏则是现有持仓产生的盈亏,是根据当前市价或者结算价计算出来的盈亏,即未实现盈亏。但是如果要分别知道平仓盈亏和浮动盈亏,就需要知道未平头寸对应的开仓价格是多少,这就相当于要知道平仓顺序,以及每笔交易的顺序了,这样才可以准确的计算浮动盈亏以及平仓盈亏,而且此时由于每笔交易买卖对应关系是重要的,不能累计抵消,因此未平头寸需要分开每笔交易计算,不能合并只看净头寸。但是由于要记录每笔交易的顺序和平仓顺序,这个比较耗费内存,因此,通常来说,可以用之前所有买方向的成交量加权平均价作为未平空头的建仓价格,卖方向的成交量加权平均价作为多头的建仓价格,这样来估算浮动盈亏。要注意,用加权价格计算浮动盈时,也要用同样的价格计算平仓盈亏,这样才能保持总盈亏始终是正确的;当然,计算出浮动盈亏,用总盈亏减去浮动盈亏倒推平仓盈亏也可以。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值