tarf_monte_carlo 3.30 → 3.31
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 +4 -4
- data/ext/tarf_monte_carlo/tarf_monte_carlo.c +13 -2
- data/lib/tarf_monte_carlo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ffba748a882648f94602365c6fe89ba13ad4012e4daa54ce87e836c757c2df7
|
4
|
+
data.tar.gz: 56cf966863ed9d42802d78634b411aef7039eab87a74420d33a3dc429e5c1fa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e15a1be8f1f8fcc330201ccbfd814866da27b0010428de8e8f4b449ca74b4879d62947309aedabecb86432657f5a1729f52b737518b2de147e967932beedbd96
|
7
|
+
data.tar.gz: 6d3a80d0819af9cacb1f4a15beb51a3e6edf3a65f38fdb50a0b6c03d0992d73f7046b126c7cf9e6a7febb1e1430fc4fbafba04590b629c02d21e51debcd0d7d7
|
@@ -193,6 +193,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
193
193
|
// first create a 1-D array of pointers, and then, for each array entry, create another 1-D array.
|
194
194
|
//
|
195
195
|
double **metrics;
|
196
|
+
double data[4][NL];
|
196
197
|
metrics = ( double** ) malloc( DATAPOINTS * sizeof(double*) );
|
197
198
|
for( metric = 0; metric < DATAPOINTS; metric++ ) {
|
198
199
|
metrics[metric] = ( double* ) malloc( NL * sizeof(double) );
|
@@ -216,6 +217,10 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
216
217
|
sim_dash[leg] = 0.0;
|
217
218
|
sim_dash_pos[leg] = 0.0;
|
218
219
|
sim_dash_neg[leg] = 0.0;
|
220
|
+
data[0][leg] = 0.0;
|
221
|
+
data[1][leg] = 0.0;
|
222
|
+
data[2][leg] = 0.0;
|
223
|
+
data[3][leg] = 0.0;
|
219
224
|
}
|
220
225
|
|
221
226
|
int knockedLeg = -1;
|
@@ -369,6 +374,8 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
369
374
|
sim[leg] = profit_loss;
|
370
375
|
sim_dash[leg] = profit_loss_dash;
|
371
376
|
|
377
|
+
data[0][leg] = sim[leg];
|
378
|
+
data[1][leg] = sim_dash[leg];
|
372
379
|
//
|
373
380
|
// Store spot and spot dash
|
374
381
|
//
|
@@ -385,6 +392,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
385
392
|
Spot_dash = S;
|
386
393
|
}
|
387
394
|
}
|
395
|
+
|
388
396
|
// legs loop end
|
389
397
|
// start from the Knock value
|
390
398
|
double ko_so_far = K, ko_so_far_dash = K;
|
@@ -403,6 +411,9 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
403
411
|
else{
|
404
412
|
sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1]);
|
405
413
|
}
|
414
|
+
|
415
|
+
data[2][NL-1] = sim_pos[NL-1];
|
416
|
+
data[3][NL-1] = sim_dash_pos[NL-1];
|
406
417
|
} else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
407
418
|
if(knockedLeg >= 0){
|
408
419
|
sim_pos[knockedLeg] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg]);
|
@@ -584,11 +595,11 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
584
595
|
//
|
585
596
|
// rb_p(rb_str_new2("Converting metrics"));
|
586
597
|
VALUE final_metrics = rb_ary_new();
|
587
|
-
for(metric = 0; metric <
|
598
|
+
for(metric = 0; metric < 5; metric++) {
|
588
599
|
VALUE leg_metrics = rb_ary_new();
|
589
600
|
|
590
601
|
for(leg = 0; leg < NL; leg++) {
|
591
|
-
rb_ary_push( leg_metrics, DBL2NUM(
|
602
|
+
rb_ary_push( leg_metrics, DBL2NUM( data[metric][leg] ) );
|
592
603
|
}
|
593
604
|
|
594
605
|
rb_ary_push(final_metrics, leg_metrics);
|