tarf_monte_carlo 3.30 → 3.31
Sign up to get free protection for your applications and to get access to all the features.
- 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);
|