stock_price_imitation 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 1441ccf9e8c47dc75b7a4601aa6d304a530efc10
4
- data.tar.gz: 8d5a7da82e6b0caa6a8207be2d3e9c016b3d8c45
3
+ metadata.gz: 22da3c52d9a592e41a0bbb03ab3653413c77bc69
4
+ data.tar.gz: 4534e896315946b7753629e306002166e080d366
5
5
  SHA512:
6
- metadata.gz: 2ac8da1f71993ca846143d1206a6484d248136b8f2736c5ecbe0ad40030ed5a1de0543f764f6078aff1338338c74d03fefa7a8965abbee8d4518a9b1e96ea45b
7
- data.tar.gz: 1a9f83b4912f818a6f6f7f8aa249717133ea664c90a689c5bb7a4dc6d73610271eb838e7c1c1ca1d52a76f152be0c3e0c30b8cdf819f38aba32df20df3a62f03
6
+ metadata.gz: 51e2555a8bc20f208132fa83fe00b124b8967f0b45d11519f6f90896730e15a658e588631a492d0cc6428e55e94c13276965e3d3573637569400b642c86bba99
7
+ data.tar.gz: 1f4a74c8f96d605f607e4e630ec848ba1f2f90aab86fa90134fb8eeae22a5c22f608436247b3e7a65108260e7e40936522c840cbe37f1629d4ef8afaa6407bcd
data/README.md CHANGED
@@ -24,16 +24,15 @@ Or install it yourself as:
24
24
  require 'stock_price_imitation'
25
25
 
26
26
  step = 100
27
- first_step_price_range = 10..10000
28
- volatility = 0.2
27
+ first_seed_price = 10000
29
28
 
30
- StockPriceImitation::Generator.new(step, first_step_price_range, volatility).execute
29
+ StockPriceImitation::Generator.new(step, first_seed_price).execute
31
30
  #=>
32
31
  # [
33
- # {opening_price: 5558, closing_price: 5191, low_price: 4483, high_price: 6725},
34
- # {opening_price: 5404, closing_price: 7439, low_price: 5170, high_price: 7756},
35
- # {opening_price: 5260, closing_price: 5581, low_price: 4463, high_price: 6695},
36
- # {opening_price: 6840, closing_price: 6310, low_price: 4632, high_price: 6948},
37
- # ....
32
+ # {:opening_price=>4159.493944357897, :closing_price=>4569.307745093309, :low_price=>3505.808433389255, :high_price=>5912.357228503945},
33
+ # {:opening_price=>3541.7376008768974, :closing_price=>3887.9262834566866, :low_price=>3328.361828447127, :high_price=>5535.742136147374},
34
+ # {:opening_price=>9048.18367848711, :closing_price=>8573.694158336206, :low_price=>8082.212918461541, :high_price=>9735.473910738032},
35
+ # {:opening_price=>5117.8471523358085, :closing_price=>7558.560742729045, :low_price=>3466.6265172827384, :high_price=>8218.548256191063},
36
+ # ...
38
37
  # ]
39
38
  ```
@@ -4,7 +4,7 @@ class StockPriceImitation::Generator
4
4
  def initialize(step_count, first_seed_price=1000)
5
5
  @step_count = step_count
6
6
  @first_seed_price = first_seed_price
7
- @bell = RandomBell.new(mu: 1.0, range: 0.0..2.0)
7
+ @bell = RandomBell.new(mu: 0.0, range: 0.0..2.0)
8
8
 
9
9
  @steps = []
10
10
  end
@@ -23,7 +23,7 @@ class StockPriceImitation::Generator
23
23
  @seeds << @first_seed_price
24
24
  else
25
25
  previous = @seeds[i-1]
26
- @seeds << previous * @bell.rand
26
+ @seeds << previous + (@first_seed_price * @bell.rand * [-1,1].sample)
27
27
  end
28
28
  end
29
29
 
@@ -47,19 +47,27 @@ class StockPriceImitation::Generator
47
47
  end
48
48
 
49
49
  def low_price
50
- @low_price
50
+ to_zero_if_negative @low_price
51
51
  end
52
52
 
53
53
  def high_price
54
- @high_price
54
+ to_zero_if_negative @high_price
55
55
  end
56
56
 
57
57
  def opening_price
58
- (rand low_price..high_price)
58
+ to_zero_if_negative (rand low_price..high_price)
59
59
  end
60
60
 
61
61
  def closing_price
62
- (rand low_price..high_price)
62
+ to_zero_if_negative (rand low_price..high_price)
63
+ end
64
+
65
+ def to_zero_if_negative(number)
66
+ if number < 0
67
+ return 0
68
+ end
69
+
70
+ number
63
71
  end
64
72
 
65
73
  def to_hash
@@ -1,3 +1,3 @@
1
1
  module StockPriceImitation
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -50,5 +50,14 @@ describe StockPriceImitation::Generator do
50
50
  assert (price[:low_price]..price[:high_price]).include? price[:closing_price]
51
51
  end
52
52
  end
53
+
54
+ it 'price is not negative number' do
55
+ generator = StockPriceImitation::Generator.new(1000, 10)
56
+ price_movement = generator.execute
57
+
58
+ price_movement.each do |price|
59
+ assert price.values.all?{|v| v >= 0 }
60
+ end
61
+ end
53
62
  end
54
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stock_price_imitation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinya131
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-11 00:00:00.000000000 Z
11
+ date: 2015-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler