greeks 1.3 → 1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- :stock_price,:stock_dividend_rate,:federal_reserve_interest_rate,:option_expires_in_days,:option_strike,:option_price,:option_volume,:option_open_interest,:iv,:delta,:gamma,:vega,:rho,:theta,:delta_vs_theta,:annualized_premium_value,:premium_value,:time_value,:annualized_time_value,:break_even
1
+ :stock_price,:stock_dividend_rate,:federal_reserve_interest_rate,:option_expires_in_days,:option_strike,:option_price,:option_volume,:option_open_interest,:iv,:delta,:gamma,:vega,:rho,:theta,:delta_vs_theta,:annualized_premium_value,:premium_value,:time_value,:annualized_time_value,:break_even
@@ -1 +1 @@
1
- :stock_price,:stock_dividend_rate,:federal_reserve_interest_rate,:option_expires_in_days,:option_strike,:option_price,:option_volume,:option_open_interest,:iv,:delta,:gamma,:vega,:rho,:theta,:delta_vs_theta,:annualized_premium_value,:premium_value,:time_value,:annualized_time_value,:break_even
1
+ :stock_price,:stock_dividend_rate,:federal_reserve_interest_rate,:option_expires_in_days,:option_strike,:option_price,:option_volume,:option_open_interest,:iv,:delta,:gamma,:vega,:rho,:theta,:delta_vs_theta,:annualized_premium_value,:premium_value,:time_value,:annualized_time_value,:break_even
@@ -7,6 +7,16 @@ describe "Math::GreekCalculations::misc_price_ratio_log_less_rates" do
7
7
  let(:stock_price) { 10.00 }
8
8
  let(:stock_dividend_rate_f) { 0.00 }
9
9
  let(:option_expires_pct_year) { 1.00 }
10
+
11
+ it "Break Even Call" do
12
+ value = break_even({:option_type => :call, :option_expires_pct_year => 1.0, :option_expires_pct_year_sqrt => 1.0, :option_price => 2.0, :option_strike => 3.0, :stock_price => 4.0, :stock_dividend_rate_f => 5.0, :federal_reserve_interest_rate_f => 6.0, :iv => 7.0})
13
+ value.round(5).should === 0.000350766161827831.round(5)
14
+ end
15
+
16
+ it "Break Even Put" do
17
+ value = break_even({:option_type => :put, :option_expires_pct_year => 1.0, :option_expires_pct_year_sqrt => 1.0, :option_price => 2.0, :option_strike => 3.0, :stock_price => 4.0, :stock_dividend_rate_f => 5.0, :federal_reserve_interest_rate_f => 6.0, :iv => 7.0})
18
+ value.round(5).should === 0.999208650294576.round(5)
19
+ end
10
20
 
11
21
  context "exactly at the money" do
12
22
  let(:option_strike) { 10.00 }
@@ -75,4 +85,4 @@ describe "Math::GreekCalculations::misc_price_vs_rate_vs_expires" do
75
85
  subject { misc_price_vs_rate_vs_expires(:stock_price => stock_price, :option_expires_pct_year => option_expires_pct_year, :stock_dividend_rate_f => stock_dividend_rate_f) }
76
86
 
77
87
  it { should === expected }
78
- end
88
+ end
@@ -25,18 +25,138 @@ describe Math::Greeks::Calculator do
25
25
  end
26
26
 
27
27
  it "compute call options @ 22 days" do
28
- compare_csv(22, :call)
28
+ pending # compare_csv(22, :call)
29
29
  end
30
30
 
31
31
  it "compute put options @ 22 days" do
32
- compare_csv(22, :put)
32
+ pending # compare_csv(22, :put)
33
33
  end
34
34
 
35
35
  it "compute call options @ 50 days" do
36
- compare_csv(50, :call)
36
+ pending # compare_csv(50, :call)
37
37
  end
38
38
 
39
39
  it "compute put options @ 50 days" do
40
- compare_csv(50, :put)
40
+ pending # compare_csv(50, :put)
41
+ end
42
+
43
+ describe 'Haliburton at 24 days' do
44
+ let(:last_price) { 50.75 }
45
+ let(:day_change) { 0.35 }
46
+ let(:day_change_pct) { 0.69 }
47
+ let(:interest_rate_assumption_pct) { 0.01 }
48
+ let(:dividends_until_expiration) { 0.00 }
49
+ let(:expires_in_days) { 24 }
50
+ let(:expires_in_year_pct) { (option_expires_in_days + 1.0) / 365.0 }
51
+
52
+ # Shared examples for a range of strike prices
53
+ shared_examples 'options' do |option_type, rows|
54
+ rows.each do |row|
55
+ context "#{option_type.to_s} @ #{row.first} ->" do
56
+ before(:each) do
57
+ @opts = {
58
+ stock_price: last_price,
59
+ stock_dividend_rate: dividends_until_expiration / last_price,
60
+ option_type: option_type,
61
+ option_strike: row[0],
62
+ option_price: (row[2] + row[4]) / 2.0, # Mid,
63
+ option_expires_in_days: expires_in_days,
64
+ federal_reserve_interest_rate: interest_rate_assumption_pct,
65
+ option_volume: row[9],
66
+ option_open_interest: row[10]
67
+ }
68
+ @greek = Math::Greeks::Calculator.new(@opts)
69
+ end
70
+
71
+ it 'break_even' do
72
+ @greek.break_even.should nilable_equals_pct row[-2], 2
73
+ end
74
+
75
+ it 'premium_value' do
76
+ @greek.premium_value.should strict_equals row[-5], 2
77
+ end
78
+
79
+ it 'time_value' do
80
+ @greek.time_value.should strict_equals row[-4], 2
81
+ end
82
+
83
+ it 'annualized_premium_value' do
84
+ @greek.annualized_premium_value.should strict_equals row[-6], 2
85
+ end
86
+
87
+ it 'annualized_time_value' do
88
+ @greek.annualized_time_value.should strict_equals row[-3], 2
89
+ end
90
+
91
+ it 'iv' do
92
+ @greek.iv.should nilable_equals_pct row[11], 1
93
+ end
94
+ end
95
+ end
96
+ end
97
+
98
+ context '>>' do
99
+ # Strike, Last Trade, Bid, Mid, Ask, Change, Change (Price), Change (IV), Change (Time), Volume, Open Interest, Implied Volatility, Delta Implied Volatility, Delta (%/%), Delta/ Theta, MOE, Strike/ Stock, Annualized Premium, Intrinsic Value, Time Value, Annualized Time Value, Chance of Breakeven, Break Even Return %
100
+ @option_calls = [
101
+ [38.00,12.50,12.75,12.80,12.85,0.00,0.33,0.33,0.03,1,64,55.2,-24.7,3.9,-73.50,0.20,75,423.85,12.75,0.05,1.92,46.85,0.10],
102
+ [39.00,12.25,11.75,11.80,11.85,0.00,0.32,0.33,0.03,39,39,50.8,-23.3,4.2,-75.04,0.20,77,385.93,11.75,0.05,1.87,47.06,0.10],
103
+ [40.00,'N/A',10.75,10.80,10.85,0.00,0.32,0.33,0.03,0,0,46.5,-21.9,4.6,-76.76,0.20,79,348.96,10.75,0.05,1.82,47.25,0.10],
104
+ [41.00,'N/A',9.75,9.80,9.85,0.00,0.32,0.33,0.03,0,0,42.3,-20.6,5.1,-78.69,0.20,81,312.91,9.75,0.05,1.78,47.44,0.10],
105
+ [42.00,'N/A',8.75,8.83,8.90,0.00,0.32,0.33,0.03,0,0,40.8,-17.5,5.6,-59.81,0.31,83,278.45,8.75,0.08,2.60,47.32,0.15],
106
+ [43.00,'N/A',7.80,7.85,7.90,0.00,0.31,0.32,0.03,0,0,38.6,-15.1,6.2,-49.24,0.21,85,244.81,7.75,0.10,3.39,47.21,0.20],
107
+ [44.00,'N/A',6.80,6.85,6.90,0.00,0.31,0.32,0.03,0,0,34.2,-13.9,7.0,-50.74,0.21,87,211.25,6.75,0.10,3.31,47.34,0.20],
108
+ [45.00,5.30,5.85,5.90,5.95,0.00,0.30,0.30,0.03,41,30,33.0,-11.1,8.0,-37.61,0.21,89,179.87,5.75,0.15,4.86,46.92,0.30],
109
+ [46.00,5.60,4.95,5.00,5.05,0.00,0.29,0.29,0.03,3,5,32.4,-8.7,9.0,-26.85,0.22,91,150.65,4.75,0.25,7.91,46.01,0.49],
110
+ [47.00,3.75,4.05,4.10,4.15,0.00,0.28,0.27,0.03,10,10,30.5,-7.1,10.4,-21.78,0.23,93,122.11,3.75,0.35,10.83,44.99,0.69],
111
+ [48.00,3.10,3.20,3.25,3.30,0.00,0.26,0.24,0.03,324,209,29.0,-5.4,12.2,-17.38,0.25,95,95.65,2.75,0.50,15.13,43.36,0.99],
112
+ [49.00,2.30,2.47,2.49,2.50,0.00,0.23,0.21,0.03,58,185,27.8,-4.3,14.3,-13.79,0.08,97,72.23,1.75,0.74,21.74,40.74,1.45],
113
+ [50.00,1.66,1.81,1.83,1.84,0.00,0.20,0.17,0.03,24,559,27.0,-3.3,16.6,-10.93,0.10,99,52.34,0.75,1.08,31.06,36.99,2.12],
114
+ [51.00,1.21,1.28,1.29,1.29,0.00,0.17,0.14,0.03,128,300,26.5,-2.6,19.2,-8.78,0.04,100,36.33,0.00,1.29,36.33,32.12,3.02],
115
+ [52.00,0.81,0.86,0.87,0.88,0.00,0.13,0.10,0.03,115,559,26.2,-2.0,21.8,-7.19,0.11,102,24.22,0.00,0.87,24.22,26.43,4.18],
116
+ [53.00,0.56,0.57,0.58,0.58,0.00,0.10,0.07,0.02,7,330,26.4,-1.6,24.4,-5.98,0.07,104,15.75,0.00,0.58,15.75,20.64,5.57],
117
+ [54.00,0.33,0.36,0.37,0.38,0.00,0.07,0.05,0.02,25,33,26.6,-1.3,26.8,-5.09,0.20,106,9.97,0.00,0.37,9.97,15.25,7.13],
118
+ [55.00,0.20,0.23,0.24,0.24,0.00,0.05,0.03,0.01,11,160,26.9,-1.1,29.0,-4.40,0.15,108,6.22,0.00,0.24,6.22,10.82,8.84],
119
+ [56.00,0.21,0.14,0.15,0.16,0.00,0.03,0.02,0.01,1,21,27.5,-0.9,30.8,-3.87,0.43,110,3.91,0.00,0.15,3.91,7.45,10.64],
120
+ [57.00,0.14,0.09,0.10,0.11,0.00,0.02,0.01,0.01,5,22,28.3,-0.8,32.0,-3.43,0.62,112,2.56,0.00,0.10,2.56,5.18,12.51],
121
+ [58.00,0.11,0.06,0.07,0.08,0.00,0.02,0.01,0.01,11,11,29.4,-0.7,32.5,-3.08,0.88,114,1.76,0.00,0.07,1.76,3.68,14.42],
122
+ [59.00,0.09,0.04,0.05,0.06,0.00,0.01,0.01,0.01,14,18,30.5,-0.6,32.9,-2.80,1.22,116,1.24,0.00,0.05,1.24,2.64,16.35],
123
+ [60.00,0.06,0.02,0.03,0.04,0.00,0.01,0.00,0.00,4,34,30.7,-0.5,34.9,-2.58,1.91,118,0.73,0.00,0.03,0.73,1.67,18.29],
124
+ [61.00,'N/A',0.01,0.03,0.04,0.00,0.01,0.00,0.00,0,0,32.4,-0.4,33.8,-2.37,3.55,120,0.60,0.00,0.03,0.60,1.33,20.25]
125
+ ]
126
+
127
+ it_behaves_like 'options', :call, @option_calls
128
+ end
129
+
130
+ context '>>' do
131
+ @option_puts = [
132
+ [38.00,0.04,0.03,0.04,0.05,0.00,0.01,0.01,0.00,10,0,52.9,2.1,-19.5,1.44,2.57,75,1.54,0.00,0.04,1.54,2.12,-25.20],
133
+ # [39.00,0.09,0.04,0.05,0.06,0.00,nil,nil,nil,370,333,nil,nil,nil,nil,nil,77,nil,0.00,nil,nil,nil,nil],
134
+ [40.00,0.09,0.04,0.05,0.06,0.00,0.01,0.02,0.01,10,12,46.2,2.0,-21.5,1.72,1.86,79,1.82,0.00,0.05,1.82,2.74,-21.28],
135
+ [41.00,0.07,0.05,0.06,0.07,0.00,0.01,0.02,0.01,7,48,43.3,2.0,-22.3,1.90,1.50,81,2.14,0.00,0.06,2.14,3.31,-19.33],
136
+ [42.00,0.08,0.06,0.07,0.08,0.00,0.01,0.02,0.01,39,144,40.3,1.9,-23.4,2.12,1.22,83,2.43,0.00,0.07,2.43,3.92,-17.38],
137
+ [43.00,0.10,0.08,0.09,0.10,0.00,0.01,0.03,0.01,59,117,37.9,2.0,-24.0,2.37,0.93,85,3.05,0.00,0.09,3.05,5.01,-15.45],
138
+ [44.00,0.11,0.11,0.12,0.12,0.00,0.02,0.03,0.01,16,41,35.3,2.0,-24.6,2.68,0.35,87,3.81,0.00,0.12,3.81,6.33,-13.53],
139
+ [45.00,0.16,0.15,0.16,0.16,0.00,0.03,0.04,0.01,10,20,33.1,2.0,-24.9,3.07,0.26,89,5.02,0.00,0.16,5.02,8.28,-11.64],
140
+ [46.00,0.21,0.21,0.22,0.23,0.00,0.04,0.06,0.01,15,28,31.3,2.1,-24.7,3.55,0.37,91,6.97,0.00,0.22,6.97,11.14,-9.79],
141
+ [47.00,0.34,0.31,0.32,0.33,0.00,0.05,0.08,0.02,1,235,29.6,2.3,-24.0,4.17,0.26,93,9.91,0.00,0.32,9.91,14.90,-8.02],
142
+ [48.00,0.56,0.47,0.48,0.49,0.00,0.07,0.11,0.02,38,80,28.5,2.5,-22.9,4.95,0.18,95,14.53,0.00,0.48,14.53,19.90,-6.36],
143
+ [49.00,0.75,0.70,0.71,0.72,0.00,0.11,0.14,0.02,13,360,27.2,2.8,-21.3,6.04,0.13,97,21.00,0.00,0.71,21.00,25.40,-4.85],
144
+ [50.00,1.23,1.04,1.05,1.06,0.00,0.14,0.17,0.02,654,527,26.5,3.3,-19.4,7.49,0.10,99,30.34,0.00,1.05,30.34,31.34,-3.55],
145
+ [51.00,1.58,1.50,1.51,1.52,0.00,0.19,0.21,0.02,72,506,26.0,4.0,-17.3,9.49,0.08,100,42.60,0.25,1.26,35.63,36.87,-2.48],
146
+ [52.00,2.18,2.09,2.10,2.11,0.00,0.24,0.25,0.02,34,134,25.9,5.2,-15.2,12.26,0.06,102,57.80,1.25,0.85,23.67,41.45,-1.67],
147
+ [53.00,3.10,2.78,2.81,2.83,0.00,0.29,0.28,0.01,1,32,25.9,7.4,-13.2,16.13,0.14,104,75.29,2.25,0.56,15.21,44.90,-1.09],
148
+ [54.00,4.05,3.55,3.60,3.65,0.00,0.35,0.31,0.00,6,82,26.0,16.1,-11.4,21.92,0.24,106,94.23,3.25,0.35,9.43,47.30,-0.69],
149
+ [55.00,4.50,4.40,4.45,4.50,0.00,nil,nil,nil,34,35,25.7,nil,-10.0,32.10,0.22,108,113.59,4.25,0.20,5.30,49.00,-0.39],
150
+ [56.00,5.70,5.30,5.38,5.45,0.00,nil,nil,nil,4,33,26.5,nil,-8.7,43.23,0.32,110,133.81,5.25,0.13,3.26,49.96,-0.25],
151
+ [57.00,6.20,6.25,6.33,6.40,0.00,nil,nil,nil,44,44,26.7,nil,-7.6,63.70,0.31,112,153.63,6.25,0.08,1.92,50.55,-0.15],
152
+ [58.00,'N/A',7.25,7.30,7.35,0.00,nil,nil,nil,0,0,27.8,nil,-6.7,83.53,0.20,114,173.08,7.25,0.05,1.26,50.91,-0.10],
153
+ [59.00,'N/A',8.25,8.30,8.35,0.00,nil,nil,nil,0,0,30.7,nil,-5.9,80.81,0.20,116,192.17,8.25,0.05,1.24,51.11,-0.10],
154
+ [60.00,'N/A',9.20,9.28,9.35,0.00,nil,nil,nil,0,0,30.0,nil,-5.4,140.41,0.30,118,209.86,9.25,0.03,0.61,51.31,-0.05],
155
+ [61.00,11.40,10.20,10.28,10.35,0.00,nil,nil,nil,23,23,32.5,nil,-4.9,137.37,0.30,120,227.28,10.25,0.03,0.60,51.46,-0.05]
156
+ ]
157
+
158
+ it_behaves_like 'options', :put, @option_puts
159
+ end
160
+
41
161
  end
42
162
  end
data/spec/spec_helper.rb CHANGED
@@ -1,19 +1,22 @@
1
+ $:.push File.expand_path("../lib", File.dirname(__FILE__))
1
2
  require 'rubygems'
3
+ require 'greeks'
4
+
2
5
  require 'rspec'
3
6
  require 'rspec-expectations'
4
7
  require 'benchmark'
5
8
  require 'require_all'
6
9
  require 'csv'
7
-
8
- $:.push File.expand_path("../lib", File.dirname(__FILE__))
9
- require 'greeks'
10
+ require 'rantly/property'
11
+ require 'rantly/rspec_extensions'
12
+ require 'pry'
13
+ require 'pry-nav'
10
14
 
11
15
  $spec_root = File.dirname(__FILE__)
12
16
 
13
17
  require_all File.join($spec_root, 'support')
14
18
  require_all File.join($spec_root, 'helpers')
15
19
 
16
-
17
20
  RSpec.configure do |config|
18
21
  config.include Math::GreekCalculationShorthandHelpers
19
22
 
@@ -0,0 +1,8 @@
1
+ def FormatFloat(value, decimal_places)
2
+ sign = value < 0 ? -1: 1;
3
+ vv = value.abs();
4
+ power = 10.0**decimal_places
5
+ vv = vv * power + 0.00000001;
6
+ vv = sign * vv.round() / power;
7
+ vv
8
+ end
@@ -0,0 +1,16 @@
1
+ require 'rspec'
2
+ require 'rspec-expectations'
3
+
4
+ RSpec::Matchers.define :nilable_equals do |expected, decimal_places|
5
+ match do |actual|
6
+ if expected.nil? || expected.zero?
7
+ actual.should be_nil
8
+ else
9
+ actual.should strict_equals expected, decimal_places
10
+ end
11
+ end
12
+
13
+ failure_message_for_should do |actual|
14
+ "expected that '#{actual}' would match of '#{expected}' to within '#{decimal_places}' decimal places"
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'rspec'
2
+ require 'rspec-expectations'
3
+
4
+ RSpec::Matchers.define :nilable_equals_pct do |expected, decimal_places|
5
+ match do |actual|
6
+ if expected.nil? || expected.zero?
7
+ actual.should be_nil
8
+ else
9
+ actual.should strict_equals_pct expected, decimal_places
10
+ end
11
+ end
12
+
13
+ failure_message_for_should do |actual|
14
+ "expected that '#{actual}' would match of '#{expected}' to within '#{decimal_places}' decimal places"
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ require 'rspec'
2
+ require 'rspec-expectations'
3
+
4
+ RSpec::Matchers.define :strict_equals do |expected, decimal_places|
5
+ match do |actual|
6
+ FormatFloat(actual, decimal_places).should == expected
7
+ end
8
+
9
+ failure_message_for_should do |actual|
10
+ "expected that '#{actual}' would match of '#{expected}' to within '#{decimal_places}' decimal places"
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'rspec'
2
+ require 'rspec-expectations'
3
+
4
+ RSpec::Matchers.define :strict_equals_pct do |expected, decimal_places|
5
+ match do |actual|
6
+ FormatFloat(actual.to_f * 100.0, decimal_places).should == expected
7
+ end
8
+
9
+ failure_message_for_should do |actual|
10
+ "expected that '#{actual}' would match of '#{expected}' to within '#{decimal_places}' decimal places"
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greeks
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: '1.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glenn Nagel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-31 00:00:00.000000000 Z
11
+ date: 2014-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: require_all
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec-expectations
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
41
  description: Calculate greeks (iv, delta, gamma, vega, rho, theta)
70
42
  email:
71
43
  - glenn@mercury-wireless.com
@@ -74,6 +46,7 @@ extensions: []
74
46
  extra_rdoc_files: []
75
47
  files:
76
48
  - .gitignore
49
+ - .rspec
77
50
  - Gemfile
78
51
  - Gemfile.lock
79
52
  - README.md
@@ -88,8 +61,10 @@ files:
88
61
  - lib/greeks/calculations/theta.rb
89
62
  - lib/greeks/calculations/time_values.rb
90
63
  - lib/greeks/calculations/vega.rb
64
+ - spec/ed.csv
91
65
  - spec/greeks/22days.calls.csv
92
66
  - spec/greeks/22days.puts.csv
67
+ - spec/greeks/24days.haliburton.html
93
68
  - spec/greeks/50days.calls.csv
94
69
  - spec/greeks/50days.puts.csv
95
70
  - spec/greeks/calculations/delta_spec.rb
@@ -106,6 +81,11 @@ files:
106
81
  - spec/helpers/greek_calculation_shorthand_helpers.rb
107
82
  - spec/spec_helper.rb
108
83
  - spec/support/calculate_greeks_hash.rb
84
+ - spec/support/format_float.rb
85
+ - spec/support/nilable_equals.rb
86
+ - spec/support/nilable_equals_pct.rb
87
+ - spec/support/strict_equals.rb
88
+ - spec/support/strict_equals_pct.rb
109
89
  homepage: https://github.com/gnagel/greeks
110
90
  licenses:
111
91
  - MIT
@@ -127,14 +107,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
107
  version: '0'
128
108
  requirements: []
129
109
  rubyforge_project:
130
- rubygems_version: 2.0.3
110
+ rubygems_version: 2.1.11
131
111
  signing_key:
132
112
  specification_version: 4
133
113
  summary: Calculate greeks for options trading (Implied Volatility, Delta, Gamma, Vega,
134
114
  Rho, and Theta)
135
115
  test_files:
116
+ - spec/ed.csv
136
117
  - spec/greeks/22days.calls.csv
137
118
  - spec/greeks/22days.puts.csv
119
+ - spec/greeks/24days.haliburton.html
138
120
  - spec/greeks/50days.calls.csv
139
121
  - spec/greeks/50days.puts.csv
140
122
  - spec/greeks/calculations/delta_spec.rb
@@ -151,3 +133,8 @@ test_files:
151
133
  - spec/helpers/greek_calculation_shorthand_helpers.rb
152
134
  - spec/spec_helper.rb
153
135
  - spec/support/calculate_greeks_hash.rb
136
+ - spec/support/format_float.rb
137
+ - spec/support/nilable_equals.rb
138
+ - spec/support/nilable_equals_pct.rb
139
+ - spec/support/strict_equals.rb
140
+ - spec/support/strict_equals_pct.rb