VeighNa量化社区
你的开源社区量化交易平台
Member
加入于:
帖子: 33
声望: 1

这是class optiondata里的一段, updatetrade只需要更新pos greeks但是update tick的时候应该是都要计算,因为option的greek 组合的greek都会受impv的影响

def update_tick(self, tick: TickData) -> None:
    """"""
    super().update_tick(tick)
    self.calculate_option_impv()

def update_trade(self, trade: TradeData) -> None:
    """"""
    super().update_trade(trade)
    self.calculate_pos_greeks()

def update_underlying_tick(self, underlying_adjustment: float) -> None:
    """"""
    self.underlying_adjustment = underlying_adjustment

    self.calculate_option_impv()
    self.calculate_theo_greeks()
    self.calculate_pos_greeks()

因为我自己构造几个tick然后手工触发update tick发现不同的顺序传入tick,最后算出来组合的结果不同:

    p.update_tick(tick_data)
    p.update_tick(tick_data_p)
    p.update_tick(tick_data_c)

所以我觉得optiondata updatetick的时候,需要计算impv greek posgreek 同时chain updatetick的时候也需要计算posgreeks

Member
avatar
加入于:
帖子: 14
声望: 0

帮你顶上去,我也有同样的疑惑

Administrator
avatar
加入于:
帖子: 4502
声望: 321

OptionMaster模块是给实盘用的,实盘中数据是连续的。

理论上当然每次变化都做计算是最准确的,但实践中这会导致大量无必要的计算浪费效率,OptionMaster是在效率和精确之间选择了个平衡。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】