finance_engine 0.0.2 → 0.0.3

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: 403e3f9b415c340a85e6ff725393e532720ea17b
4
- data.tar.gz: a19bbe00cd3ef4ed21a8e567c2e6b60a57c0f677
3
+ metadata.gz: 910ed68ff0127eccd5709e5ec2df36c7968ea8fe
4
+ data.tar.gz: 343a02977675f8bacb2745c01a8b2ad75ca2215e
5
5
  SHA512:
6
- metadata.gz: e15d712f3965f2078ead43e10b216c1965f2a187f93e966881ad3e344a50343c3b3fbb85b4aa644c665a181b1e8ab2ac8517222a105af15c642d51d996156084
7
- data.tar.gz: 7eac3d8c0890b42cd453069b9684eae71fe3e9105fe178742ba0d683556df3ca42dce8c921c192bba20c00da38d2b0716a8b10dcc48982db25e66cec52709a82
6
+ metadata.gz: 2dc680dc8b998586a574905f5eb60c78eb3675dcf535659cc7a7df509d549681c5cac43ec8b40a1185e05f7fa6df98f1594475f25569cb694d2ee6f4a8d91642
7
+ data.tar.gz: aed0cb3ad69c71250d11a7a8e0d43c589a692ed1b682a573e4bc720e20ebb1c399c11cecfbad86c799f73fb687949eb205e725e06a4164852306335d377c3456
Binary file
@@ -25,21 +25,21 @@ module FinanceEngine
25
25
  elsif years_to_expiration.round(3) > 0
26
26
  create_tree_for_years((years_to_expiration - periods_in_year), periods_in_year, node+'u', price * @up_factor )
27
27
  create_tree_for_years((years_to_expiration - periods_in_year), periods_in_year, node+'d', price * @down_factor)
28
- get_put_value(node, periods_in_year)
29
- get_call_value(node, periods_in_year)
28
+ get_put_value(price, node, periods_in_year)
29
+ get_call_value(price, node, periods_in_year)
30
30
  end
31
31
  end
32
32
 
33
- def get_put_value(node, periods_in_year)
33
+ def get_put_value(price, node, periods_in_year)
34
34
  up = @tree[node+'u']['put']
35
35
  down = @tree[node+'d']['put']
36
- @tree[node]['put'] = (Math::E**(-@rf* periods_in_year)*(@probability * up)+Math::E**(-@rf* periods_in_year)*((1-@probability) * down)).round(4)
36
+ @tree[node]['put'] = [put_value(price), (Math::E**(-@rf* periods_in_year)*(@probability * up)+Math::E**(-@rf* periods_in_year)*((1-@probability) * down)).round(4)].max
37
37
  end
38
38
 
39
- def get_call_value(node, periods_in_year)
39
+ def get_call_value(price, node, periods_in_year)
40
40
  up = @tree[node+'u']['call']
41
41
  down = @tree[node+'d']['call']
42
- @tree[node]['call'] = (Math::E**(-@rf* periods_in_year)*(@probability * up)+Math::E**(-@rf* periods_in_year)*((1-@probability) * down)).round(4)
42
+ @tree[node]['call'] = [call_value(price), (Math::E**(-@rf* periods_in_year)*(@probability * up)+Math::E**(-@rf* periods_in_year)*((1-@probability) * down)).round(4)].max
43
43
  end
44
44
 
45
45
  def put_value(price)
@@ -1,3 +1,3 @@
1
1
  module FinanceEngine
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -37,6 +37,6 @@ describe FinanceEngine::American_Options do
37
37
  first = FinanceEngine::American_Options.new(100,0.3,0.05,100)
38
38
  first.build_american_options(1, 4)
39
39
  expect(first.tree['original_']['put']).to be_within(0.0005).of(13.5240)
40
- expect(first.tree['original_']['call']).to be_within(0.0005).of(8.6469)
40
+ expect(first.tree['original_']['call']).to be_within(0.0005).of(9.535)
41
41
  end
42
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finance_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey Penkar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-01 00:00:00.000000000 Z
11
+ date: 2014-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -96,6 +96,7 @@ files:
96
96
  - README.md~
97
97
  - Rakefile
98
98
  - finance_engine-0.0.1.gem
99
+ - finance_engine-0.0.2.gem
99
100
  - finance_engine.gemspec
100
101
  - lib/finance_engine.rb
101
102
  - lib/finance_engine/americanoptionpricing.rb