greeks 1.0 → 1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d3ca525eaf15c5be09d9cdba6adc4dfd619089d
4
- data.tar.gz: e991c828fbdaaff0d99a23e3137115136bd00b5c
3
+ metadata.gz: 9ad37eae3c2ce021e59725e537dc1b77d8ee2eab
4
+ data.tar.gz: 555eb9d63d90e5765dada93c6c28d402c6c48298
5
5
  SHA512:
6
- metadata.gz: c76eff692a4ee4d8710f39a7c3c121133227f67bbc50ee8d3126c22946a17f6b41509a3ca7c79294335b4799ea2f4e54afc50057c4ea6a4343bb925ac0429a49
7
- data.tar.gz: 501bfefa7861518237aab7c7cb3187598264fec413c27ec7b345f08267d4e3f830ff3d394e1091553dbc8730ed8e4a6545d850e272b7f9609a51b91aa980b06f
6
+ metadata.gz: 826582e8578e102704518e97a18c4d0d54e3e4bc3dd0f3d53981557b4499c657692d55cc736076623e05082f33be01c7f9e6955e9a5880fe9bd5c876b5ad8d4f
7
+ data.tar.gz: 7b172c97033ffacc91d37a6d60b934dd6b9e41a33d61285daa4893e2a4f57c881aa09d2092480f69a04ca8e9909965450195b3c709d58a3683ac607eae975d60
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- greeks (1.0)
5
- hash_plus
4
+ greeks (1.1)
5
+ hash_plus (>= 1.3)
6
6
  require_all
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
11
  diff-lcs (1.2.4)
12
- hash_plus (1.1)
12
+ hash_plus (1.3)
13
13
  require_all (1.2.1)
14
14
  rspec (2.13.0)
15
15
  rspec-core (~> 2.13.0)
data/README.md CHANGED
@@ -2,3 +2,50 @@ greeks
2
2
  ======
3
3
 
4
4
  Calculate greeks for options trading (Implied Volatility, Delta, Gamma, Vega, Rho, and Theta)
5
+
6
+
7
+ Examples
8
+ ========
9
+ What are the Greeks for Calls & Puts for AMD ($4.07 @ 35days)?
10
+
11
+ AMD stock = $4.07
12
+ Option Strike = $4.50
13
+ Option Expires = 35 days
14
+
15
+ Fed Rate = 0.01%
16
+ Dividend Rate = 0%
17
+
18
+ Call Bid = $0.16
19
+ Put Bid = $0.59
20
+
21
+ ```ruby
22
+ # Calculate the Greeks for the Stock & Option Contract
23
+ calc = Math::Greeks::Calculator.new(
24
+ :stock_price => 4.07,
25
+ :stock_dividend_rate => 0.00,
26
+ :federal_reserve_interest_rate => 0.01,
27
+ :option_expires_in_days => 35.0,
28
+ :option_strike => 4.50,
29
+ :option_type => :call,
30
+ :option_price => 0.16,
31
+ )
32
+
33
+ # What are the display values?
34
+ hash = calc.to_hash # Convert the values for display/consumption
35
+ hash[:iv] # => 61.93 (Implied Volatility %)
36
+ hash[:delta] # => -4.57 (Delta %/%)
37
+ hash[:gamma] # => -2.84 (Gamma pp/pp)
38
+ hash[:vega] # => 0.49 (Vega %/pp)
39
+ hash[:rho] # => -0.55 (Rho %/pp)
40
+ hash[:theta] # => -0.68 (Theta %/day)
41
+ hash[:break_even] # => 45.66 (Chance of Breakeven)
42
+
43
+ # What are the raw values?
44
+ calc.break_even # What is the raw Break Even odds (0.000 to 1.000)
45
+ calc.iv # What is the raw IV value (0.000 to 1.000)
46
+ calc.delta # What is the raw Delta $/$?
47
+ calc.gamma # What is the raw Gamma $/$?
48
+ calc.vega # What is the raw Vega $/pp?
49
+ calc.rho # What is the raw Rho $/pp?
50
+ calc.theta # What is the raw Theta $/day?
51
+ ```
data/greeks.gemspec CHANGED
@@ -1,17 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "greeks/version"
4
2
 
5
3
  Gem::Specification.new do |gem|
6
4
  gem.name = "greeks"
7
- gem.version = Math::Greeks::VERSION
5
+ gem.version = '1.1'
8
6
  gem.authors = ["Glenn Nagel"]
9
7
  gem.email = ["glenn@mercury-wireless.com"]
10
8
  gem.homepage = "https://github.com/gnagel/greeks"
11
9
  gem.summary = %q{Calculate greeks for options trading (Implied Volatility, Delta, Gamma, Vega, Rho, and Theta)}
12
10
  gem.description = %q{Calculate greeks (iv, delta, gamma, vega, rho, theta)}
13
11
  gem.license = 'MIT'
14
-
15
12
 
16
13
  gem.files = `git ls-files`.split($/)
17
14
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -20,7 +17,7 @@ Gem::Specification.new do |gem|
20
17
 
21
18
  # System
22
19
  gem.add_dependency('require_all')
23
- gem.add_dependency('hash_plus')
20
+ gem.add_dependency('hash_plus', '>= 1.3')
24
21
 
25
22
  gem.add_development_dependency('rspec')
26
23
  gem.add_development_dependency('rspec-expectations')
@@ -10,9 +10,11 @@ module Math
10
10
  # change in the option price for a one-percent change in the underlying security; this method of viewing the delta value
11
11
  # is also known as "leverage."
12
12
  def delta(opts)
13
- opts.requires_fields(:option_type, :rate_vs_expires, :d1_normal_distribution, :iv)
14
-
13
+ opts.requires_keys_are_present(:iv)
15
14
  return nil if opts[:iv].nil?
15
+
16
+ opts.requires_keys_are_not_nil(:option_type, :rate_vs_expires, :d1_normal_distribution, :iv)
17
+
16
18
 
17
19
  multiplier = case opts[:option_type]
18
20
  when :call
@@ -9,10 +9,11 @@ module Math
9
9
  # closer to $0.25. In this example, if the stock price changes from $50 to $60, then the delta will change from $0.50 to $0.75.
10
10
  # The $10 change in stock price caused a $0.25 change in delta, so gamma is approximately $0.25/10, or $0.025, in this case.
11
11
  def gamma(opts = {})
12
- opts.requires_fields(:stock_price, :option_expires_pct_year_sqrt, :iv, :nd1, :rate_vs_expires)
13
-
12
+ opts.requires_keys_are_present(:iv)
14
13
  return nil if opts[:iv].nil?
15
14
 
15
+ opts.requires_keys_are_not_nil(:stock_price, :option_expires_pct_year_sqrt, :nd1, :rate_vs_expires, :iv)
16
+
16
17
  opts[:nd1] * opts[:rate_vs_expires] / (opts[:stock_price] * opts[:iv] * opts[:option_expires_pct_year_sqrt])
17
18
  end
18
19
  end
@@ -1,9 +1,11 @@
1
1
  module Math
2
2
  module GreekCalculations
3
3
  def iv(opts)
4
- opts.requires_fields(:stock_price, :option_strike, :option_expires_pct_year, :option_expires_pct_year_sqrt, :federal_reserve_interest_rate_f, :stock_dividend_rate_f, :option_type, :option_price, :rate_vs_expires, :price_vs_rate_vs_expires, :strike_vs_fed_vs_expires, :price_ratio_log_less_rates)
5
-
6
- return nil if opts[:option_price].nil? || opts[:option_price] < 0
4
+ opts.requires_keys_are_present(:option_price)
5
+ return nil if opts[:option_price].nil?
6
+ return nil if opts[:option_price] <= 0
7
+
8
+ opts.requires_keys_are_not_nil(:stock_price, :option_strike, :option_expires_pct_year, :option_expires_pct_year_sqrt, :federal_reserve_interest_rate_f, :stock_dividend_rate_f, :option_type, :option_price, :rate_vs_expires, :price_vs_rate_vs_expires, :strike_vs_fed_vs_expires, :price_ratio_log_less_rates)
7
9
 
8
10
  iv_calc(
9
11
  opts[:stock_price],
@@ -4,9 +4,10 @@ module Math
4
4
  # The change in the value of an option for a change in the prevailing interest rate that matches the duration of the option,
5
5
  # all else held equal. Generally rho is not a big driver of price changes for options, as interest rates tend to be relatively stable.
6
6
  def rho(opts = {})
7
- opts.requires_fields(:option_type, :option_expires_pct_year, :strike_vs_fed_vs_expires, :d2_normal_distribution, :iv)
8
-
7
+ opts.requires_keys_are_present(:iv)
9
8
  return nil if opts[:iv].nil?
9
+
10
+ opts.requires_keys_are_not_nil(:option_type, :option_expires_pct_year, :strike_vs_fed_vs_expires, :d2_normal_distribution, :iv)
10
11
 
11
12
  multiplier = case opts[:option_type]
12
13
  when :call
@@ -1,10 +1,11 @@
1
1
  module Math
2
2
  module GreekCalculations
3
3
  def theta(opts = {})
4
- opts.requires_fields(:stock_dividend_rate_f, :federal_reserve_interest_rate_f, :option_type, :option_expires_pct_year_sqrt, :iv, :strike_vs_fed_vs_expires, :price_vs_rate_vs_expires, :nd1, :d1_normal_distribution, :d2_normal_distribution)
5
-
4
+ opts.requires_keys_are_present(:iv)
6
5
  return nil if opts[:iv].nil?
7
6
 
7
+ opts.requires_keys_are_not_nil(:stock_dividend_rate_f, :federal_reserve_interest_rate_f, :option_type, :option_expires_pct_year_sqrt, :iv, :strike_vs_fed_vs_expires, :price_vs_rate_vs_expires, :nd1, :d1_normal_distribution, :d2_normal_distribution)
8
+
8
9
  part0 = opts[:price_vs_rate_vs_expires] * opts[:nd1] * opts[:iv]
9
10
  part1 = 2 * opts[:option_expires_pct_year_sqrt]
10
11
  part2 = opts[:stock_dividend_rate_f] * opts[:price_vs_rate_vs_expires] * opts[:d1_normal_distribution]
@@ -7,9 +7,10 @@ module Math
7
7
  # and the vega is $0.05, then a one-percentage-point increase in implied volatility to 21% would correspond to an increase in
8
8
  # the price of the option to $1.05. In percentage terms, the vega in this case would be ($0.05/$1.00)/(1 percentage point) = 5%.
9
9
  def vega(opts = {})
10
- opts.requires_fields(:price_vs_rate_vs_expires, :nd1, :option_expires_pct_year_sqrt, :iv)
11
-
10
+ opts.requires_keys_are_present(:iv)
12
11
  return nil if opts[:iv].nil?
12
+
13
+ opts.requires_keys_are_not_nil(:price_vs_rate_vs_expires, :nd1, :option_expires_pct_year_sqrt, :iv)
13
14
 
14
15
  opts[:price_vs_rate_vs_expires] * opts[:option_expires_pct_year_sqrt] * opts[:nd1] / 100
15
16
  end
data/lib/greeks.rb CHANGED
@@ -9,7 +9,6 @@ require_relative 'greeks/calculations/theta'
9
9
  require_relative 'greeks/calculations/rho'
10
10
  require_relative 'greeks/calculations/vega'
11
11
  require_relative 'greeks/calculations/time_values'
12
- require_relative 'greeks/version'
13
12
 
14
13
 
15
14
  module Math
@@ -290,23 +289,15 @@ module Math
290
289
  :option_type => option_type,
291
290
  :option_strike => option_strike,
292
291
  :option_price => option_price,
293
- :break_even => nil,
294
- :iv => nil,
295
- :delta => nil,
296
- :gamma => nil,
297
- :vega => nil,
298
- :rho => nil,
299
- :theta => nil,
300
- :deta_vs_theta => nil,
292
+ :break_even => (NilMath.new(break_even) * 100.0).to_f, # break_even * 100
293
+ :iv => (NilMath.new(iv) * 100.0).to_f, # iv * 100
294
+ :delta => (NilMath.new(delta) * stock_price / option_price).to_f, # delta * stock_price / option_price
295
+ :gamma => (NilMath.new(gamma) * stock_price / delta).to_f, # gamma * stock_price / delta
296
+ :vega => (NilMath.new(vega) * 100.0 * iv / option_price).to_f, # vega * iv * 100 / option_price
297
+ :rho => (NilMath.new(rho) * 100.0 / option_price).to_f, # rho * 100 / option_price
298
+ :theta => (NilMath.new(theta) * 100.0 / option_price).to_f, # theta * 100 / option_price
299
+ :deta_vs_theta => nil,
301
300
  }
302
- hash[:break_even] = break_even * 100 unless break_even.nil?
303
- hash[:iv] = iv * 100 unless iv.nil?
304
- hash[:delta] = delta * stock_price / option_price unless delta.nil?
305
- hash[:gamma] = gamma * stock_price / delta unless gamma.nil?
306
- hash[:vega] = vega * iv * 100 / option_price unless vega.nil?
307
- hash[:rho] = rho * 100 / option_price unless rho.nil?
308
- hash[:theta] = theta * 100 / option_price unless theta.nil?
309
-
310
301
 
311
302
  # Delta/Theta
312
303
  # A measure of the “bang for the buck” of an option.
@@ -314,9 +305,10 @@ module Math
314
305
  # decay rate, the trend in the Delta/Theta column indicates which options give the most exposure
315
306
  # to the movement of the underlying stock or index for a given decay rate of the option value.
316
307
  # The highest numbers indicate the most bang for the buck for the least decay rate.
317
- hash[:deta_vs_theta] = hash[:delta] / hash[:theta] unless hash[:delta].nil? || hash[:theta].nil?
318
-
319
- [:iv, :delta, :gamma, :vega, :rho, :theta, :deta_vs_theta].each do |key|
308
+ hash[:deta_vs_theta] = (NilMath.new(hash[:delta]) / hash[:theta]).to_f
309
+
310
+ # Iterate the generated columns and round the output
311
+ [:break_even, :iv, :delta, :gamma, :vega, :rho, :theta, :deta_vs_theta].each do |key|
320
312
  hash[key] &&= hash[key].round(2)
321
313
  end
322
314
 
@@ -366,6 +358,46 @@ module Math
366
358
  @nd1 ||= GreekCalculations.misc_nd1(:d1 => d1)
367
359
  end
368
360
 
361
+ class NilMath
362
+ def initialize(value)
363
+ @value = value
364
+ end
365
+
366
+ def to_f
367
+ @value
368
+ end
369
+
370
+ def *(input)
371
+ multiply(input)
372
+ end
373
+
374
+ def /(input)
375
+ divide(input)
376
+ end
377
+
378
+ def multiply(input)
379
+ if (@value.nil? || input.nil?)
380
+ @value = nil
381
+ else
382
+ @value *= input
383
+ end
384
+ self
385
+ end
386
+
387
+ def multiply100()
388
+ multiply(100.0)
389
+ end
390
+
391
+ def divide(input)
392
+ if (@value.nil? || input.nil?)
393
+ @value = nil
394
+ else
395
+ @value /= input
396
+ end
397
+ self
398
+ end
399
+ end
400
+
369
401
  end
370
402
  end
371
403
  end
@@ -4,6 +4,21 @@ describe "Math::GreekCalculations::delta" do
4
4
  extend Math::GreekCalculations
5
5
  include Math::GreekCalculations
6
6
 
7
- it { delta(:option_type => :call, :rate_vs_expires => 1.0, :d1_normal_distribution => 1.0, :iv => 'any value').should === 1.0 }
8
- it { delta(:option_type => :put, :rate_vs_expires => 1.0, :d1_normal_distribution => 1.0, :iv => 'any value').should === -1.0 }
7
+ let(:opts) { {:rate_vs_expires => 1.0, :d1_normal_distribution => 1.0} }
8
+
9
+ ##
10
+ # General behavior tests
11
+ ##
12
+ it { expect{ delta(opts) }.to raise_error ArgumentError }
13
+
14
+ it { delta(opts.merge(:option_type => :call, :iv => nil)).should be_nil }
15
+ it { delta(opts.merge(:option_type => :put, :iv => nil)).should be_nil }
16
+
17
+ it { delta(opts.merge(:option_type => :call, :iv => 'any value')).should === 1.0 }
18
+ it { delta(opts.merge(:option_type => :put, :iv => 'any value')).should === -1.0 }
19
+
20
+ ##
21
+ # More specific examples
22
+ ##
23
+ # TODO
9
24
  end
@@ -4,5 +4,19 @@ describe "Math::GreekCalculations::gamma" do
4
4
  extend Math::GreekCalculations
5
5
  include Math::GreekCalculations
6
6
 
7
- it { gamma(:stock_price => 1.0, :option_expires_pct_year_sqrt => 2.0, :iv => 3.0, :nd1 => 4.0, :rate_vs_expires => 5.0).round(2).should. === 3.33 }
7
+ let(:opts) { {:stock_price => 1.0, :option_expires_pct_year_sqrt => 2.0, :nd1 => 4.0, :rate_vs_expires => 5.0} }
8
+
9
+ ##
10
+ # General behavior tests
11
+ ##
12
+ it { expect{ gamma(opts) }.to raise_error ArgumentError }
13
+
14
+ it { gamma(opts.merge(:iv => nil)).should be_nil }
15
+
16
+ it { gamma(opts.merge(:iv => 3.0)).round(2).should === 3.33 }
17
+
18
+ ##
19
+ # More specific examples
20
+ ##
21
+ # TODO
8
22
  end
@@ -5,10 +5,56 @@ describe "Math::GreekCalculations::iv" do
5
5
  include Math::GreekCalculations
6
6
  include Math::GreekCalculationHelpers
7
7
 
8
+ ##
9
+ # General behavior tests
10
+ ##
11
+ it { opts = {:a => :b}; expect { iv(opts) }.to raise_error ArgumentError, "Missing keys=option_price in opts={:a=>:b}" }
12
+
13
+ it { iv(:option_price => nil).should be_nil }
14
+
15
+ it {
16
+ iv(
17
+ :federal_reserve_interest_rate_f => 0.0,
18
+ :stock_price => 10.00,
19
+ :stock_dividend_rate_f => 0.0,
20
+ :option_type => :call,
21
+ :option_price => 1.0,
22
+ :option_strike => 10.00,
23
+ :option_expires_pct_year => 1.0,
24
+ :option_expires_pct_year_sqrt => 1.0,
25
+ :rate_vs_expires => 1.0,
26
+ :price_vs_rate_vs_expires => 1.0,
27
+ :strike_vs_fed_vs_expires => 1.0,
28
+ :price_ratio_log_less_rates => 1.0,
29
+ ).should === 21453795590575736000000.0
30
+ }
31
+
32
+ it {
33
+ iv(
34
+ :federal_reserve_interest_rate_f => 0.0,
35
+ :stock_price => 10.00,
36
+ :stock_dividend_rate_f => 0.0,
37
+ :option_type => :put,
38
+ :option_price => 1.0,
39
+ :option_strike => 10.00,
40
+ :option_expires_pct_year => 1.0,
41
+ :option_expires_pct_year_sqrt => 1.0,
42
+ :rate_vs_expires => 1.0,
43
+ :price_vs_rate_vs_expires => 1.0,
44
+ :strike_vs_fed_vs_expires => 1.0,
45
+ :price_ratio_log_less_rates => 1.0,
46
+ ).should === 21453795590575736000000.0
47
+ }
48
+
49
+
50
+ ##
51
+ # More specific examples
52
+ ##
8
53
  let(:stock_price) { 10.00 }
9
54
  let(:stock_dividend_rate) { 0.0 }
10
55
  let(:stock_dividend_rate_f) { 0.0 }
11
56
 
57
+ let(:option_strike) { 10.00 }
12
58
  let(:option_price) { 1.00 }
13
59
  let(:option_expires_in_days) { 364.0 }
14
60
  let(:option_expires_pct_year) { 1.0 }
@@ -4,6 +4,21 @@ describe "Math::GreekCalculations::rho" do
4
4
  extend Math::GreekCalculations
5
5
  include Math::GreekCalculations
6
6
 
7
- it { rho(:option_type => :call, :option_expires_pct_year => 1.0, :strike_vs_fed_vs_expires => 2.0, :d2_normal_distribution => 3.0, :iv => 'any value').should === 0.06 }
8
- it { rho(:option_type => :put, :option_expires_pct_year => 1.0, :strike_vs_fed_vs_expires => 2.0, :d2_normal_distribution => 3.0, :iv => 'any value').should === -0.06 }
7
+ let(:opts) { {:option_expires_pct_year => 1.0, :strike_vs_fed_vs_expires => 2.0, :d2_normal_distribution => 3.0} }
8
+
9
+ ##
10
+ # General behavior tests
11
+ ##
12
+ it { expect{ rho(opts) }.to raise_error ArgumentError }
13
+
14
+ it { rho(opts.merge(:option_type => :call, :iv => nil)).should be_nil }
15
+ it { rho(opts.merge(:option_type => :put, :iv => nil)).should be_nil }
16
+
17
+ it { rho(opts.merge(:option_type => :call, :iv => 'any value')).should === 0.06 }
18
+ it { rho(opts.merge(:option_type => :put, :iv => 'any value')).should === -0.06 }
19
+
20
+ ##
21
+ # More specific examples
22
+ ##
23
+ # TODO
9
24
  end
@@ -4,6 +4,20 @@ describe "Math::GreekCalculations::theta" do
4
4
  extend Math::GreekCalculations
5
5
  include Math::GreekCalculations
6
6
 
7
+ let(:opts) { {:option_type => :call, :stock_dividend_rate_f => 0.00, :federal_reserve_interest_rate_f => 0.00, :option_expires_pct_year_sqrt => 1.0, :strike_vs_fed_vs_expires => 1.0, :price_vs_rate_vs_expires => 1.0, :nd1 => 1.0, :d1_normal_distribution => 1.0, :d2_normal_distribution => 1.0} }
8
+
9
+ ##
10
+ # General behavior tests
11
+ ##
12
+ it { expect{ theta(opts) }.to raise_error ArgumentError }
13
+
14
+ it { theta(opts.merge(:iv => nil)).should be_nil }
15
+
16
+ it { theta(opts.merge(:iv => 1.0)).round(2).should. === 0.0 }
17
+
18
+ ##
19
+ # More specific examples
20
+ ##
7
21
  it { theta(:option_type => :call, :stock_dividend_rate_f => 1.0005, :federal_reserve_interest_rate_f => 2.0002, :option_expires_pct_year_sqrt => 1.0, :iv => 1.0, :strike_vs_fed_vs_expires => 3.0, :price_vs_rate_vs_expires => 4.0, :nd1 => 5.0, :d1_normal_distribution => 6.0, :d2_normal_distribution => 7.0).should === -0.0766909589041096 }
8
22
 
9
23
  it { theta(:option_type => :put, :stock_dividend_rate_f => 1.0005, :federal_reserve_interest_rate_f => 2.0002, :option_expires_pct_year_sqrt => 1.0, :iv => 1.0, :strike_vs_fed_vs_expires => 3.0, :price_vs_rate_vs_expires => 4.0, :nd1 => 5.0, :d1_normal_distribution => 6.0, :d2_normal_distribution => 7.0).should === 0.021896438356164394 }
@@ -4,6 +4,20 @@ describe "Math::GreekCalculations::vega" do
4
4
  extend Math::GreekCalculations
5
5
  include Math::GreekCalculations
6
6
 
7
+ let(:opts) { {:price_vs_rate_vs_expires => 1.0, :nd1 => 1.0, :option_expires_pct_year_sqrt => 1.0} }
8
+
9
+ ##
10
+ # General behavior tests
11
+ ##
12
+ it { expect{ vega(opts) }.to raise_error ArgumentError }
13
+
14
+ it { vega(opts.merge(:iv => nil)).should be_nil }
15
+
16
+ it { vega(opts.merge(:iv => 'any value')).round(2).should === 0.01 }
17
+
18
+ ##
19
+ # More specific examples
20
+ ##
7
21
  it { vega(:price_vs_rate_vs_expires => 1.0, :nd1 => 1.0, :option_expires_pct_year_sqrt => 1.0, :iv => 'any value').should === 0.01 }
8
22
  it { vega(:price_vs_rate_vs_expires => 3.0, :nd1 => 2.0, :option_expires_pct_year_sqrt => 1.0, :iv => 'any value').should === 0.06 }
9
23
  it { vega(:price_vs_rate_vs_expires => 10.0, :nd1 => 10.0, :option_expires_pct_year_sqrt => 5.0, :iv => 'any value').should === 5.0 }
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'rubygems'
2
-
3
2
  require 'rspec'
4
3
  require 'rspec-expectations'
5
4
  require 'benchmark'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greeks
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glenn Nagel
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -87,7 +87,6 @@ files:
87
87
  - lib/greeks/calculations/theta.rb
88
88
  - lib/greeks/calculations/time_values.rb
89
89
  - lib/greeks/calculations/vega.rb
90
- - lib/greeks/version.rb
91
90
  - spec/greeks/calculations/delta_spec.rb
92
91
  - spec/greeks/calculations/gamma_spec.rb
93
92
  - spec/greeks/calculations/iv_option_price_spec.rb
@@ -1,5 +0,0 @@
1
- module Math
2
- module Greeks
3
- VERSION = '1.0'
4
- end
5
- end