Class: Value

Inherits:
Object
  • Object
show all
Defined in:
lib/asdrubal/time_series.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent, date, value, previous = nil) ⇒ Value

Returns a new instance of Value.



85
86
87
88
89
# File 'lib/asdrubal/time_series.rb', line 85

def initialize(parent, date, value, previous = nil)
  @parent, @date, @value = parent, date, value || 0
  @previous = previous
  previous.next = self if previous
end

Instance Attribute Details

#nextObject

Returns the value of attribute next.



83
84
85
# File 'lib/asdrubal/time_series.rb', line 83

def next
  @next
end

#previousObject

Returns the value of attribute previous.



83
84
85
# File 'lib/asdrubal/time_series.rb', line 83

def previous
  @previous
end

#valueObject (readonly)

Returns the value of attribute value.



82
83
84
# File 'lib/asdrubal/time_series.rb', line 82

def value
  @value
end

Instance Method Details

#any_after(value, steps) ⇒ Object



119
120
121
122
# File 'lib/asdrubal/time_series.rb', line 119

def any_after(value, steps)
  return false if steps <= 0 || value.nil?
  value.signal == 1 || any_after(value.next, steps - 1)
end

#any_before(value, steps) ⇒ Object



108
109
110
111
# File 'lib/asdrubal/time_series.rb', line 108

def any_before(value, steps)
  return false if steps <= 0 || value.nil?
  value.signal == 1 || any_before(value.previous, steps - 1)
end

#any_signal_ahead?Boolean

Warning: recursion ahead

Returns:

  • (Boolean)


117
118
119
120
121
122
123
124
125
# File 'lib/asdrubal/time_series.rb', line 117

def any_signal_ahead?

  def any_after(value, steps)
    return false if steps <= 0 || value.nil?
    value.signal == 1 || any_after(value.next, steps - 1)
  end

  any_after(self.next, @parent.smooth_window)
end

#any_signal_behind?Boolean

Warning: recursion ahead

Returns:

  • (Boolean)


106
107
108
109
110
111
112
113
114
# File 'lib/asdrubal/time_series.rb', line 106

def any_signal_behind?

  def any_before(value, steps)
    return false if steps <= 0 || value.nil?
    value.signal == 1 || any_before(value.previous, steps - 1)
  end

  any_before(self.previous, @parent.smooth_window)
end

#signalObject



91
92
93
# File 'lib/asdrubal/time_series.rb', line 91

def signal
  self.value > 0 ? 1 : 0
end

#smooth_signalObject



95
96
97
98
99
100
101
102
103
# File 'lib/asdrubal/time_series.rb', line 95

def smooth_signal
  return 1 if self.signal == 1

  if any_signal_behind? && any_signal_ahead?
    1
  else
    0
  end
end

#to_sObject



127
128
129
# File 'lib/asdrubal/time_series.rb', line 127

def to_s
  "#{@date.strftime('%Y-%m-%d')} = #{@value}"
end