class Capwatch::Fund

Attributes

coins[RW]
config[RW]
positions[RW]
provider[RW]

Public Class Methods

new(provider:, config:) click to toggle source
# File lib/capwatch/fund.rb, line 7
def initialize(provider:, config:)
  @provider = provider
  @config = config
  @positions = config.positions
  @coins = config.coins
  build
end

Public Instance Methods

[](symbol) click to toggle source
# File lib/capwatch/fund.rb, line 15
def [](symbol)
  coins.find { |coin| coin.symbol == symbol }
end
assign_prices() click to toggle source
# File lib/capwatch/fund.rb, line 55
def assign_prices
  coins.each do |coin|
    provider.update_coin(coin)
  end
end
assign_quantity() click to toggle source
# File lib/capwatch/fund.rb, line 49
def assign_quantity
  coins.each do |coin|
    coin.quantity = positions[coin.symbol]
  end
end
build() click to toggle source
# File lib/capwatch/fund.rb, line 43
def build
  assign_quantity
  assign_prices
  distribution
end
console_table() click to toggle source
# File lib/capwatch/fund.rb, line 81
def console_table
  Console.new(name = config.name, body = serialize, totals = fund_totals).draw_table
end
distribution() click to toggle source
# File lib/capwatch/fund.rb, line 61
def distribution
  coins.each do |coin|
    coin.distribution = coin.value_btc / value_btc
  end
end
fund_totals() click to toggle source
# File lib/capwatch/fund.rb, line 71
def fund_totals
  {
    value_usd: value_usd,
    value_btc: value_btc,
    value_eth: value_eth,
    percent_change_24h: percent_change_24h,
    percent_change_7d: percent_change_7d
  }
end
percent_change_1h() click to toggle source
# File lib/capwatch/fund.rb, line 31
def percent_change_1h
  coins.map { |coin| coin.percent_change_1h * coin.distribution }.sum
end
percent_change_24h() click to toggle source
# File lib/capwatch/fund.rb, line 35
def percent_change_24h
  coins.map { |coin| coin.percent_change_24h * coin.distribution }.sum
end
percent_change_7d() click to toggle source
# File lib/capwatch/fund.rb, line 39
def percent_change_7d
  coins.map { |coin| coin.percent_change_7d * coin.distribution }.sum
end
serialize() click to toggle source
# File lib/capwatch/fund.rb, line 67
def serialize
  coins.map { |coin| coin.serialize }.to_json
end
value_btc() click to toggle source
# File lib/capwatch/fund.rb, line 19
def value_btc
  coins.map(&:value_btc).sum
end
value_eth() click to toggle source
# File lib/capwatch/fund.rb, line 27
def value_eth
  coins.map(&:value_eth).sum
end
value_usd() click to toggle source
# File lib/capwatch/fund.rb, line 23
def value_usd
  coins.map(&:value_usd).sum
end