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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +139 -0
  4. data/.yard/hooks/before_generate.rb +7 -0
  5. data/.yardopts +11 -0
  6. data/Gemfile +26 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +180 -0
  9. data/Rakefile +44 -0
  10. data/docs/OptionLab/BinomialTree.html +1271 -0
  11. data/docs/OptionLab/BjerksundStensland.html +2022 -0
  12. data/docs/OptionLab/BlackScholes.html +2388 -0
  13. data/docs/OptionLab/Engine.html +1716 -0
  14. data/docs/OptionLab/Models/AmericanModelInputs.html +937 -0
  15. data/docs/OptionLab/Models/ArrayInputs.html +463 -0
  16. data/docs/OptionLab/Models/BaseModel.html +223 -0
  17. data/docs/OptionLab/Models/BinomialModelInputs.html +1161 -0
  18. data/docs/OptionLab/Models/BlackScholesInfo.html +967 -0
  19. data/docs/OptionLab/Models/BlackScholesModelInputs.html +851 -0
  20. data/docs/OptionLab/Models/ClosedPosition.html +445 -0
  21. data/docs/OptionLab/Models/EngineData.html +2523 -0
  22. data/docs/OptionLab/Models/EngineDataResults.html +435 -0
  23. data/docs/OptionLab/Models/Inputs.html +2241 -0
  24. data/docs/OptionLab/Models/LaplaceInputs.html +777 -0
  25. data/docs/OptionLab/Models/Option.html +736 -0
  26. data/docs/OptionLab/Models/Outputs.html +1753 -0
  27. data/docs/OptionLab/Models/PoPOutputs.html +645 -0
  28. data/docs/OptionLab/Models/PricingResult.html +848 -0
  29. data/docs/OptionLab/Models/Stock.html +583 -0
  30. data/docs/OptionLab/Models/TreeVisualization.html +688 -0
  31. data/docs/OptionLab/Models.html +251 -0
  32. data/docs/OptionLab/Plotting.html +548 -0
  33. data/docs/OptionLab/Support.html +2884 -0
  34. data/docs/OptionLab/Utils.html +619 -0
  35. data/docs/OptionLab.html +133 -0
  36. data/docs/_index.html +376 -0
  37. data/docs/class_list.html +54 -0
  38. data/docs/css/common.css +1 -0
  39. data/docs/css/full_list.css +58 -0
  40. data/docs/css/style.css +503 -0
  41. data/docs/file.LICENSE.html +70 -0
  42. data/docs/file.README.html +263 -0
  43. data/docs/file_list.html +64 -0
  44. data/docs/frames.html +22 -0
  45. data/docs/index.html +263 -0
  46. data/docs/js/app.js +344 -0
  47. data/docs/js/full_list.js +242 -0
  48. data/docs/js/jquery.js +4 -0
  49. data/docs/method_list.html +1974 -0
  50. data/docs/top-level-namespace.html +110 -0
  51. data/examples/american_options.rb +163 -0
  52. data/examples/covered_call.rb +76 -0
  53. data/lib/option_lab/binomial_tree.rb +238 -0
  54. data/lib/option_lab/bjerksund_stensland.rb +276 -0
  55. data/lib/option_lab/black_scholes.rb +323 -0
  56. data/lib/option_lab/engine.rb +492 -0
  57. data/lib/option_lab/models.rb +768 -0
  58. data/lib/option_lab/plotting.rb +182 -0
  59. data/lib/option_lab/support.rb +471 -0
  60. data/lib/option_lab/utils.rb +107 -0
  61. data/lib/option_lab/version.rb +5 -0
  62. data/lib/option_lab.rb +134 -0
  63. data/option_lab.gemspec +43 -0
  64. 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
+ &mdash; 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> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../OptionLab.html" title="OptionLab (module)">OptionLab</a></span></span>
41
+ &raquo;
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) &#x21d2; 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) &#x21d2; <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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>Before plotting the profit/loss profile diagram, you must run a calculation!</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Profit/Loss diagram:\n--------------------\n</span><span class='tstring_end'>&quot;</span></span>
381
+ <span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>The vertical green dashed line corresponds to the position </span><span class='tstring_end'>&quot;</span></span>
382
+ <span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>of the stock&#39;s spot price. The right and left arrow </span><span class='tstring_end'>&quot;</span></span>
383
+ <span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>markers indicate the strike prices of calls and puts, </span><span class='tstring_end'>&quot;</span></span>
384
+ <span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>respectively, with blue representing long and red representing </span><span class='tstring_end'>&quot;</span></span>
385
+ <span class='id identifier rubyid_comment'>comment</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>short positions.</span><span class='tstring_end'>&quot;</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'>&#39;</span><span class='tstring_content'>call</span><span class='tstring_end'>&#39;</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'>&#39;</span><span class='tstring_content'>buy</span><span class='tstring_end'>&#39;</span></span>
394
+ <span class='id identifier rubyid_strike_call_buy'>strike_call_buy</span> <span class='op'>&lt;&lt;</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'>&lt;&lt;</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'>&#39;</span><span class='tstring_content'>sell</span><span class='tstring_end'>&#39;</span></span>
397
+ <span class='id identifier rubyid_strike_call_sell'>strike_call_sell</span> <span class='op'>&lt;&lt;</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'>&lt;&lt;</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'>&#39;</span><span class='tstring_content'>put</span><span class='tstring_end'>&#39;</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'>&#39;</span><span class='tstring_content'>buy</span><span class='tstring_end'>&#39;</span></span>
402
+ <span class='id identifier rubyid_strike_put_buy'>strike_put_buy</span> <span class='op'>&lt;&lt;</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'>&lt;&lt;</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'>&#39;</span><span class='tstring_content'>sell</span><span class='tstring_end'>&#39;</span></span>
405
+ <span class='id identifier rubyid_strike_put_sell'>strike_put_sell</span> <span class='op'>&lt;&lt;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'> The blue dashed line represents the profit target level.</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'> The red dashed line represents the loss limit level.</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Options Strategy Profit/Loss</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Stock Price</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Profit/Loss</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>lines</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>violet</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Break-even</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>lines</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>black</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Strategy P/L</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</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'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</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'>&quot;</span><span class='tstring_content'>lines</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>green</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Current Price</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>lines</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>blue</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Profit Target</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>lines</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>red</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Loss Limit</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>points</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>blue</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Long Calls</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>points</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>blue</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Long Puts</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>points</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>red</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Short Calls</span><span class='tstring_end'>&quot;</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'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>points</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>red</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Short Puts</span><span class='tstring_end'>&quot;</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'>=&gt;</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'>&quot;</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'>&quot;</span></span>
528
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>To use plotting functionality, please ensure gnuplot is installed.</span><span class='tstring_end'>&quot;</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>