setPricingEngine 导入 pyql

setPricingEngine import pyql

european_option = VanillaOption(payoff, exercise)


spot_handle = SimpleQuote(spot_price)
flat_ts = FlatForward(calculation_date, risk_free_rate, day_count)
dividend_yield = FlatForward(calculation_date, dividend_rate, day_count)
flat_vol_ts = BlackConstantVol(calculation_date, cal, volatility, day_count)

bsm_process = BlackScholesMertonProcess(spot_handle, 
                                        dividend_yield, 
                                        flat_ts, 
                                        flat_vol_ts)

european_option.setPricingEngine(AnalyticEuropeanEngine(bsm_process))

报错

  File "qlexam.py", line 63, in <module>
    european_option.setPricingEngine(AnalyticEuropeanEngine(bsm_process))
AttributeError: 'quantlib.instruments.option.VanillaOption' object has no attribute 'setPricingEngine'

我需要导入什么?

您不需要额外导入。错误的原因是 pyql 开发人员导出了一些具有不同名称的 QuantLib,以便遵循 PEP 8 并在 Python 中更加地道。正确的叫法是

european_option.set_pricing_engine(AnalyticEuropeanEngine(bsm_process))

this pyql example 可以看出。