lib/iron_warbler.rb in iron_warbler-2.0.7.35 vs lib/iron_warbler.rb in iron_warbler-2.0.7.36
- old
+ new
@@ -12,16 +12,125 @@
headers: { 'X-CMC_PRO_API_KEY' => COINMARKETCAP[:key] },
})
out = out.parsed_response.deep_symbolize_keys
out[:data].each do |k, item|
opi = Iro::Datapoint.new({
+ date: Time.now.to_date,
kind: Iro::Datapoint::KIND_CRYPTO,
symbol: item[:symbol],
quote_at: item[:quote][:USD][:last_updated],
value: item[:quote][:USD][:price],
volume: item[:quote][:USD][:volume_24h],
})
opi.save!
+ end
+ end
+
+ def self.get_treasuries
+ response = HTTParty.get( "https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/all/#{Time.now.strftime('%Y%m')}?type=daily_treasury_yield_curve&field_tdr_date_value_month=#{Time.now.strftime('%Y%m')}&page&_format=csv")
+ outs = CSV.parse( response.body, { headers: true })
+ out = outs[0]
+ date = Date.strptime(out['Date'], '%m/%d/%Y')
+ {
+ '1 Mo' => Iro::Datapoint::SYMBOL_T1MO,
+ '2 Mo' => Iro::Datapoint::SYMBOL_T2MO,
+ '3 Mo' => Iro::Datapoint::SYMBOL_T3MO,
+ '4 Mo' => Iro::Datapoint::SYMBOL_T4MO,
+ '6 Mo' => Iro::Datapoint::SYMBOL_T6MO,
+ '1 Yr' => Iro::Datapoint::SYMBOL_T1YR,
+ '2 Yr' => Iro::Datapoint::SYMBOL_T2YR,
+ '3 Yr' => Iro::Datapoint::SYMBOL_T3YR,
+ '5 Yr' => Iro::Datapoint::SYMBOL_T5YR,
+ '7 Yr' => Iro::Datapoint::SYMBOL_T7YR,
+ '10 Yr' => Iro::Datapoint::SYMBOL_T10YR,
+ '20 Yr' => Iro::Datapoint::SYMBOL_T20YR,
+ '30 Yr' => Iro::Datapoint::SYMBOL_T30YR,
+ }.each do |k, v|
+ opi = Iro::Datapoint.new({
+ date: date,
+ quote_at: date,
+ kind: Iro::Datapoint::KIND_TREASURY,
+ symbol: v,
+ value: out[k],
+ })
+ opi.save!
+ print '^'
+ end
+ end
+
+ def self.import_1990_2023_treasuries
+ outs = CSV.parse( File.read( Rails.root.join('data', 'treasuries', '1990..23 daily-treasury-rates.csv') ), { headers: true })
+ outs.each do |out|
+ date = Date.strptime(out['Date'], '%m/%d/%y')
+ {
+ '1 Mo' => Iro::Datapoint::SYMBOL_T1MO,
+ '2 Mo' => Iro::Datapoint::SYMBOL_T2MO,
+ '3 Mo' => Iro::Datapoint::SYMBOL_T3MO,
+ '4 Mo' => Iro::Datapoint::SYMBOL_T4MO,
+ '6 Mo' => Iro::Datapoint::SYMBOL_T6MO,
+ '1 Yr' => Iro::Datapoint::SYMBOL_T1YR,
+ '2 Yr' => Iro::Datapoint::SYMBOL_T2YR,
+ '3 Yr' => Iro::Datapoint::SYMBOL_T3YR,
+ '5 Yr' => Iro::Datapoint::SYMBOL_T5YR,
+ '7 Yr' => Iro::Datapoint::SYMBOL_T7YR,
+ '10 Yr' => Iro::Datapoint::SYMBOL_T10YR,
+ '20 Yr' => Iro::Datapoint::SYMBOL_T20YR,
+ '30 Yr' => Iro::Datapoint::SYMBOL_T30YR,
+ }.each do |k, v|
+ if out[k]
+ opi = Iro::Datapoint.new({
+ date: date,
+ quote_at: date,
+ kind: Iro::Datapoint::KIND_TREASURY,
+ symbol: v,
+ value: out[k],
+ })
+ begin
+ opi.save!
+ rescue Mongoid::Errors::Validations => err
+ puts! err, 'err'
+ end
+ print '^'
+ end
+ end
+ end
+ end
+
+ def self.import_2024_treasuries
+ outs = CSV.parse( File.read( Rails.root.join('data', 'treasuries', '2024 daily-treasury-rates.csv') ), { headers: true })
+ outs.each do |out|
+ date = Date.strptime(out['Date'], '%m/%d/%Y')
+ {
+ '1 Mo' => Iro::Datapoint::SYMBOL_T1MO,
+ '2 Mo' => Iro::Datapoint::SYMBOL_T2MO,
+ '3 Mo' => Iro::Datapoint::SYMBOL_T3MO,
+ '4 Mo' => Iro::Datapoint::SYMBOL_T4MO,
+ '6 Mo' => Iro::Datapoint::SYMBOL_T6MO,
+ '1 Yr' => Iro::Datapoint::SYMBOL_T1YR,
+ '2 Yr' => Iro::Datapoint::SYMBOL_T2YR,
+ '3 Yr' => Iro::Datapoint::SYMBOL_T3YR,
+ '5 Yr' => Iro::Datapoint::SYMBOL_T5YR,
+ '7 Yr' => Iro::Datapoint::SYMBOL_T7YR,
+ '10 Yr' => Iro::Datapoint::SYMBOL_T10YR,
+ '20 Yr' => Iro::Datapoint::SYMBOL_T20YR,
+ '30 Yr' => Iro::Datapoint::SYMBOL_T30YR,
+ }.each do |k, v|
+ if out[k]
+ opi = Iro::Datapoint.new({
+ date: date,
+ quote_at: date,
+ kind: Iro::Datapoint::KIND_TREASURY,
+ symbol: v,
+ value: out[k],
+ })
+ begin
+ opi.save!
+ rescue Mongoid::Errors::Validations => err
+ puts! err, 'err'
+ end
+ print '^'
+ end
+ end
end
end
end