ib-symbols 1.3 → 1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 783f7b8ef15bf87574fbf9f8f10a0e1f45ce5fd62ea4613d0b2c06d05f5773db
4
- data.tar.gz: 27a437d6c07ec60828a6153eb343a02f44a71e9801b6be49d0bb1b8c13c25a40
3
+ metadata.gz: 3d1bc9c86251e8f43c4459fbeb43235be7321bd250b62cea5313efb666065a51
4
+ data.tar.gz: 35f69664c447f09ce44914f3ea959f0ced46df15b1569e365f14dd9fc6796075
5
5
  SHA512:
6
- metadata.gz: 8f3bf5c3953c26a0b2d4526e77310c598ae2ad1ab20a87a2e5b46b9449fa4f04184797b793b833edcb8b7bce3698177623790fb57ee439bdb836fb1c10863c20
7
- data.tar.gz: 3bd3a8fc68924ad4eb645b952d085397367566e79185070ad0c57fca6b20648c5aa7efe7d01a37ef30ce97e6c64c6030b7e0b3a0856bae32a084fa0f54373f40
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
- ## Symbol Collections
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
 
@@ -8,41 +8,41 @@ module IB
8
8
  def self.contracts
9
9
 
10
10
  @contracts ||= { #super.merge(
11
- stoxx_straddle: IB::Straddle.build( from: IB::Symbols::Index.stoxx, strike: 3000,
12
- expiry: IB::Symbols::Futures.next_expiry, trading_class: 'OESX') ,
13
- stoxx_calendar: IB::Calendar.build( from: IB::Symbols::Index.stoxx, strike: 3000, back: '2m' ,
14
- front: IB::Symbols::Futures.next_expiry, trading_class: 'OESX'),
15
- stoxx_butterfly: IB::Butterfly.fabricate( Symbols::Options.stoxx.merge( strike: 3300), front: 3250, back: 3350 ),
16
- stoxx_vertical: IB::Vertical.build( from: IB::Symbols::Index.stoxx, sell: 3000, buy: 3500, right: :put,
17
- expiry: IB::Symbols::Futures.next_expiry, trading_class: 'OESX'),
18
- zn_calendar: IB::Calendar.fabricate( IB::Symbols::Futures.zn, '3m') ,
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
- 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
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
- ib_mcd: Bag.new( symbol: 'IBKR,MCD', currency: 'USD', combo_legs:
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
@@ -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 => "ECBOT",
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 => 5,
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: 'ECBOT',
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: 'ECBOT',
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 => "GLOBEX",
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 => "GLOBEX",
140
+ :exchange => "CME",
136
141
  :currency => "USD",
137
- :multiplier => 12500,
142
+ :multiplier => 125000,
138
143
  :description => "Euro FX future"),
139
144
  :jpy => IB::Future.new(:symbol => "JPY",
140
145
  :expiry => next_expiry,
141
- :exchange => "GLOBEX",
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", #"ECBOT",
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
@@ -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',
@@ -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
- stoxx: IB::Option.new( symbol: :ESTX50, strike: 3000,
14
- expiry: IB::Symbols::Futures.next_expiry ,
15
- right: :put,
16
- trading_class: 'OESX',
17
- currency: 'EUR', exchange: 'EUREX',
18
- description: "ESTX50 Put Option quarterly"),
19
- :ge => IB::Option.new(:symbol => "GE",
20
- :expiry => IB::Symbols::Futures.next_expiry,
21
- :right => "CALL",
22
- :strike => 7,
23
- :multiplier => 100,
24
- :exchange => 'SMART',
25
- :currency => 'USD',
26
- :description => "General Electric 7 Call"),
27
- :aapl => IB::Option.new(:symbol => "AAPL", exchange: 'SMART',
28
- :expiry => IB::Symbols::Futures.next_expiry,
29
- :right => "C",
30
- :strike => 130,
31
- :currency => 'USD',
32
- :description => "Apple Call 130"),
33
- :z750 => IB::Option.new(:symbol => "Z",
34
- :exchange => "ICEEU",
35
- :expiry => "201903",
36
- :right => "CALL",
37
- :strike => 7000.0,
38
- :description => " FTSE-100 index 750 Call 2019-03"),
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
- :goog1100 => IB::Option.new( symbol: 'GOOG',
84
+ :goog100 => IB::Option.new( symbol: 'GOOG',
45
85
  currency: 'USD',
46
- strike: 1100,
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
@@ -1,5 +1,5 @@
1
1
  module IB
2
2
  module Symbols
3
- VERSION = "1.3"
3
+ VERSION = "1.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ib-symbols
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: '1.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hartmut Bischoff