ib-symbols 1.3 → 1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +37 -42
- data/lib/ib/symbols/combo.rb +17 -17
- data/lib/ib/symbols/futures.rb +19 -16
- data/lib/ib/symbols/index.rb +1 -1
- data/lib/ib/symbols/options.rb +71 -58
- data/lib/ib/symbols/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d1bc9c86251e8f43c4459fbeb43235be7321bd250b62cea5313efb666065a51
|
|
4
|
+
data.tar.gz: 35f69664c447f09ce44914f3ea959f0ced46df15b1569e365f14dd9fc6796075
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '058b8b0bcc0d4de69ba2ae7a647dd2347b7c3425374b603641427b8f68d410a6fa37b4247be9eb2cd59c5856bfeebb042d426936393e6b5e3f4f8971ca9a166b'
|
|
7
|
+
data.tar.gz: 742fec12dabf7f6c6f85649fd738e42edd86b9e87faf8488e0904cd8043cb5815e55e5c012c1c41aacede24faf519c7c280d2bff9c6265e56819713bb91a4e5f
|
data/README.md
CHANGED
|
@@ -5,10 +5,7 @@ __Documentation: [https://ib-ruby.github.io/ib-doc/](https://ib-ruby.github.io/i
|
|
|
5
5
|
|
|
6
6
|
__Questions, Contributions, Remarks: [Discussions are opened in ib-api](https://github.com/ib-ruby/ib-api/discussions)__
|
|
7
7
|
|
|
8
|
-
__Note: In July 2022 IB changed the exchange for german (and swiss) assets to »EUREX«.__ (Version 1.2)
|
|
9
|
-
|
|
10
8
|
---
|
|
11
|
-
|
|
12
9
|
__Predefined symbols and watchlists for contracts__
|
|
13
10
|
|
|
14
11
|
To activate use
|
|
@@ -25,6 +22,42 @@ in your script
|
|
|
25
22
|
|
|
26
23
|
---
|
|
27
24
|
|
|
25
|
+
## Handy Templates
|
|
26
|
+
|
|
27
|
+
`IB::Symbols::Index`, `IB::Symbols::Futures` and `IB::Symbols::Options` contain most popular contracts.
|
|
28
|
+
|
|
29
|
+
To list the predefined contracts use
|
|
30
|
+
```ruby
|
|
31
|
+
Symbols::Options.all.each{|y| puts [y,Symbols::Options.send(y).to_human].join( "\t")}
|
|
32
|
+
aapl <Option: AAPL 202303 call 130.0 SMART USD>
|
|
33
|
+
ge <Option: GE 202303 call 7.0 SMART USD>
|
|
34
|
+
goog100 <Option: GOOG 202303 call 100.0 USD>
|
|
35
|
+
ibm <Option: IBM 202303 put 0.0 SMART >
|
|
36
|
+
ibm_lazy_expiry <Option: IBM put 140.0 SMART >
|
|
37
|
+
ibm_lazy_strike <Option: IBM 202303 put 0.0 SMART >
|
|
38
|
+
...
|
|
39
|
+
|
|
40
|
+
Symbols::Futures.all.each{|y| puts [y ,Symbols::Futures.send(y).verify.to_human].join "\t" }
|
|
41
|
+
dax <Future: DAX 20230317 EUR>
|
|
42
|
+
es <Future: ES 20230317 USD>
|
|
43
|
+
eur <Future: EUR 20230313 USD>
|
|
44
|
+
gbp <Future: GBP 20230313 USD>
|
|
45
|
+
hsi <Future: HSI 20230330 HKD>
|
|
46
|
+
jpy <Future: JPY 20230313 USD>
|
|
47
|
+
...
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
The expiry is set to the next monthly or quaterly option/future expiration date. Most options are defined
|
|
51
|
+
without a strike. To specify a »real« contract use the merge method:
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
stoxx_option = IB::Symbols::Option.stoxx.merge( expiry: 202306, strike: 3950, right: :call )
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Watchlists
|
|
59
|
+
|
|
60
|
+
|
|
28
61
|
The GUI-Version of the TWS organizes symbols in different pages (Watchlists).
|
|
29
62
|
|
|
30
63
|
**`IB-Ruby`** uses the same concept to organize and optimize operational issues and to support research and systematic trading efforts. The lists are organized as `Enumerator`, which extents its use. This feature lives entirely in the filesystem, no database is required, no further dependency is involved.
|
|
@@ -38,7 +71,7 @@ By default, Watchlists reside in the `symbols`-directory of `ib-symbols`. This c
|
|
|
38
71
|
```
|
|
39
72
|
|
|
40
73
|
|
|
41
|
-
|
|
74
|
+
### Symbol Collections
|
|
42
75
|
Everything is kept elementary simple: Collections are stored as editable files. The format is YAML.
|
|
43
76
|
|
|
44
77
|
The CRUD Cycle
|
|
@@ -62,46 +95,8 @@ head :012 > IB::Symbols::Demo.all
|
|
|
62
95
|
=> []
|
|
63
96
|
```
|
|
64
97
|
|
|
65
|
-
## Predefined Collections
|
|
66
98
|
|
|
67
|
-
Most popular `Stocks`, `Options`, `Futures`, `Indices` and `Forex-pairs` are hard-coded.
|
|
68
|
-
```ruby
|
|
69
|
-
> IB::Symbols::Index.all
|
|
70
|
-
=> [:a_d, :asx, :dax, :hsi, :minihsi, :spx, :stoxx, :tick, :trin, :vasx, :vdax, :vhsi, :vix, :volume, :vstoxx]
|
|
71
|
-
> puts IB::Symbols::Index.contracts.values &.to_human
|
|
72
|
-
<Index: DAX EUR (DAX Performance Index.) >
|
|
73
|
-
<Index: AP AUD (ASX 200 Index) >
|
|
74
|
-
<Index: HSI HKD (Hang Seng Index) >
|
|
75
|
-
(...)
|
|
76
|
-
<Index: AD-NYSE (NYSE Advance Decline Index) >
|
|
77
|
-
|
|
78
|
-
> Symbols::Forex.eurusd.to_human
|
|
79
|
-
=> "<Contract: EUR forex IDEALPRO USD>"
|
|
80
|
-
# this contract is valid and can be verified, but the opposide is not supported by IB
|
|
81
|
-
> Symbols::Forex.usdeur.verify
|
|
82
|
-
TWS Error 200: No security definition has been found for the request
|
|
83
|
-
Not a valid Contract :: <Contract: USD forex IDEALPRO EUR>
|
|
84
99
|
```
|
|
85
100
|
|
|
86
|
-
## Pattern based Contract retrieval
|
|
87
|
-
|
|
88
|
-
To specify a specific Option can be a boaring job.
|
|
89
|
-
You might spend hours searching for a simple error, like a forgotten `:currency` oder `:exchange` entry.
|
|
90
|
-
|
|
91
|
-
Symbol-Collections can be used as template for everyday searches.
|
|
92
|
-
|
|
93
|
-
> Example: Customize a Index-Option with quaterly expiry.
|
|
94
|
-
>
|
|
95
|
-
> The hard coded `Symbols::Options.stoxx` template ensures the retrieval of only one option.
|
|
96
|
-
> A simple merge with customized attributes returns a fully qualified ContractRecord.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
```ruby
|
|
100
|
-
> IB::Symbols.Options.stoxx.to_human
|
|
101
|
-
=> "<Option: ESTX50 202012 put 3000.0 DTB EUR>"
|
|
102
|
-
> Symbols::Options.stoxx.merge( strike: 3300, right: :call).to_human
|
|
103
|
-
=> "<Option: ESTX50 202012 call 3300.0 DTB EUR>"
|
|
104
|
-
|
|
105
|
-
```
|
|
106
101
|
|
|
107
102
|
|
data/lib/ib/symbols/combo.rb
CHANGED
|
@@ -8,41 +8,41 @@ module IB
|
|
|
8
8
|
def self.contracts
|
|
9
9
|
|
|
10
10
|
@contracts ||= { #super.merge(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
stoxx_straddle: IB::Straddle.build( from: IB::Symbols::Index.stoxx, strike: 4000,
|
|
12
|
+
expiry: IB::Symbols::Futures.next_expiry, trading_class: 'OESX') ,
|
|
13
|
+
stoxx_calendar: IB::Calendar.build( from: IB::Symbols::Index.stoxx, strike: 4000, back: '2m' ,
|
|
14
|
+
front: IB::Symbols::Futures.next_expiry, trading_class: 'OESX'),
|
|
15
|
+
stoxx_butterfly: IB::Butterfly.fabricate( Symbols::Options.stoxx.merge( strike: 3900), front: 3500, back: 4300 ),
|
|
16
|
+
stoxx_vertical: IB::Vertical.build( from: IB::Symbols::Index.stoxx, sell: 3500, buy: 4000, right: :put,
|
|
17
|
+
expiry: IB::Symbols::Futures.next_expiry, trading_class: 'OESX'),
|
|
18
|
+
zn_calendar: IB::Calendar.fabricate( IB::Symbols::Futures.zn, '3m') ,
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
[ ComboLeg.new( con_id: 270581032 , action: :buy, exchange: 'DTB', ratio: 1), #DBK Dez20 2018 C
|
|
20
|
+
dbk_straddle: Bag.new( symbol: 'DBK', currency: 'EUR', exchange: 'EUREX', combo_legs:
|
|
21
|
+
[ ComboLeg.new( con_id: 270581032 , action: :buy, exchange: 'DTB', ratio: 1), #DBK Dez20 2018 C
|
|
22
22
|
ComboLeg.new( con_id: 270580382, action: :buy, exchange: 'DTB', ratio: 1 ) ], #DBK Dez 20 2018 P
|
|
23
23
|
description: 'Option Straddle: Deutsche Bank(20)[Dez 2018]'
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
),
|
|
25
|
+
ib_mcd: Bag.new( symbol: 'IBKR,MCD', currency: 'USD', combo_legs:
|
|
26
26
|
[ ComboLeg.new( con_id: 43645865, action: :buy, ratio: 1), # IKBR STK
|
|
27
27
|
ComboLeg.new( con_id: 9408, action: :sell,ratio: 1 ) ], # MCD STK
|
|
28
28
|
description: 'Stock Spread: Buy Interactive Brokers, sell Mc Donalds'
|
|
29
|
-
|
|
29
|
+
),
|
|
30
30
|
|
|
31
31
|
vix_calendar: Bag.new( symbol: 'VIX', currency: 'USD', exchange: 'CFE', combo_legs:
|
|
32
32
|
[ ComboLeg.new( con_id: 256038899, action: :buy, exchange: 'CFE', ratio: 1), # VIX FUT 201708
|
|
33
33
|
ComboLeg.new( con_id: 260564703, action: :sell, exchange: 'CFE', ratio: 1 ) ], # VIX FUT 201709
|
|
34
34
|
description: 'VixFuture Calendar-Spread August - September 2017'
|
|
35
|
-
|
|
35
|
+
),
|
|
36
36
|
wti_coil: Bag.new( symbol: 'WTI', currency: 'USD', exchange: 'SMART', combo_legs:
|
|
37
|
-
[ ComboLeg.new( con_id: 55928698, action: :buy, exchange: 'IPE', ratio: 1), # WTI future June 2017
|
|
37
|
+
[ ComboLeg.new( con_id: 55928698, action: :buy, exchange: 'IPE', ratio: 1), # WTI future June 2017
|
|
38
38
|
ComboLeg.new( con_id: 55850663, action: :sell, exchange: 'IPE', ratio: 1 ) ], # COIL future June 2017
|
|
39
39
|
description: 'Smart Future Spread WTI - COIL (June 2017) '
|
|
40
|
-
|
|
40
|
+
),
|
|
41
41
|
wti_brent: Bag.new( symbol: 'CL.BZ', currency: 'USD', exchange: 'NYMEX', combo_legs:
|
|
42
42
|
[ ComboLeg.new( con_id: 47207310, action: :buy, exchange: 'NYMEX', ratio: 1), # CL Dec'16 @NYMEX
|
|
43
43
|
ComboLeg.new( con_id: 47195961, action: :sell, exchange: 'NYMEX', ratio: 1 ) ], #BZ Dec'16 @NYMEX
|
|
44
44
|
description: ' WTI - Brent Spread (Dez. 2016)'
|
|
45
|
-
|
|
45
|
+
)
|
|
46
46
|
}
|
|
47
47
|
# )
|
|
48
48
|
end
|
data/lib/ib/symbols/futures.rb
CHANGED
|
@@ -58,7 +58,7 @@ module IB
|
|
|
58
58
|
def self.contracts
|
|
59
59
|
@contracts.presence ||( super.merge :ym => IB::Future.new(:symbol => "YM",
|
|
60
60
|
:expiry => next_expiry,
|
|
61
|
-
:exchange => "
|
|
61
|
+
:exchange => "CBOT",
|
|
62
62
|
:currency => "USD",
|
|
63
63
|
:description => "Mini-DJIA future"),
|
|
64
64
|
:nq => IB::Future.new(:symbol => "NQ",
|
|
@@ -87,13 +87,13 @@ module IB
|
|
|
87
87
|
:description => "Micro E-Mini S&P 500 future"),
|
|
88
88
|
:russell => IB::Future.new(:symbol => "RTY",
|
|
89
89
|
:expiry => next_expiry,
|
|
90
|
-
:exchange => "CME
|
|
90
|
+
:exchange => "CME",
|
|
91
91
|
:currency => "USD",
|
|
92
|
-
:multiplier =>
|
|
92
|
+
:multiplier => 50,
|
|
93
93
|
:description => "Micro E-Mini Russell 2000 future"),
|
|
94
94
|
:micro_russell => IB::Future.new(:symbol => "M2K",
|
|
95
95
|
:expiry => next_expiry,
|
|
96
|
-
:exchange => "CME
|
|
96
|
+
:exchange => "CME",
|
|
97
97
|
:currency => "USD",
|
|
98
98
|
:multiplier => 5,
|
|
99
99
|
:description => "Micro E-Mini Russell 2000 future"),
|
|
@@ -101,44 +101,49 @@ module IB
|
|
|
101
101
|
expiry: next_expiry,
|
|
102
102
|
currency: 'USD',
|
|
103
103
|
multiplier: 1000,
|
|
104
|
-
exchange: '
|
|
104
|
+
exchange: 'CBOT',
|
|
105
105
|
description: 'US Treasury Note -- 10 Years'),
|
|
106
106
|
:zb => IB::Future.new( symbol: 'ZB',
|
|
107
107
|
expiry: next_expiry,
|
|
108
108
|
currency: 'USD',
|
|
109
109
|
multiplier: 1000,
|
|
110
|
-
exchange: '
|
|
110
|
+
exchange: 'CBOT',
|
|
111
111
|
description: 'US Treasury Note -- 30 Years'),
|
|
112
|
-
:mini_dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
112
|
+
:mini_dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
113
113
|
expiry: next_expiry,
|
|
114
114
|
currency: 'EUR',
|
|
115
115
|
multiplier: 5,
|
|
116
116
|
description: 'Mini DAX-Future'),
|
|
117
|
-
:dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
117
|
+
:dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
118
118
|
expiry: next_expiry,
|
|
119
119
|
currency: 'EUR',
|
|
120
120
|
multiplier: 25,
|
|
121
121
|
description: 'DAX-Future'),
|
|
122
|
-
:stoxx=> IB::Future.new( symbol: 'ESTX50', exchange: 'EUREX',
|
|
122
|
+
:stoxx=> IB::Future.new( symbol: 'ESTX50', exchange: 'EUREX',
|
|
123
123
|
expiry: next_expiry,
|
|
124
124
|
currency: 'EUR',
|
|
125
125
|
multiplier: 10,
|
|
126
126
|
description: 'EuroStoxx 50 -Future'),
|
|
127
|
+
:mini_stoxx=> IB::Future.new( symbol: 'ESTX50', exchange: 'EUREX',
|
|
128
|
+
expiry: next_expiry,
|
|
129
|
+
currency: 'EUR',
|
|
130
|
+
multiplier: 1,
|
|
131
|
+
description: 'Mini EuroStoxx 50 -Future'),
|
|
127
132
|
:gbp => IB::Future.new(:symbol => "GBP",
|
|
128
133
|
:expiry => next_expiry,
|
|
129
|
-
:exchange => "
|
|
134
|
+
:exchange => "CME",
|
|
130
135
|
:currency => "USD",
|
|
131
136
|
:multiplier => 62500,
|
|
132
137
|
:description => "British Pounds future"),
|
|
133
138
|
:eur => IB::Future.new(:symbol => "EUR",
|
|
134
139
|
:expiry => next_expiry,
|
|
135
|
-
:exchange => "
|
|
140
|
+
:exchange => "CME",
|
|
136
141
|
:currency => "USD",
|
|
137
|
-
:multiplier =>
|
|
142
|
+
:multiplier => 125000,
|
|
138
143
|
:description => "Euro FX future"),
|
|
139
144
|
:jpy => IB::Future.new(:symbol => "JPY",
|
|
140
145
|
:expiry => next_expiry,
|
|
141
|
-
:exchange => "
|
|
146
|
+
:exchange => "CME",
|
|
142
147
|
:currency => "USD",
|
|
143
148
|
:multiplier => 12500000,
|
|
144
149
|
:description => "Japanese Yen future"),
|
|
@@ -150,11 +155,9 @@ module IB
|
|
|
150
155
|
:description => "Hang Seng Index future"),
|
|
151
156
|
:vix => IB::Future.new(:symbol => "VIX",
|
|
152
157
|
:expiry => next_expiry,
|
|
153
|
-
:exchange => "CFE",
|
|
158
|
+
:exchange => "CFE",
|
|
154
159
|
:currency => "USD",
|
|
155
160
|
:description => "CBOE Volatility Index future"))
|
|
156
|
-
|
|
157
|
-
|
|
158
161
|
end
|
|
159
162
|
end
|
|
160
163
|
end
|
data/lib/ib/symbols/index.rb
CHANGED
|
@@ -21,7 +21,7 @@ module IB
|
|
|
21
21
|
:vhsi => IB::Index.new( symbol: 'VHSI', exchange: 'HKFE',
|
|
22
22
|
:description => "Hang Seng Volatility Index"),
|
|
23
23
|
:vasx => IB::Index.new( symbol: 'XVI', exchange: 'ASX',
|
|
24
|
-
:description => "ASX 200 Volatility Index") ,
|
|
24
|
+
:description => "ASX 200 Volatility Index") ,
|
|
25
25
|
:vstoxx => IB::Index.new(:symbol => "V2TX", :currency => "EUR", exchange: 'EUREX',
|
|
26
26
|
:description => "VSTOXX Volatility Index"),
|
|
27
27
|
:vdax => IB::Index.new(:symbol => "VDAX", exchange: 'EUREX',
|
data/lib/ib/symbols/options.rb
CHANGED
|
@@ -6,75 +6,88 @@ module IB
|
|
|
6
6
|
module Options
|
|
7
7
|
extend Symbols
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
## usage: IB::Symbols::Options.stoxx.merge( strike: 3300 )
|
|
9
|
+
## usage: IB::Symbols::Options.stoxx.merge( strike: 3300, expiry: 202304 )
|
|
11
10
|
def self.contracts
|
|
12
11
|
@contracts ||= {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
12
|
+
stoxx: IB::Option.new(symbol: :ESTX50,
|
|
13
|
+
expiry: IB::Symbols::Futures.next_expiry ,
|
|
14
|
+
right: :put,
|
|
15
|
+
trading_class: 'OESX',
|
|
16
|
+
currency: 'EUR',
|
|
17
|
+
exchange: 'EUREX',
|
|
18
|
+
description: "Monthly settled ESTX50 Options"),
|
|
19
|
+
spx: IB::Option.new( symbol: :SPX,
|
|
20
|
+
expiry: IB::Symbols::Futures.next_expiry ,
|
|
21
|
+
right: :put,
|
|
22
|
+
trading_class: 'SPX',
|
|
23
|
+
currency: 'USD',
|
|
24
|
+
exchange: 'SMART',
|
|
25
|
+
description: "Monthly settled SPX options"),
|
|
26
|
+
spxw: IB::Option.new( symbol: :SPX,
|
|
27
|
+
expiry: IB::Symbols::Futures.next_expiry ,
|
|
28
|
+
right: :put,
|
|
29
|
+
trading_class: 'SPXW',
|
|
30
|
+
currency: 'USD', exchange: 'SMART',
|
|
31
|
+
description: "Daily settled SPX options"),
|
|
32
|
+
:spy => IB::Option.new( :symbol => :SPY,
|
|
33
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
34
|
+
:right => :put,
|
|
35
|
+
:currency => "USD",
|
|
36
|
+
:exchange => 'SMART',
|
|
37
|
+
:description => "SPY Put next expiration"),
|
|
38
|
+
:rut => IB::Option.new( :symbol => :RUT,
|
|
39
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
40
|
+
:right => :put,
|
|
41
|
+
:currency => "USD",
|
|
42
|
+
:exchange => 'SMART',
|
|
43
|
+
description: "Monthly settled RUT options"),
|
|
44
|
+
:rutw => IB::Option.new( :symbol => :RUT,
|
|
45
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
46
|
+
:right => :put,
|
|
47
|
+
:currency => "USD",
|
|
48
|
+
:exchange => 'SMART',
|
|
49
|
+
description: "Weekly settled RUT options"),
|
|
50
|
+
:russell => IB::Option.new( :symbol => :RUT, # :russell == :rut !
|
|
51
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
52
|
+
:right => :put,
|
|
53
|
+
:currency => "USD",
|
|
54
|
+
:exchange => 'SMART',
|
|
55
|
+
description: "Monthly settled RUT options"),
|
|
56
|
+
:mini_russell => IB::Option.new( :symbol => :MRUT,
|
|
57
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
58
|
+
:right => :put,
|
|
59
|
+
:currency => "USD",
|
|
60
|
+
:exchange => 'SMART',
|
|
61
|
+
:description => "Weekly settled Mini-Russell2000 options"),
|
|
62
|
+
:ge => IB::Option.new( :symbol => "GE",
|
|
63
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
64
|
+
:right => "CALL",
|
|
65
|
+
:strike => 7,
|
|
66
|
+
:multiplier => 100,
|
|
67
|
+
:exchange => 'SMART',
|
|
68
|
+
:currency => 'USD',
|
|
69
|
+
:description => "General Electric 7 Call"),
|
|
70
|
+
:aapl => IB::Option.new( :symbol => "AAPL", exchange: 'SMART',
|
|
71
|
+
:expiry => IB::Symbols::Futures.next_expiry,
|
|
72
|
+
:right => "C",
|
|
73
|
+
:strike => 130,
|
|
74
|
+
:currency => 'USD',
|
|
75
|
+
:description => "Apple Call 130"),
|
|
76
|
+
|
|
77
|
+
:ibm => IB::Option.new( symbol: 'IBM', exchange: 'SMART', right: :put, expiry: IB::Symbols::Futures.next_expiry ,
|
|
78
|
+
description: 'IBM-Option Chain ( quarterly expiry)'),
|
|
39
79
|
:ibm_lazy_expiry => IB::Option.new( symbol: 'IBM', right: :put, strike: 140, exchange: 'SMART',
|
|
40
80
|
description: 'IBM-Option Chain with strike 140'),
|
|
41
81
|
:ibm_lazy_strike => IB::Option.new( symbol: 'IBM', exchange: 'SMART', right: :put, expiry: IB::Symbols::Futures.next_expiry ,
|
|
42
82
|
description: 'IBM-Option Chain ( quarterly expiry)'),
|
|
43
83
|
|
|
44
|
-
:
|
|
84
|
+
:goog100 => IB::Option.new( symbol: 'GOOG',
|
|
45
85
|
currency: 'USD',
|
|
46
|
-
strike:
|
|
86
|
+
strike: 100,
|
|
47
87
|
multiplier: 100,
|
|
48
88
|
right: :call,
|
|
49
89
|
expiry: IB::Symbols::Futures.next_expiry,
|
|
50
|
-
description: 'Google Call Option with quarterly expiry')
|
|
51
|
-
:argo_ise => Option.new( symbol: 'ARGO',
|
|
52
|
-
currency: "USD",
|
|
53
|
-
exchange: "ISE",
|
|
54
|
-
expiry: IB::Symbols::Futures.next_expiry,
|
|
55
|
-
right: :call,
|
|
56
|
-
strike: 10,
|
|
57
|
-
multiplier: 100,
|
|
58
|
-
description: 'Adecoagro Options @ ISE'),
|
|
59
|
-
:san_eu => IB::Option.new( symbol: 'SAN1',
|
|
60
|
-
exchange: "MEFFRV",
|
|
61
|
-
currency: "EUR",
|
|
62
|
-
expiry: IB::Symbols::Futures.next_expiry,
|
|
63
|
-
strike: 4.5,
|
|
64
|
-
right: :call,
|
|
65
|
-
# multiplier: 100, ## non standard multiplier: 102
|
|
66
|
-
trading_class: "SANEU",
|
|
67
|
-
description: 'Santanter Option specified via Trading-Class'),
|
|
68
|
-
:spy => IB::Option.new(:symbol => 'SPY',
|
|
69
|
-
:expiry => IB::Symbols::Futures.next_expiry,
|
|
70
|
-
:right => "P",
|
|
71
|
-
:currency => "USD",
|
|
72
|
-
:exchange => 'SMART',
|
|
73
|
-
:strike => 350,
|
|
74
|
-
:description => "SPY 350 Put next expiration"),
|
|
75
|
-
# :spy270 => IB::Option.new(:osi => 'SPY 190315P002700000'),
|
|
76
|
-
# :vix20 => IB::Option.new(:osi => 'VIX 181121C00020000'),
|
|
77
|
-
# :vxx40 => IB::Option.new(:osi => 'VXX 181117C00040000'),
|
|
90
|
+
description: 'Google Call Option with quarterly expiry')
|
|
78
91
|
}
|
|
79
92
|
end
|
|
80
93
|
end
|
data/lib/ib/symbols/version.rb
CHANGED