cotcube-bardata 0.1.2 → 0.1.3
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/CHANGELOG.md +5 -0
- data/VERSION +1 -1
- data/lib/cotcube-bardata.rb +1 -0
- data/lib/cotcube-bardata/eods.rb +23 -4
- data/lib/cotcube-bardata/init.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e879208e6163ff7f56d5b4135e62e67e4054426e98d446fd13742fe34bbb6935
|
4
|
+
data.tar.gz: 8bafe1a22673d497a55c201870b94b9561d3a01cb523606900e8592c0d0b1c6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8bbe5746c9c07435a80b647d222ea6420b5057c1b26e4370f0e1dccedae71028fb54fb25f45ef47719501f0b297c928a6d589ca7a0dfb67a02e40836d2ff1d4
|
7
|
+
data.tar.gz: 6cb37bdbc50a0c4fd2f9867dd983c6348df5a8f9372e0195e6c0f4dfd90463057e993b5a3c57a39b7f932166ad09f325dbff77311473513575cdd874d728a136
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.1.3 (December 23, 2020)
|
2
|
+
- added .provide_most_liquids_by_eod which supports :age, filtering out files that have been updated more recently
|
3
|
+
- added 'type' to symbols to filter for e.g. currencies
|
4
|
+
- changed .provide_eods not to raise on missing eod-file but just to WARN
|
5
|
+
|
1
6
|
## 0.1.2 (December 22, 2020)
|
2
7
|
- created and added .provide_quarters
|
3
8
|
- added cotcube-helpers as new dependency to gempsec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/cotcube-bardata.rb
CHANGED
@@ -30,6 +30,7 @@ module Cotcube
|
|
30
30
|
:provide, #
|
31
31
|
:most_liquid_for, # the most_liquid contract for a given symbol or id, based on date or last_trade_date
|
32
32
|
:provide_eods, # provides the list of eods, either with data or just the contracts, filtered for liquidity threshold
|
33
|
+
:provide_most_liquids_by_eod,
|
33
34
|
:provide_daily, # provides the list of dailies for a given symbol, which include OI. Note that the close is settlement price.
|
34
35
|
:continuous, # for a given date or range, provide all contracts that exceed a given threshold of volume share
|
35
36
|
:continuous_overview, # based on continuous, create list of when which contract was most liquid
|
data/lib/cotcube-bardata/eods.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Cotcube
|
4
4
|
module Bardata
|
5
5
|
|
6
|
-
def most_liquid_for(symbol: nil, id: nil, date: last_trade_date, config: init)
|
6
|
+
def most_liquid_for(symbol: nil, id: nil, date: last_trade_date, config: init, quiet: false)
|
7
7
|
unless symbol.nil?
|
8
8
|
symbol_id = symbols.select{|s| s[:symbol] == symbol.to_s.upcase}.first[:id]
|
9
9
|
raise ArgumentError, "Could not find match in #{config[:symbols_file]} for given symbol #{symbol}" if symbol_id.nil?
|
@@ -14,14 +14,30 @@ module Cotcube
|
|
14
14
|
provide_eods(id: id, dates: date, contracts_only: true).first
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
def provide_most_liquids_by_eod(config: init, date: last_trade_date, filter: :volume_part, age: 1.hour)
|
18
|
+
eods = provide_eods(config: config, dates: date, filter: filter)
|
19
|
+
result = []
|
20
|
+
eods.map do |eod|
|
21
|
+
symbol = eod[0..1]
|
22
|
+
contract = eod[2..4]
|
23
|
+
sym = symbols.select{|s| s[:symbol] == symbol.to_s.upcase}.first
|
24
|
+
quarter = "#{config[:data_path]}/quarters/#{sym[:id]}/#{contract}.csv"
|
25
|
+
if File.exist?(quarter)
|
26
|
+
puts "#{quarter}: #{ Time.now } - #{File.mtime(quarter)} > #{age} : #{Time.now - File.mtime(quarter) > age}"
|
27
|
+
result << eod if Time.now - File.mtime(quarter) > age
|
28
|
+
else
|
29
|
+
result << eod
|
30
|
+
end
|
31
|
+
end
|
32
|
+
result
|
33
|
+
end
|
18
34
|
|
19
35
|
def provide_eods(symbol: nil,
|
20
36
|
id: nil,
|
21
37
|
contract: nil,
|
22
38
|
config: init,
|
23
39
|
dates: last_trade_date, # should accept either a date or datelike or date string OR a range of 2 datelike
|
24
|
-
|
40
|
+
# if omitted returns the eods of last trading date
|
25
41
|
threshold: 0.1, # set threshold to 0 to disable filtering at all. otherwise only contracts with partial of >= threshold are returned
|
26
42
|
filter: :volume_part, # filter can be set to volume_part and oi_part. determines, which property is used for filtering.
|
27
43
|
contracts_only: true # set to false to return the complete row instead of just the contracts matching filter and threshold
|
@@ -52,7 +68,10 @@ module Cotcube
|
|
52
68
|
id_path = id_path_get.call(i)
|
53
69
|
data_file = "#{id_path}/#{d}.csv"
|
54
70
|
raise RuntimeError, "No data found for requested :id (#{id_path} does not exist)" unless Dir.exist?(id_path)
|
55
|
-
|
71
|
+
unless File.exist?(data_file)
|
72
|
+
puts "WARNING: No data found for requested id/symbol #{id}/#{symbol} in #{id_path}.".light_yellow unless quiet
|
73
|
+
return []
|
74
|
+
end
|
56
75
|
data = CSV.read(data_file, headers: %i[contract date open high low close volume oi] ).map do |row|
|
57
76
|
row = row.to_h
|
58
77
|
row.each do |k, _|
|
data/lib/cotcube-bardata/init.rb
CHANGED
@@ -4,7 +4,7 @@ module Cotcube
|
|
4
4
|
module Bardata
|
5
5
|
|
6
6
|
|
7
|
-
def symbols(config: init)
|
7
|
+
def symbols(config: init, type: nil)
|
8
8
|
if config[:symbols_file].nil?
|
9
9
|
SYMBOL_EXAMPLES
|
10
10
|
else
|
@@ -13,6 +13,7 @@ module Cotcube
|
|
13
13
|
.map{|row| row.to_h }
|
14
14
|
.map{|row| [ :ticksize, :power, :bcf ].each {|z| row[z] = row[z].to_f}; row }
|
15
15
|
.reject{|row| row[:id].nil? }
|
16
|
+
.tap{|all| all.select!{|x| x[:type] == type} unless type.nil? }
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cotcube-bardata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin L. Tischendorf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cotcube-indicators
|