option_lab 0.1.0
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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +139 -0
- data/.yard/hooks/before_generate.rb +7 -0
- data/.yardopts +11 -0
- data/Gemfile +26 -0
- data/LICENSE.txt +21 -0
- data/README.md +180 -0
- data/Rakefile +44 -0
- data/docs/OptionLab/BinomialTree.html +1271 -0
- data/docs/OptionLab/BjerksundStensland.html +2022 -0
- data/docs/OptionLab/BlackScholes.html +2388 -0
- data/docs/OptionLab/Engine.html +1716 -0
- data/docs/OptionLab/Models/AmericanModelInputs.html +937 -0
- data/docs/OptionLab/Models/ArrayInputs.html +463 -0
- data/docs/OptionLab/Models/BaseModel.html +223 -0
- data/docs/OptionLab/Models/BinomialModelInputs.html +1161 -0
- data/docs/OptionLab/Models/BlackScholesInfo.html +967 -0
- data/docs/OptionLab/Models/BlackScholesModelInputs.html +851 -0
- data/docs/OptionLab/Models/ClosedPosition.html +445 -0
- data/docs/OptionLab/Models/EngineData.html +2523 -0
- data/docs/OptionLab/Models/EngineDataResults.html +435 -0
- data/docs/OptionLab/Models/Inputs.html +2241 -0
- data/docs/OptionLab/Models/LaplaceInputs.html +777 -0
- data/docs/OptionLab/Models/Option.html +736 -0
- data/docs/OptionLab/Models/Outputs.html +1753 -0
- data/docs/OptionLab/Models/PoPOutputs.html +645 -0
- data/docs/OptionLab/Models/PricingResult.html +848 -0
- data/docs/OptionLab/Models/Stock.html +583 -0
- data/docs/OptionLab/Models/TreeVisualization.html +688 -0
- data/docs/OptionLab/Models.html +251 -0
- data/docs/OptionLab/Plotting.html +548 -0
- data/docs/OptionLab/Support.html +2884 -0
- data/docs/OptionLab/Utils.html +619 -0
- data/docs/OptionLab.html +133 -0
- data/docs/_index.html +376 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/file.LICENSE.html +70 -0
- data/docs/file.README.html +263 -0
- data/docs/file_list.html +64 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +263 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1974 -0
- data/docs/top-level-namespace.html +110 -0
- data/examples/american_options.rb +163 -0
- data/examples/covered_call.rb +76 -0
- data/lib/option_lab/binomial_tree.rb +238 -0
- data/lib/option_lab/bjerksund_stensland.rb +276 -0
- data/lib/option_lab/black_scholes.rb +323 -0
- data/lib/option_lab/engine.rb +492 -0
- data/lib/option_lab/models.rb +768 -0
- data/lib/option_lab/plotting.rb +182 -0
- data/lib/option_lab/support.rb +471 -0
- data/lib/option_lab/utils.rb +107 -0
- data/lib/option_lab/version.rb +5 -0
- data/lib/option_lab.rb +134 -0
- data/option_lab.gemspec +43 -0
- metadata +207 -0
@@ -0,0 +1,548 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Module: OptionLab::Plotting
|
8
|
+
|
9
|
+
— OptionLab Documentation
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "OptionLab::Plotting";
|
19
|
+
relpath = '../';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="../class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="../_index.html">Index (P)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../OptionLab.html" title="OptionLab (module)">OptionLab</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">Plotting</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="../class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Module: OptionLab::Plotting
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<dl>
|
80
|
+
<dt>Defined in:</dt>
|
81
|
+
<dd>lib/option_lab/plotting.rb</dd>
|
82
|
+
</dl>
|
83
|
+
|
84
|
+
</div>
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
<h2>
|
95
|
+
Class Method Summary
|
96
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
97
|
+
</h2>
|
98
|
+
|
99
|
+
<ul class="summary">
|
100
|
+
|
101
|
+
<li class="public ">
|
102
|
+
<span class="summary_signature">
|
103
|
+
|
104
|
+
<a href="#plot_pl-class_method" title="plot_pl (class method)">.<strong>plot_pl</strong>(outputs) ⇒ void </a>
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
</span>
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
<span class="summary_desc"><div class='inline'><p>Plot profit/loss diagram.</p>
|
119
|
+
</div></span>
|
120
|
+
|
121
|
+
</li>
|
122
|
+
|
123
|
+
|
124
|
+
</ul>
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
<div id="class_method_details" class="method_details_list">
|
130
|
+
<h2>Class Method Details</h2>
|
131
|
+
|
132
|
+
|
133
|
+
<div class="method_details first">
|
134
|
+
<h3 class="signature first" id="plot_pl-class_method">
|
135
|
+
|
136
|
+
.<strong>plot_pl</strong>(outputs) ⇒ <tt>void</tt>
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
</h3><div class="docstring">
|
143
|
+
<div class="discussion">
|
144
|
+
<p class="note returns_void">This method returns an undefined value.</p><p>Plot profit/loss diagram</p>
|
145
|
+
|
146
|
+
|
147
|
+
</div>
|
148
|
+
</div>
|
149
|
+
<div class="tags">
|
150
|
+
<p class="tag_title">Parameters:</p>
|
151
|
+
<ul class="param">
|
152
|
+
|
153
|
+
<li>
|
154
|
+
|
155
|
+
<span class='name'>outputs</span>
|
156
|
+
|
157
|
+
|
158
|
+
<span class='type'>(<tt><span class='object_link'><a href="Models/Outputs.html" title="OptionLab::Models::Outputs (class)">Models::Outputs</a></span></tt>)</span>
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
—
|
163
|
+
<div class='inline'><p>Strategy outputs</p>
|
164
|
+
</div>
|
165
|
+
|
166
|
+
</li>
|
167
|
+
|
168
|
+
</ul>
|
169
|
+
|
170
|
+
|
171
|
+
</div><table class="source_code">
|
172
|
+
<tr>
|
173
|
+
<td>
|
174
|
+
<pre class="lines">
|
175
|
+
|
176
|
+
|
177
|
+
11
|
178
|
+
12
|
179
|
+
13
|
180
|
+
14
|
181
|
+
15
|
182
|
+
16
|
183
|
+
17
|
184
|
+
18
|
185
|
+
19
|
186
|
+
20
|
187
|
+
21
|
188
|
+
22
|
189
|
+
23
|
190
|
+
24
|
191
|
+
25
|
192
|
+
26
|
193
|
+
27
|
194
|
+
28
|
195
|
+
29
|
196
|
+
30
|
197
|
+
31
|
198
|
+
32
|
199
|
+
33
|
200
|
+
34
|
201
|
+
35
|
202
|
+
36
|
203
|
+
37
|
204
|
+
38
|
205
|
+
39
|
206
|
+
40
|
207
|
+
41
|
208
|
+
42
|
209
|
+
43
|
210
|
+
44
|
211
|
+
45
|
212
|
+
46
|
213
|
+
47
|
214
|
+
48
|
215
|
+
49
|
216
|
+
50
|
217
|
+
51
|
218
|
+
52
|
219
|
+
53
|
220
|
+
54
|
221
|
+
55
|
222
|
+
56
|
223
|
+
57
|
224
|
+
58
|
225
|
+
59
|
226
|
+
60
|
227
|
+
61
|
228
|
+
62
|
229
|
+
63
|
230
|
+
64
|
231
|
+
65
|
232
|
+
66
|
233
|
+
67
|
234
|
+
68
|
235
|
+
69
|
236
|
+
70
|
237
|
+
71
|
238
|
+
72
|
239
|
+
73
|
240
|
+
74
|
241
|
+
75
|
242
|
+
76
|
243
|
+
77
|
244
|
+
78
|
245
|
+
79
|
246
|
+
80
|
247
|
+
81
|
248
|
+
82
|
249
|
+
83
|
250
|
+
84
|
251
|
+
85
|
252
|
+
86
|
253
|
+
87
|
254
|
+
88
|
255
|
+
89
|
256
|
+
90
|
257
|
+
91
|
258
|
+
92
|
259
|
+
93
|
260
|
+
94
|
261
|
+
95
|
262
|
+
96
|
263
|
+
97
|
264
|
+
98
|
265
|
+
99
|
266
|
+
100
|
267
|
+
101
|
268
|
+
102
|
269
|
+
103
|
270
|
+
104
|
271
|
+
105
|
272
|
+
106
|
273
|
+
107
|
274
|
+
108
|
275
|
+
109
|
276
|
+
110
|
277
|
+
111
|
278
|
+
112
|
279
|
+
113
|
280
|
+
114
|
281
|
+
115
|
282
|
+
116
|
283
|
+
117
|
284
|
+
118
|
285
|
+
119
|
286
|
+
120
|
287
|
+
121
|
288
|
+
122
|
289
|
+
123
|
290
|
+
124
|
291
|
+
125
|
292
|
+
126
|
293
|
+
127
|
294
|
+
128
|
295
|
+
129
|
296
|
+
130
|
297
|
+
131
|
298
|
+
132
|
299
|
+
133
|
300
|
+
134
|
301
|
+
135
|
302
|
+
136
|
303
|
+
137
|
304
|
+
138
|
305
|
+
139
|
306
|
+
140
|
307
|
+
141
|
308
|
+
142
|
309
|
+
143
|
310
|
+
144
|
311
|
+
145
|
312
|
+
146
|
313
|
+
147
|
314
|
+
148
|
315
|
+
149
|
316
|
+
150
|
317
|
+
151
|
318
|
+
152
|
319
|
+
153
|
320
|
+
154
|
321
|
+
155
|
322
|
+
156
|
323
|
+
157
|
324
|
+
158
|
325
|
+
159
|
326
|
+
160
|
327
|
+
161
|
328
|
+
162
|
329
|
+
163
|
330
|
+
164
|
331
|
+
165
|
332
|
+
166
|
333
|
+
167
|
334
|
+
168
|
335
|
+
169
|
336
|
+
170
|
337
|
+
171
|
338
|
+
172
|
339
|
+
173
|
340
|
+
174
|
341
|
+
175
|
342
|
+
176
|
343
|
+
177
|
344
|
+
178
|
345
|
+
179
|
346
|
+
180
|
347
|
+
181
|
348
|
+
182
|
349
|
+
183
|
350
|
+
184
|
351
|
+
185</pre>
|
352
|
+
</td>
|
353
|
+
<td>
|
354
|
+
<pre class="code"><span class="info file"># File 'lib/option_lab/plotting.rb', line 11</span>
|
355
|
+
|
356
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_plot_pl'>plot_pl</span><span class='lparen'>(</span><span class='id identifier rubyid_outputs'>outputs</span><span class='rparen'>)</span>
|
357
|
+
<span class='id identifier rubyid_st'>st</span> <span class='op'>=</span> <span class='id identifier rubyid_outputs'>outputs</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span>
|
358
|
+
<span class='id identifier rubyid_inputs'>inputs</span> <span class='op'>=</span> <span class='id identifier rubyid_outputs'>outputs</span><span class='period'>.</span><span class='id identifier rubyid_inputs'>inputs</span>
|
359
|
+
|
360
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_strategy_profit'>strategy_profit</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>0</span>
|
361
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Before plotting the profit/loss profile diagram, you must run a calculation!</span><span class='tstring_end'>"</span></span>
|
362
|
+
<span class='kw'>end</span>
|
363
|
+
|
364
|
+
<span class='comment'># Extract data
|
365
|
+
</span> <span class='id identifier rubyid_stock_prices'>stock_prices</span> <span class='op'>=</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_stock_price_array'>stock_price_array</span>
|
366
|
+
<span class='id identifier rubyid_strategy_profit'>strategy_profit</span> <span class='op'>=</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_strategy_profit'>strategy_profit</span>
|
367
|
+
<span class='id identifier rubyid_zero_line'>zero_line</span> <span class='op'>=</span> <span class='const'>Numo</span><span class='op'>::</span><span class='const'>DFloat</span><span class='period'>.</span><span class='id identifier rubyid_zeros'>zeros</span><span class='lparen'>(</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
368
|
+
|
369
|
+
<span class='comment'># Process strikes and organize marker data
|
370
|
+
</span> <span class='id identifier rubyid_strike_call_buy'>strike_call_buy</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
371
|
+
<span class='id identifier rubyid_strike_put_buy'>strike_put_buy</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
372
|
+
<span class='id identifier rubyid_zero_call_buy'>zero_call_buy</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
373
|
+
<span class='id identifier rubyid_zero_put_buy'>zero_put_buy</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
374
|
+
<span class='id identifier rubyid_strike_call_sell'>strike_call_sell</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
375
|
+
<span class='id identifier rubyid_strike_put_sell'>strike_put_sell</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
376
|
+
<span class='id identifier rubyid_zero_call_sell'>zero_call_sell</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
377
|
+
<span class='id identifier rubyid_zero_put_sell'>zero_put_sell</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
378
|
+
|
379
|
+
<span class='comment'># Create plot comment
|
380
|
+
</span> <span class='id identifier rubyid_comment'>comment</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Profit/Loss diagram:\n--------------------\n</span><span class='tstring_end'>"</span></span>
|
381
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>The vertical green dashed line corresponds to the position </span><span class='tstring_end'>"</span></span>
|
382
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>of the stock's spot price. The right and left arrow </span><span class='tstring_end'>"</span></span>
|
383
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>markers indicate the strike prices of calls and puts, </span><span class='tstring_end'>"</span></span>
|
384
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>respectively, with blue representing long and red representing </span><span class='tstring_end'>"</span></span>
|
385
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>short positions.</span><span class='tstring_end'>"</span></span>
|
386
|
+
|
387
|
+
<span class='comment'># Process each strike price
|
388
|
+
</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_strike'>strike</span><span class='period'>.</span><span class='id identifier rubyid_each_with_index'>each_with_index</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_strike'>strike</span><span class='comma'>,</span> <span class='id identifier rubyid_i'>i</span><span class='op'>|</span>
|
389
|
+
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_strike'>strike</span> <span class='op'>==</span> <span class='float'>0.0</span>
|
390
|
+
|
391
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span>
|
392
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>call</span><span class='tstring_end'>'</span></span>
|
393
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>buy</span><span class='tstring_end'>'</span></span>
|
394
|
+
<span class='id identifier rubyid_strike_call_buy'>strike_call_buy</span> <span class='op'><<</span> <span class='id identifier rubyid_strike'>strike</span>
|
395
|
+
<span class='id identifier rubyid_zero_call_buy'>zero_call_buy</span> <span class='op'><<</span> <span class='float'>0.0</span>
|
396
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sell</span><span class='tstring_end'>'</span></span>
|
397
|
+
<span class='id identifier rubyid_strike_call_sell'>strike_call_sell</span> <span class='op'><<</span> <span class='id identifier rubyid_strike'>strike</span>
|
398
|
+
<span class='id identifier rubyid_zero_call_sell'>zero_call_sell</span> <span class='op'><<</span> <span class='float'>0.0</span>
|
399
|
+
<span class='kw'>end</span>
|
400
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>put</span><span class='tstring_end'>'</span></span>
|
401
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>buy</span><span class='tstring_end'>'</span></span>
|
402
|
+
<span class='id identifier rubyid_strike_put_buy'>strike_put_buy</span> <span class='op'><<</span> <span class='id identifier rubyid_strike'>strike</span>
|
403
|
+
<span class='id identifier rubyid_zero_put_buy'>zero_put_buy</span> <span class='op'><<</span> <span class='float'>0.0</span>
|
404
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_st'>st</span><span class='period'>.</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sell</span><span class='tstring_end'>'</span></span>
|
405
|
+
<span class='id identifier rubyid_strike_put_sell'>strike_put_sell</span> <span class='op'><<</span> <span class='id identifier rubyid_strike'>strike</span>
|
406
|
+
<span class='id identifier rubyid_zero_put_sell'>zero_put_sell</span> <span class='op'><<</span> <span class='float'>0.0</span>
|
407
|
+
<span class='kw'>end</span>
|
408
|
+
<span class='kw'>end</span>
|
409
|
+
<span class='kw'>end</span>
|
410
|
+
|
411
|
+
<span class='comment'># Handle profit target and loss limit lines
|
412
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_profit_target'>profit_target</span>
|
413
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> The blue dashed line represents the profit target level.</span><span class='tstring_end'>"</span></span>
|
414
|
+
<span class='id identifier rubyid_target_line'>target_line</span> <span class='op'>=</span> <span class='const'>Numo</span><span class='op'>::</span><span class='const'>DFloat</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fill'>fill</span><span class='lparen'>(</span><span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_profit_target'>profit_target</span><span class='rparen'>)</span>
|
415
|
+
<span class='kw'>end</span>
|
416
|
+
|
417
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_loss_limit'>loss_limit</span>
|
418
|
+
<span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> The red dashed line represents the loss limit level.</span><span class='tstring_end'>"</span></span>
|
419
|
+
<span class='id identifier rubyid_loss_line'>loss_line</span> <span class='op'>=</span> <span class='const'>Numo</span><span class='op'>::</span><span class='const'>DFloat</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fill'>fill</span><span class='lparen'>(</span><span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_loss_limit'>loss_limit</span><span class='rparen'>)</span>
|
420
|
+
<span class='kw'>end</span>
|
421
|
+
|
422
|
+
<span class='comment'># Print comment
|
423
|
+
</span> <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_comment'>comment</span>
|
424
|
+
|
425
|
+
<span class='comment'># Create the plot
|
426
|
+
</span> <span class='kw'>begin</span>
|
427
|
+
<span class='const'>Gnuplot</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_gp'>gp</span><span class='op'>|</span>
|
428
|
+
<span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>Plot</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_gp'>gp</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_plot'>plot</span><span class='op'>|</span>
|
429
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Options Strategy Profit/Loss</span><span class='tstring_end'>"</span></span>
|
430
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_xlabel'>xlabel</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Stock Price</span><span class='tstring_end'>"</span></span>
|
431
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_ylabel'>ylabel</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Profit/Loss</span><span class='tstring_end'>"</span></span>
|
432
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_xrange'>xrange</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>"</span></span>
|
433
|
+
|
434
|
+
<span class='comment'># Add zero line
|
435
|
+
</span> <span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='comma'>,</span> <span class='id identifier rubyid_zero_line'>zero_line</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
436
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lines</span><span class='tstring_end'>"</span></span>
|
437
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>violet</span><span class='tstring_end'>"</span></span>
|
438
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linewidth'>linewidth</span> <span class='op'>=</span> <span class='int'>2</span>
|
439
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linetype'>linetype</span> <span class='op'>=</span> <span class='int'>2</span> <span class='comment'># dashed line
|
440
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Break-even</span><span class='tstring_end'>"</span></span>
|
441
|
+
<span class='kw'>end</span>
|
442
|
+
|
443
|
+
<span class='comment'># Add strategy profit line
|
444
|
+
</span> <span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='comma'>,</span> <span class='id identifier rubyid_strategy_profit'>strategy_profit</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
445
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lines</span><span class='tstring_end'>"</span></span>
|
446
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>black</span><span class='tstring_end'>"</span></span>
|
447
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linewidth'>linewidth</span> <span class='op'>=</span> <span class='int'>3</span>
|
448
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Strategy P/L</span><span class='tstring_end'>"</span></span>
|
449
|
+
<span class='kw'>end</span>
|
450
|
+
|
451
|
+
<span class='comment'># Add vertical line at current stock price
|
452
|
+
</span> <span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
|
453
|
+
<span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_stock_price'>stock_price</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_stock_price'>stock_price</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_strategy_profit'>strategy_profit</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_strategy_profit'>strategy_profit</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
454
|
+
<span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
455
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lines</span><span class='tstring_end'>"</span></span>
|
456
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>green</span><span class='tstring_end'>"</span></span>
|
457
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linewidth'>linewidth</span> <span class='op'>=</span> <span class='int'>2</span>
|
458
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linetype'>linetype</span> <span class='op'>=</span> <span class='int'>2</span> <span class='comment'># dashed line
|
459
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Current Price</span><span class='tstring_end'>"</span></span>
|
460
|
+
<span class='kw'>end</span>
|
461
|
+
|
462
|
+
<span class='comment'># Add profit target line if present
|
463
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_profit_target'>profit_target</span>
|
464
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='comma'>,</span> <span class='id identifier rubyid_target_line'>target_line</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
465
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lines</span><span class='tstring_end'>"</span></span>
|
466
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>blue</span><span class='tstring_end'>"</span></span>
|
467
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linewidth'>linewidth</span> <span class='op'>=</span> <span class='int'>2</span>
|
468
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linetype'>linetype</span> <span class='op'>=</span> <span class='int'>2</span> <span class='comment'># dashed line
|
469
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Profit Target</span><span class='tstring_end'>"</span></span>
|
470
|
+
<span class='kw'>end</span>
|
471
|
+
<span class='kw'>end</span>
|
472
|
+
|
473
|
+
<span class='comment'># Add loss limit line if present
|
474
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='period'>.</span><span class='id identifier rubyid_loss_limit'>loss_limit</span>
|
475
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_stock_prices'>stock_prices</span><span class='comma'>,</span> <span class='id identifier rubyid_loss_line'>loss_line</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
476
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lines</span><span class='tstring_end'>"</span></span>
|
477
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>red</span><span class='tstring_end'>"</span></span>
|
478
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linewidth'>linewidth</span> <span class='op'>=</span> <span class='int'>2</span>
|
479
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linetype'>linetype</span> <span class='op'>=</span> <span class='int'>2</span> <span class='comment'># dashed line
|
480
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Loss Limit</span><span class='tstring_end'>"</span></span>
|
481
|
+
<span class='kw'>end</span>
|
482
|
+
<span class='kw'>end</span>
|
483
|
+
|
484
|
+
<span class='comment'># Add markers for call and put strikes
|
485
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_strike_call_buy'>strike_call_buy</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
|
486
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_strike_call_buy'>strike_call_buy</span><span class='comma'>,</span> <span class='id identifier rubyid_zero_call_buy'>zero_call_buy</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
487
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>points</span><span class='tstring_end'>"</span></span>
|
488
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointtype'>pointtype</span> <span class='op'>=</span> <span class='int'>9</span> <span class='comment'># right arrow
|
489
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointsize'>pointsize</span> <span class='op'>=</span> <span class='int'>2</span>
|
490
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>blue</span><span class='tstring_end'>"</span></span>
|
491
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Long Calls</span><span class='tstring_end'>"</span></span>
|
492
|
+
<span class='kw'>end</span>
|
493
|
+
<span class='kw'>end</span>
|
494
|
+
|
495
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_strike_put_buy'>strike_put_buy</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
|
496
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_strike_put_buy'>strike_put_buy</span><span class='comma'>,</span> <span class='id identifier rubyid_zero_put_buy'>zero_put_buy</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
497
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>points</span><span class='tstring_end'>"</span></span>
|
498
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointtype'>pointtype</span> <span class='op'>=</span> <span class='int'>8</span> <span class='comment'># left arrow
|
499
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointsize'>pointsize</span> <span class='op'>=</span> <span class='int'>2</span>
|
500
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>blue</span><span class='tstring_end'>"</span></span>
|
501
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Long Puts</span><span class='tstring_end'>"</span></span>
|
502
|
+
<span class='kw'>end</span>
|
503
|
+
<span class='kw'>end</span>
|
504
|
+
|
505
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_strike_call_sell'>strike_call_sell</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
|
506
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_strike_call_sell'>strike_call_sell</span><span class='comma'>,</span> <span class='id identifier rubyid_zero_call_sell'>zero_call_sell</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
507
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>points</span><span class='tstring_end'>"</span></span>
|
508
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointtype'>pointtype</span> <span class='op'>=</span> <span class='int'>9</span> <span class='comment'># right arrow
|
509
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointsize'>pointsize</span> <span class='op'>=</span> <span class='int'>2</span>
|
510
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>red</span><span class='tstring_end'>"</span></span>
|
511
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Short Calls</span><span class='tstring_end'>"</span></span>
|
512
|
+
<span class='kw'>end</span>
|
513
|
+
<span class='kw'>end</span>
|
514
|
+
|
515
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_strike_put_sell'>strike_put_sell</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
|
516
|
+
<span class='id identifier rubyid_plot'>plot</span><span class='period'>.</span><span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='const'>Gnuplot</span><span class='op'>::</span><span class='const'>DataSet</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_strike_put_sell'>strike_put_sell</span><span class='comma'>,</span> <span class='id identifier rubyid_zero_put_sell'>zero_put_sell</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ds'>ds</span><span class='op'>|</span>
|
517
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>points</span><span class='tstring_end'>"</span></span>
|
518
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointtype'>pointtype</span> <span class='op'>=</span> <span class='int'>8</span> <span class='comment'># left arrow
|
519
|
+
</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_pointsize'>pointsize</span> <span class='op'>=</span> <span class='int'>2</span>
|
520
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_linecolor'>linecolor</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>red</span><span class='tstring_end'>"</span></span>
|
521
|
+
<span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Short Puts</span><span class='tstring_end'>"</span></span>
|
522
|
+
<span class='kw'>end</span>
|
523
|
+
<span class='kw'>end</span>
|
524
|
+
<span class='kw'>end</span>
|
525
|
+
<span class='kw'>end</span>
|
526
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
527
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Warning: Could not create plot. </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
528
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>To use plotting functionality, please ensure gnuplot is installed.</span><span class='tstring_end'>"</span></span>
|
529
|
+
<span class='kw'>end</span>
|
530
|
+
<span class='kw'>end</span></pre>
|
531
|
+
</td>
|
532
|
+
</tr>
|
533
|
+
</table>
|
534
|
+
</div>
|
535
|
+
|
536
|
+
</div>
|
537
|
+
|
538
|
+
</div>
|
539
|
+
|
540
|
+
<div id="footer">
|
541
|
+
Generated on Sun Apr 27 16:09:34 2025 by
|
542
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
543
|
+
0.9.37 (ruby-3.3.3).
|
544
|
+
</div>
|
545
|
+
|
546
|
+
</div>
|
547
|
+
</body>
|
548
|
+
</html>
|