ib-extensions 1.3 → 1.3.1

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: f696c98ab0dfb78f2a252e3729485ade6fcbf69c0689b72fba00003e289ec251
4
- data.tar.gz: 5c956f55b2449685d1c08f188e4f55f71576a04dc22454414f4bde1a108ad474
3
+ metadata.gz: 1e2c6ed9342fd33767b9abd239b57aded0c91338801602366ff245575a7c812f
4
+ data.tar.gz: 17a2acdf9865cfb34dabaeb6826052614c6ecd099b0ff534f2784c79826200bb
5
5
  SHA512:
6
- metadata.gz: 283f7b571d300f13bf46941bb50654abd7424c51464c0bcb10e6d6f3cb9244a9761c2f111b31155e5a9332b1bb85a1289652cd8190558353c3b06b83e14e2b09
7
- data.tar.gz: 66580a352103ceee7855146161e422eee676c919f29a4f9a447c0fc0be0177bbcb3d046e4880287a6f4f27f639e05eae243974f37b91a4634e6a1a1d306a6ba6
6
+ metadata.gz: c9e3e6c88f52142cfff920ab547a269cf32ed21174713f8b5386fe5e9bb5be0dff922442d94b6990b9d084f85d5d429ecbe4a6fd9fb245ab3a1d0c8de7e4d7f6
7
+ data.tar.gz: 7f45042d846d30ffdbbf6d59775bdca595399366c66ba91cfea7a25e93ae0d91ab7307b20969a1589b53541bb9e05f66adf6c7545104bb9d35a94d4f16518da0
data/Gemfile CHANGED
@@ -2,8 +2,8 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in ib-extensions.gemspec
4
4
  gemspec
5
- gem "ib-api" # path: "../ib-api/"
5
+ #gem "ib-api", path: "../ib-api/"
6
6
  ## move this to gemspec and include as development dependency after the gem is released
7
7
  gem "ib-symbols" # , path: "../ib-symbols/"
8
- #gem "ib-api", :git=> 'https://github.com/ib-ruby/ib-api.git'
8
+ gem "ib-api" #, :git=> 'https://github.com/ib-ruby/ib-api.git'
9
9
  gem "rake", "~> 12.0"
data/Gemfile.lock CHANGED
@@ -1,46 +1,47 @@
1
- PATH
2
- remote: ../ib-api
1
+ GIT
2
+ remote: https://github.com/ib-ruby/ib-api.git
3
+ revision: 90b3a97952565c198560009c0388a6cf23e80c65
3
4
  specs:
4
- ib-api (972.1)
5
+ ib-api (972.5.2)
5
6
  activemodel
6
7
  activesupport (>= 6.0)
7
-
8
- PATH
9
- remote: ../ib-symbols
10
- specs:
11
- ib-symbols (1.0)
12
- ib-api
13
8
  ox
9
+ terminal-table
14
10
 
15
11
  PATH
16
12
  remote: .
17
13
  specs:
18
- ib-extensions (1.0)
14
+ ib-extensions (2.0)
15
+ distribution
16
+ ib-api (~> 972.5.2)
19
17
  ox
18
+ polars-df (~> 0.3.1)
19
+ prime
20
20
 
21
21
  GEM
22
22
  remote: https://rubygems.org/
23
23
  specs:
24
- activemodel (6.1.0)
25
- activesupport (= 6.1.0)
26
- activesupport (6.1.0)
24
+ activemodel (7.0.4.2)
25
+ activesupport (= 7.0.4.2)
26
+ activesupport (7.0.4.2)
27
27
  concurrent-ruby (~> 1.0, >= 1.0.2)
28
28
  i18n (>= 1.6, < 2)
29
29
  minitest (>= 5.1)
30
30
  tzinfo (~> 2.0)
31
- zeitwerk (~> 2.3)
32
31
  coderay (1.1.3)
33
- concurrent-ruby (1.1.7)
34
- diff-lcs (1.4.4)
35
- ffi (1.13.1)
36
- formatador (0.2.5)
37
- guard (2.16.2)
32
+ concurrent-ruby (1.2.2)
33
+ diff-lcs (1.5.0)
34
+ distribution (0.8.0)
35
+ ffi (1.15.5)
36
+ formatador (1.1.0)
37
+ forwardable (1.3.3)
38
+ guard (2.18.0)
38
39
  formatador (>= 0.2.4)
39
40
  listen (>= 2.7, < 4.0)
40
41
  lumberjack (>= 1.0.12, < 2.0)
41
42
  nenv (~> 0.1)
42
43
  notiffany (~> 0.0)
43
- pry (>= 0.9.12)
44
+ pry (>= 0.13.0)
44
45
  shellany (~> 0.0)
45
46
  thor (>= 0.18.1)
46
47
  guard-compat (1.2.1)
@@ -48,52 +49,61 @@ GEM
48
49
  guard (~> 2.1)
49
50
  guard-compat (~> 1.1)
50
51
  rspec (>= 2.99.0, < 4.0)
51
- i18n (1.8.5)
52
+ i18n (1.12.0)
52
53
  concurrent-ruby (~> 1.0)
53
- listen (3.3.1)
54
+ ib-symbols (1.5)
55
+ ib-api
56
+ listen (3.8.0)
54
57
  rb-fsevent (~> 0.10, >= 0.10.3)
55
58
  rb-inotify (~> 0.9, >= 0.9.10)
56
59
  lumberjack (1.2.8)
57
60
  method_source (1.0.0)
58
- minitest (5.14.2)
61
+ minitest (5.18.0)
59
62
  nenv (0.3.0)
60
63
  notiffany (0.1.3)
61
64
  nenv (~> 0.1)
62
65
  shellany (~> 0.0)
63
- ox (2.13.4)
64
- pry (0.13.1)
66
+ ox (2.14.14)
67
+ polars-df (0.3.1-x86_64-linux)
68
+ prime (0.1.2)
69
+ forwardable
70
+ singleton
71
+ pry (0.14.2)
65
72
  coderay (~> 1.1)
66
73
  method_source (~> 1.0)
67
74
  rake (12.3.3)
68
- rb-fsevent (0.10.4)
75
+ rb-fsevent (0.11.2)
69
76
  rb-inotify (0.10.1)
70
77
  ffi (~> 1.0)
71
- rspec (3.10.0)
72
- rspec-core (~> 3.10.0)
73
- rspec-expectations (~> 3.10.0)
74
- rspec-mocks (~> 3.10.0)
78
+ rspec (3.12.0)
79
+ rspec-core (~> 3.12.0)
80
+ rspec-expectations (~> 3.12.0)
81
+ rspec-mocks (~> 3.12.0)
75
82
  rspec-collection_matchers (1.2.0)
76
83
  rspec-expectations (>= 2.99.0.beta1)
77
- rspec-core (3.10.0)
78
- rspec-support (~> 3.10.0)
79
- rspec-expectations (3.10.0)
84
+ rspec-core (3.12.1)
85
+ rspec-support (~> 3.12.0)
86
+ rspec-expectations (3.12.2)
80
87
  diff-lcs (>= 1.2.0, < 2.0)
81
- rspec-support (~> 3.10.0)
88
+ rspec-support (~> 3.12.0)
82
89
  rspec-its (1.3.0)
83
90
  rspec-core (>= 3.0.0)
84
91
  rspec-expectations (>= 3.0.0)
85
- rspec-mocks (3.10.0)
92
+ rspec-mocks (3.12.3)
86
93
  diff-lcs (>= 1.2.0, < 2.0)
87
- rspec-support (~> 3.10.0)
88
- rspec-support (3.10.0)
94
+ rspec-support (~> 3.12.0)
95
+ rspec-support (3.12.0)
89
96
  shellany (0.0.1)
90
- thor (1.0.1)
91
- tzinfo (2.0.4)
97
+ singleton (0.1.1)
98
+ terminal-table (3.0.2)
99
+ unicode-display_width (>= 1.1.1, < 3)
100
+ thor (1.2.1)
101
+ tzinfo (2.0.6)
92
102
  concurrent-ruby (~> 1.0)
93
- zeitwerk (2.4.2)
103
+ unicode-display_width (2.4.2)
94
104
 
95
105
  PLATFORMS
96
- ruby
106
+ x86_64-linux
97
107
 
98
108
  DEPENDENCIES
99
109
  bundler (~> 2.0)
@@ -101,11 +111,11 @@ DEPENDENCIES
101
111
  guard-rspec
102
112
  ib-api!
103
113
  ib-extensions!
104
- ib-symbols!
114
+ ib-symbols
105
115
  rake (~> 12.0)
106
116
  rspec (~> 3.0)
107
117
  rspec-collection_matchers
108
118
  rspec-its
109
119
 
110
120
  BUNDLED WITH
111
- 2.1.4
121
+ 2.4.6
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "bundler", "~> 2.0"
34
34
  spec.add_development_dependency "rspec", "~> 3.0"
35
35
  spec.add_development_dependency 'rspec-collection_matchers'
36
- spec.add_development_dependency 'rspec-its'
36
+ spec.add_development_dependency 'rspec-its'
37
37
 
38
38
  spec.add_development_dependency "guard"
39
39
  spec.add_development_dependency "guard-rspec"
data/lib/ib/eod.rb CHANGED
@@ -55,7 +55,7 @@ require 'csv'
55
55
  end
56
56
  # Receive EOD-Data and store the data in the `:bars`-property of IB::Contract
57
57
  #
58
- # contract.eod duration: {String or Integer}, start: {Date}, to: {Date} what: {see below}
58
+ # contract.eod duration: {String or Integer}, start: {Date}, to: {Date}, what: {see below}, polars: {true|false}
59
59
  #
60
60
  #
61
61
  #
@@ -75,8 +75,8 @@ require 'csv'
75
75
  #
76
76
  # Polars DataFrames
77
77
  # -----------------
78
- # The response is stored as PolarsDataframe
79
- # for further processing: https://github.com/ankane/polars-ruby
78
+ # If »polars: true« is specified the response is stored as PolarsDataframe.
79
+ # For further processing: https://github.com/ankane/polars-ruby
80
80
  # https://pola-rs.github.io/polars/py-polars/html/index.html
81
81
  #
82
82
  # Error-handling
@@ -102,7 +102,7 @@ require 'csv'
102
102
  # Examples
103
103
  # --------
104
104
  #
105
- # puts Stock.new( symbol: :iwm).eod( start: Date.new(2019,10,9), duration: 3)
105
+ # puts Stock.new( symbol: :iwm).eod( start: Date.new(2019,10,9), duration: 3, polars: true)
106
106
  # shape: (3, 8)
107
107
  # ┌────────────┬────────┬────────┬────────┬────────┬────────┬─────────┬────────┐
108
108
  # │ time ┆ open ┆ high ┆ low ┆ close ┆ volume ┆ wap ┆ trades │
@@ -114,7 +114,7 @@ require 'csv'
114
114
  # │ 2019-10-10 ┆ 146.9 ┆ 148.74 ┆ 146.87 ┆ 148.24 ┆ 134549 ┆ 147.792 ┆ 71084 │
115
115
  # └────────────┴────────┴────────┴────────┴────────┴────────┴─────────┴────────┘
116
116
  #
117
- # puts Stock.new( symbol: :iwm).eod( start: Date.new(2021,10,9), duration: '3W')
117
+ # puts Stock.new( symbol: :iwm).eod( start: Date.new(2021,10,9), duration: '3W', polars: true)
118
118
  # shape: (3, 8)
119
119
  # ┌────────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬────────┐
120
120
  # │ time ┆ open ┆ high ┆ low ┆ close ┆ volume ┆ wap ┆ trades │
@@ -126,7 +126,7 @@ require 'csv'
126
126
  # │ 2021-10-15 ┆ 220.69 ┆ 228.41 ┆ 218.94 ┆ 225.05 ┆ 768065 ┆ 223.626 ┆ 437817 │
127
127
  # └────────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴────────┘
128
128
  #
129
- # puts Stock.new( symbol: :iwm).eod( start: Date.new(2022,10,1), duration: '3M')
129
+ # puts Stock.new( symbol: :iwm).eod( start: Date.new(2022,10,1), duration: '3M', polars: true)
130
130
  # shape: (3, 8)
131
131
  # ┌────────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬─────────┐
132
132
  # │ time ┆ open ┆ high ┆ low ┆ close ┆ volume ┆ wap ┆ trades │
@@ -138,7 +138,7 @@ require 'csv'
138
138
  # │ 2022-11-30 ┆ 184.51 ┆ 189.56 ┆ 174.11 ┆ 188.19 ┆ 3793861 ┆ 182.594 ┆ 1945674 │
139
139
  # └────────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴─────────┘
140
140
  #
141
- # puts Stock.new( symbol: :iwm).eod( start: Date.new(2020,1,1), duration: '3M', what: :option_implied_vol
141
+ # puts Stock.new( symbol: :iwm).eod( start: Date.new(2020,1,1), duration: '3M', what: :option_implied_vol, polars: true
142
142
  # atility )
143
143
  # shape: (3, 8)
144
144
  # ┌────────────┬──────────┬──────────┬──────────┬──────────┬────────┬──────────┬────────┐
@@ -151,7 +151,7 @@ require 'csv'
151
151
  # │ 2020-02-28 ┆ 0.185732 ┆ 0.436549 ┆ 0.134933 ┆ 0.39845 ┆ 0 ┆ 0.435866 ┆ 0 │
152
152
  # └────────────┴──────────┴──────────┴──────────┴──────────┴────────┴──────────┴────────┘
153
153
  #
154
- def eod start: nil, to: nil, duration: nil , what: :trades
154
+ def eod start: nil, to: nil, duration: nil , what: :trades, polars: false
155
155
 
156
156
  # error "EOD:: Start-Date (parameter: to) must be a Date-Object" unless to.is_a? Date
157
157
  normalize_duration = ->(d) do
@@ -166,7 +166,7 @@ require 'csv'
166
166
  d = normalize_duration.call(duration)
167
167
  case d[-1]
168
168
  when "D"
169
- start + d.to_i - 1
169
+ start + d.to_i - 1
170
170
  when 'W'
171
171
  Date.commercial( start.year, start.cweek + d.to_i - 1, 1)
172
172
  when 'M'
@@ -175,15 +175,15 @@ require 'csv'
175
175
  end
176
176
 
177
177
  if to.nil?
178
- # case eod start= Date.new ...
178
+ # case eod start= Date.new ...
179
179
  to = if start.present? && duration.nil?
180
- # case eod start= Date.new
180
+ # case eod start= Date.new
181
181
  duration = BuisinesDays.business_days_between(start, to).to_s + "D"
182
182
  Date.today # assign to var: to
183
183
  elsif start.present? && duration.present?
184
184
  # case eod start= Date.new , duration: 'nN'
185
185
  get_end_date.call # assign to var: to
186
- elsif duration.present?
186
+ elsif duration.present?
187
187
  # case start is not present, we are collecting until the present day
188
188
  Date.today # assign to var: to
189
189
  else
@@ -202,7 +202,7 @@ require 'csv'
202
202
  end
203
203
 
204
204
 
205
- get_bars(to.to_time.to_ib , normalize_duration[duration], barsize, what)
205
+ get_bars(to.to_time.to_ib , normalize_duration[duration], barsize, what, polars)
206
206
 
207
207
  end # def
208
208
 
@@ -223,7 +223,7 @@ require 'csv'
223
223
  end
224
224
  end
225
225
 
226
- def get_bars(end_date_time, duration, bar_size, what_to_show)
226
+ def get_bars(end_date_time, duration, bar_size, what_to_show, polars)
227
227
 
228
228
  tws = IB::Connection.current
229
229
  received = Queue.new
@@ -231,8 +231,12 @@ require 'csv'
231
231
  # the hole response is transmitted at once!
232
232
  a = tws.subscribe(IB::Messages::Incoming::HistoricalData) do |msg|
233
233
  if msg.request_id == con_id
234
- # msg.results.each { |entry| puts " #{entry}" }
235
- self.bars = Polars::DataFrame.new msg.results.map( &:invariant_attributes )
234
+ self.bars = if polars
235
+ # msg.results.each { |entry| puts " #{entry}" }
236
+ Polars::DataFrame.new msg.results.map( &:invariant_attributes )
237
+ else
238
+ msg.results
239
+ end
236
240
  end
237
241
  received.push Time.now
238
242
  end
@@ -1,5 +1,18 @@
1
1
  module IB
2
2
  module Extensions
3
- VERSION = "1.3"
3
+ VERSION = "1.3.1"
4
4
  end
5
5
  end
6
+
7
+
8
+ __END__
9
+
10
+ Changelog V. 1.2 -> 1.3
11
+
12
+ * added probability_of_expiring to IB::Option
13
+ * IB::Contract.eod returns a Polars DataFrame
14
+ * improved IB::Option.request_greeks
15
+ * improved IB::Contract.verify
16
+
17
+ 1.3.1: Contract.eod: Parameter polars: true|false
18
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ib-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hartmut Bischoff
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
248
  - !ruby/object:Gem::Version
249
249
  version: '0'
250
250
  requirements: []
251
- rubygems_version: 3.3.7
251
+ rubygems_version: 3.4.6
252
252
  signing_key:
253
253
  specification_version: 4
254
254
  summary: Part of IB-Ruby. Tools to to access the tws-api comfortably.