ib-symbols 1.2 → 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/Gemfile +0 -2
- data/README.md +37 -40
- data/bin/console +5 -4
- data/lib/ib/symbols/abstract.rb +1 -1
- data/lib/ib/symbols/combo.rb +17 -17
- data/lib/ib/symbols/futures.rb +46 -31
- 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 +3 -3
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/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -6,7 +6,6 @@ __Documentation: [https://ib-ruby.github.io/ib-doc/](https://ib-ruby.github.io/i
|
|
|
6
6
|
__Questions, Contributions, Remarks: [Discussions are opened in ib-api](https://github.com/ib-ruby/ib-api/discussions)__
|
|
7
7
|
|
|
8
8
|
---
|
|
9
|
-
|
|
10
9
|
__Predefined symbols and watchlists for contracts__
|
|
11
10
|
|
|
12
11
|
To activate use
|
|
@@ -23,6 +22,42 @@ in your script
|
|
|
23
22
|
|
|
24
23
|
---
|
|
25
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
|
+
|
|
26
61
|
The GUI-Version of the TWS organizes symbols in different pages (Watchlists).
|
|
27
62
|
|
|
28
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.
|
|
@@ -36,7 +71,7 @@ By default, Watchlists reside in the `symbols`-directory of `ib-symbols`. This c
|
|
|
36
71
|
```
|
|
37
72
|
|
|
38
73
|
|
|
39
|
-
|
|
74
|
+
### Symbol Collections
|
|
40
75
|
Everything is kept elementary simple: Collections are stored as editable files. The format is YAML.
|
|
41
76
|
|
|
42
77
|
The CRUD Cycle
|
|
@@ -60,46 +95,8 @@ head :012 > IB::Symbols::Demo.all
|
|
|
60
95
|
=> []
|
|
61
96
|
```
|
|
62
97
|
|
|
63
|
-
## Predefined Collections
|
|
64
98
|
|
|
65
|
-
Most popular `Stocks`, `Options`, `Futures`, `Indices` and `Forex-pairs` are hard-coded.
|
|
66
|
-
```ruby
|
|
67
|
-
> IB::Symbols::Index.all
|
|
68
|
-
=> [:a_d, :asx, :dax, :hsi, :minihsi, :spx, :stoxx, :tick, :trin, :vasx, :vdax, :vhsi, :vix, :volume, :vstoxx]
|
|
69
|
-
> puts IB::Symbols::Index.contracts.values &.to_human
|
|
70
|
-
<Index: DAX EUR (DAX Performance Index.) >
|
|
71
|
-
<Index: AP AUD (ASX 200 Index) >
|
|
72
|
-
<Index: HSI HKD (Hang Seng Index) >
|
|
73
|
-
(...)
|
|
74
|
-
<Index: AD-NYSE (NYSE Advance Decline Index) >
|
|
75
|
-
|
|
76
|
-
> Symbols::Forex.eurusd.to_human
|
|
77
|
-
=> "<Contract: EUR forex IDEALPRO USD>"
|
|
78
|
-
# this contract is valid and can be verified, but the opposide is not supported by IB
|
|
79
|
-
> Symbols::Forex.usdeur.verify
|
|
80
|
-
TWS Error 200: No security definition has been found for the request
|
|
81
|
-
Not a valid Contract :: <Contract: USD forex IDEALPRO EUR>
|
|
82
99
|
```
|
|
83
100
|
|
|
84
|
-
## Pattern based Contract retrieval
|
|
85
|
-
|
|
86
|
-
To specify a specific Option can be a boaring job.
|
|
87
|
-
You might spend hours searching for a simple error, like a forgotten `:currency` oder `:exchange` entry.
|
|
88
|
-
|
|
89
|
-
Symbol-Collections can be used as template for everyday searches.
|
|
90
|
-
|
|
91
|
-
> Example: Customize a Index-Option with quaterly expiry.
|
|
92
|
-
>
|
|
93
|
-
> The hard coded `Symbols::Options.stoxx` template ensures the retrieval of only one option.
|
|
94
|
-
> A simple merge with customized attributes returns a fully qualified ContractRecord.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
```ruby
|
|
98
|
-
> IB::Symbols.Options.stoxx.to_human
|
|
99
|
-
=> "<Option: ESTX50 202012 put 3000.0 DTB EUR>"
|
|
100
|
-
> Symbols::Options.stoxx.merge( strike: 3300, right: :call).to_human
|
|
101
|
-
=> "<Option: ESTX50 202012 call 3300.0 DTB EUR>"
|
|
102
|
-
|
|
103
|
-
```
|
|
104
101
|
|
|
105
102
|
|
data/bin/console
CHANGED
|
@@ -49,6 +49,7 @@ read_yml = -> (key) do
|
|
|
49
49
|
puts " Namespace is IB ! "
|
|
50
50
|
puts
|
|
51
51
|
puts '-'* 45
|
|
52
|
+
include LogDev
|
|
52
53
|
include IB
|
|
53
54
|
require 'irb'
|
|
54
55
|
client_id = ARGV[1] || read_yml[:client_id]
|
|
@@ -65,7 +66,7 @@ read_yml = -> (key) do
|
|
|
65
66
|
end
|
|
66
67
|
|
|
67
68
|
ARGV.clear
|
|
68
|
-
|
|
69
|
+
logger = default_logger # Logger.new STDOUT
|
|
69
70
|
|
|
70
71
|
## The Block takes instructions which are executed after initializing all instance-variables
|
|
71
72
|
## and prior to the connection-process
|
|
@@ -73,9 +74,9 @@ read_yml = -> (key) do
|
|
|
73
74
|
if port > 0
|
|
74
75
|
C = Connection.new client_id: client_id, port: port do |c| # future use__ , optional_capacities: "+PACEAPI" do |c|
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
c.subscribe( :ContractData, :BondContractData) { |msg| logger.info { msg.contract.to_human } }
|
|
78
|
+
c.subscribe( :Alert, :ContractDataEnd, :ManagedAccounts, :OrderStatus ) {| m| logger.info { m.to_human } }
|
|
79
|
+
c.subscribe( :PortfolioValue, :AccountValue, :OrderStatus, :OpenOrderEnd, :ExecutionData ) {| m| logger.info { m.to_human }}
|
|
79
80
|
# c.subscribe :ManagedAccounts do |msg|
|
|
80
81
|
# puts "------------------------------- Managed Accounts ----------------------------------"
|
|
81
82
|
# puts "Detected Accounts: #{msg.accounts.account.join(' -- ')} "
|
data/lib/ib/symbols/abstract.rb
CHANGED
|
@@ -109,7 +109,7 @@ Returns count of created bunches
|
|
|
109
109
|
else
|
|
110
110
|
symbol.to_i
|
|
111
111
|
end
|
|
112
|
-
# ensure that
|
|
112
|
+
# ensure that evey Sybmol::xxx.yyy entry has a description
|
|
113
113
|
contract.description = contract.to_human[1..-2] if contract.description.nil?
|
|
114
114
|
# overwrite contract if existing
|
|
115
115
|
contracts[ symbol ] = contract.essential
|
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,75 +58,92 @@ 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",
|
|
65
65
|
:expiry => next_expiry,
|
|
66
|
-
:exchange => "
|
|
66
|
+
:exchange => "CME",
|
|
67
67
|
:currency => "USD",
|
|
68
68
|
:multiplier => 20,
|
|
69
69
|
:description => "E-Mini Nasdaq 100 future"),
|
|
70
|
+
:micro_nq => IB::Future.new(:symbol => "MNQ",
|
|
71
|
+
:expiry => next_expiry,
|
|
72
|
+
:exchange => "CME",
|
|
73
|
+
:currency => "USD",
|
|
74
|
+
:multiplier => 2,
|
|
75
|
+
:description => "E-Mini Nasdaq 100 future"),
|
|
70
76
|
:es => IB::Future.new(:symbol => "ES",
|
|
71
77
|
:expiry => next_expiry,
|
|
72
|
-
:exchange => "
|
|
78
|
+
:exchange => "CME",
|
|
73
79
|
:currency => "USD",
|
|
74
80
|
:multiplier => 50,
|
|
75
81
|
:description => "E-Mini S&P 500 future"),
|
|
76
82
|
:micro_es => IB::Future.new(:symbol => "MES",
|
|
77
83
|
:expiry => next_expiry,
|
|
78
|
-
:exchange => "
|
|
84
|
+
:exchange => "CME",
|
|
79
85
|
:currency => "USD",
|
|
80
86
|
:multiplier => 5,
|
|
81
87
|
:description => "Micro E-Mini S&P 500 future"),
|
|
88
|
+
:russell => IB::Future.new(:symbol => "RTY",
|
|
89
|
+
:expiry => next_expiry,
|
|
90
|
+
:exchange => "CME",
|
|
91
|
+
:currency => "USD",
|
|
92
|
+
:multiplier => 50,
|
|
93
|
+
:description => "Micro E-Mini Russell 2000 future"),
|
|
82
94
|
:micro_russell => IB::Future.new(:symbol => "M2K",
|
|
83
95
|
:expiry => next_expiry,
|
|
84
|
-
:exchange => "
|
|
96
|
+
:exchange => "CME",
|
|
85
97
|
:currency => "USD",
|
|
86
98
|
:multiplier => 5,
|
|
87
99
|
:description => "Micro E-Mini Russell 2000 future"),
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
:mini_dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
100
|
+
:zn => IB::Future.new( symbol: 'ZN',
|
|
101
|
+
expiry: next_expiry,
|
|
102
|
+
currency: 'USD',
|
|
103
|
+
multiplier: 1000,
|
|
104
|
+
exchange: 'CBOT',
|
|
105
|
+
description: 'US Treasury Note -- 10 Years'),
|
|
106
|
+
:zb => IB::Future.new( symbol: 'ZB',
|
|
107
|
+
expiry: next_expiry,
|
|
108
|
+
currency: 'USD',
|
|
109
|
+
multiplier: 1000,
|
|
110
|
+
exchange: 'CBOT',
|
|
111
|
+
description: 'US Treasury Note -- 30 Years'),
|
|
112
|
+
:mini_dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
101
113
|
expiry: next_expiry,
|
|
102
114
|
currency: 'EUR',
|
|
103
115
|
multiplier: 5,
|
|
104
116
|
description: 'Mini DAX-Future'),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
:stoxx=> IB::Future.new( symbol: 'ESTX50', exchange: 'EUREX',
|
|
117
|
+
:dax => IB::Future.new( symbol: 'DAX', exchange: 'EUREX',
|
|
118
|
+
expiry: next_expiry,
|
|
119
|
+
currency: 'EUR',
|
|
120
|
+
multiplier: 25,
|
|
121
|
+
description: 'DAX-Future'),
|
|
122
|
+
:stoxx=> IB::Future.new( symbol: 'ESTX50', exchange: 'EUREX',
|
|
111
123
|
expiry: next_expiry,
|
|
112
124
|
currency: 'EUR',
|
|
113
125
|
multiplier: 10,
|
|
114
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'),
|
|
115
132
|
:gbp => IB::Future.new(:symbol => "GBP",
|
|
116
133
|
:expiry => next_expiry,
|
|
117
|
-
:exchange => "
|
|
134
|
+
:exchange => "CME",
|
|
118
135
|
:currency => "USD",
|
|
119
136
|
:multiplier => 62500,
|
|
120
137
|
:description => "British Pounds future"),
|
|
121
138
|
:eur => IB::Future.new(:symbol => "EUR",
|
|
122
139
|
:expiry => next_expiry,
|
|
123
|
-
:exchange => "
|
|
140
|
+
:exchange => "CME",
|
|
124
141
|
:currency => "USD",
|
|
125
|
-
:multiplier =>
|
|
142
|
+
:multiplier => 125000,
|
|
126
143
|
:description => "Euro FX future"),
|
|
127
144
|
:jpy => IB::Future.new(:symbol => "JPY",
|
|
128
145
|
:expiry => next_expiry,
|
|
129
|
-
:exchange => "
|
|
146
|
+
:exchange => "CME",
|
|
130
147
|
:currency => "USD",
|
|
131
148
|
:multiplier => 12500000,
|
|
132
149
|
:description => "Japanese Yen future"),
|
|
@@ -138,11 +155,9 @@ module IB
|
|
|
138
155
|
:description => "Hang Seng Index future"),
|
|
139
156
|
:vix => IB::Future.new(:symbol => "VIX",
|
|
140
157
|
:expiry => next_expiry,
|
|
141
|
-
:exchange => "CFE",
|
|
158
|
+
:exchange => "CFE",
|
|
142
159
|
:currency => "USD",
|
|
143
160
|
:description => "CBOE Volatility Index future"))
|
|
144
|
-
|
|
145
|
-
|
|
146
161
|
end
|
|
147
162
|
end
|
|
148
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
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ib-symbols
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.4'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hartmut Bischoff
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-01-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ib-api
|
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '0'
|
|
166
166
|
requirements: []
|
|
167
|
-
rubygems_version: 3.
|
|
167
|
+
rubygems_version: 3.3.7
|
|
168
168
|
signing_key:
|
|
169
169
|
specification_version: 4
|
|
170
170
|
summary: Predefined symbols and watchlist, part of ib-ruby
|