To use the features described below, include the ib-extensions Gem in the Gemfile and use
require 'ib-api' require 'ib/verify' require 'ib/option-greeks'in your scripts.
Greeks
If we ask for market-data of an IB::Option, the TWS returns price data and Option Greeks.
IB::Option.request_greeks
populates the IB::Option.greek
property ( and returns the greeks as hash ).
It accepts the parameter :what
{ :model, :bid, :ask, :last, :bidask, :all }, default is model
,
ie. the calculated Greeks. For batch-processing, a threaded approach is supported via the parameter thread: true
.
The processing is expensive, it takes about 2 seconds to receive the data from the tws-server.
cien = Option.new( symbol: 'CIEN', strike: 50, expiry: 202107, right: :put, exchange: :smart ).verify.first
--> INFO::<Option: CIEN 20210716 put 50.0 SMART USD>
cien.request_greeks
=> {:tick_type=>83, :implied_volatility=>0.3860515283461521e0,
:delta=>-0.3163006034515305e0, :option_price=>0.16924407617796515e1, :pv_dividend=>0.0,
:gamma=>0.4684449764772187e-1,
:vega=>0.7141634363804972e-1,
:theta=>-0.2681911830789842e-1, :under_price=>0.53e2}
puts cien.greek.to_human
< optionPrice: 1.70818, UnderlyingPrice: 52.95 impl.Vola: 0.386052 ; dividend: 0;
Greeks:: delta: -0.318621; gamma: 0.0470364, vega: 0.0733351; theta: -0.026878 >