VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 87
声望: 0

optionmaster 1.2.0, 美式期权,电子眼启动定价时,程序报异常。。
Traceback (most recent call last):
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\ui\manager.py", line 158, in on_clicked
self.manager.start_algo_pricing(self.vt_symbol)
~~~~~~~^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\ui\manager.py", line 488, in start_algo_pricing
self.algo_engine.start_algo_pricing(vt_symbol, params)
~~~~~~~^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\engine.py", line 610, in start_algo_pricing
result: bool = algo.start_pricing(params)
~~~~^^^^^^^^
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\algo.py", line 61, in start_pricing
self.calculate_price()
~
~~~^^
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\algo.py", line 269, in calculate_price
ref_price: float = option.calculate_ref_price()
~
~~~~~^^
File "C:\ProgramData\miniconda3\Lib\site-packages\vnpy_optionmaster\base.py", line 223, in calculate_ref_price
ref_price: float = self.calculate_price(
~
~~~~~^
underlying_price,
^^^^^^^^^^^^^^^^^
...<4 lines>...
self.option_type
^^^^^^^^^^^^^^^^
)
^
File "binomial_tree_cython.pyx", line 79, in binomial_tree_cython.calculate_price
File "binomial_tree_cython.pyx", line 40, in binomial_tree_cython.generate_tree
ZeroDivisionError: float division

以前也出现过, 曾经提过:
https://www.vnpy.com/forum/topic/2626-dian-zi-yan-dou-po-qi-quan-shi-ding-jie-pao-chu-yi-chang-zerodivisionerror:-float-division?page=1#pid9467
好的, 已经提了: https://github.com/vnpy/vnpy/issues/2379

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

我改了一下, 先将就着用用先:

base.py :

def calculate_ref_price(self) -> float:
    """"""
    #---------------------------------------------------
     # 添加数据验证
    if not self.underlying or not self.underlying.mid_price:
        return 0.0
    #---------------------------------------------------


    underlying_price: float = self.underlying.mid_price
    underlying_price += self.underlying_adjustment


    #---------------------------------------------------
    # 检查剩余时间
    if self.time_to_expiry <= 0:
        return 0.0
    # 检查波动率
    if self.pricing_impv <= 0:
        return 0.0
    # 检查行权价
    if self.strike_price <= 0:
        return 0.0
    #---------------------------------------------------





    ref_price: float = self.calculate_price(
        underlying_price,
        self.strike_price,
        self.interest_rate,
        self.time_to_expiry,
        self.pricing_impv,
        self.option_type
    )

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

沪公网安备 31011502017034号

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