tarf_monte_carlo 3.42 → 3.47

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 401dcffa11be28cb765633d86b3b3351af887311364893a4b4e98bcda42f1f2b
4
- data.tar.gz: 8aa5d4b647a4ead25e93d8ec6d5d77f6927d767b368915c367a1557cfcd0d578
3
+ metadata.gz: a69379430c97fbbf86b791e49a7564c7504a21fa73f3ea44ede3ec1d3a876bc6
4
+ data.tar.gz: 3fcd6ef1020d223148c3279c80694c007373f933f434ee48258a62938188c130
5
5
  SHA512:
6
- metadata.gz: a955c81445337676aa5c291fed82e34fa74b37a999926158b9cd09bb5c6ae14888f483c43dcafc33b04d43f4fc3c016374f81c19ac39aa71933c6746196a0978
7
- data.tar.gz: 73b9c4e40243dc65b8f711d515a1ab6196fa4c17991f12d72543cb8918b990e83844f4679e55fb28ebf3bac6857ff0e9cbdd2cf5ef55f4fdeb9dc4fa1b9135f9
6
+ metadata.gz: 55528c53ec418a966b6e8e405ba177038e097993ac5a532bb99c4bfbc8d32048eea25ca8893749207c0ccb6e950ff0fdff6a573e99ccd71a5d627e40b3204a87
7
+ data.tar.gz: fd79143e72702699469613433aeffcc7fe75fa001c69a6f759582bb72059ba8847862eea11357dc365d73acf06e34a0362d3e09518ac08a865cc0480da13e3ed
@@ -45,6 +45,7 @@
45
45
  #define FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE 14
46
46
 
47
47
  #define DATAPOINTS 200 // data for plotting
48
+ #define BARRIER_DP 4 // data for plotting
48
49
  #define INTERVAL 50
49
50
  #define SIM_LIMIT 196 // 196 + 4 = 200 simulations nedded
50
51
 
@@ -195,8 +196,8 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
195
196
  //
196
197
  double **metrics;
197
198
  if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
198
- metrics = ( double** ) malloc( 3 * sizeof(double*) );
199
- for( metric = 0; metric < 3; metric++ ) {
199
+ metrics = ( double** ) malloc( BARRIER_DP * sizeof(double*) );
200
+ for( metric = 0; metric < BARRIER_DP; metric++ ) {
200
201
  metrics[metric] = ( double* ) malloc( DATAPOINTS * sizeof(double) );
201
202
  for(leg = 0; leg < DATAPOINTS; leg++) {
202
203
  metrics[metric][leg] = 0.0;
@@ -418,10 +419,12 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
418
419
  sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1], dir_sign);
419
420
  }
420
421
  if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
421
- metrics[0][point_pos] = sim[NL-1];
422
- metrics[1][point_pos] = (knockedLeg >= 0) ? ( *( Xs_array + (knockedLeg) ) ) : 0;
422
+ metrics[0][point_pos] = sim[NL-1];
423
+ metrics[1][point_pos] = (knockedLeg >= 0) ? ( *( Xs_array + (knockedLeg) ) ) : 0;
424
+ metrics[3][point_pos] = knockedLeg;
423
425
  metrics[0][point_pos+1] = sim_dash[NL-1];
424
426
  metrics[1][point_pos+1] = (knockedLeg_dash >= 0) ? ( *( Xs_array + (knockedLeg_dash) ) ) : 0;
427
+ metrics[3][point_pos+1] = knockedLeg_dash;
425
428
  }
426
429
  } else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
427
430
  if(knockedLeg >= 0){
@@ -440,10 +443,12 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
440
443
  }
441
444
 
442
445
  if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
443
- metrics[0][point_pos] = (knockedLeg >= 0) ? sim[knockedLeg] : sim[NL-1];
444
- metrics[1][point_pos] = ( *( Xs_array + 0 ) );
446
+ metrics[0][point_pos] = (knockedLeg >= 0) ? sim[knockedLeg] : sim[NL-1];
447
+ metrics[1][point_pos] = ( *( Xs_array + 0 ) );
448
+ metrics[3][point_pos] = knockedLeg;
445
449
  metrics[0][point_pos+1] = (knockedLeg_dash >= 0) ? sim[knockedLeg_dash] : sim[NL-1];
446
450
  metrics[1][point_pos+1] = ( *( Xs_array + 0 ) );
451
+ metrics[3][point_pos+1] = knockedLeg_dash;
447
452
  }
448
453
 
449
454
  } else if( KType == ABSOLUTE || KType == PIVOT_ABSOLUTE || KType == COLLAR_ABSOLUTE || KType == DOUBLE_STRIKE_ABSOLUTE ) {
@@ -572,17 +577,20 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
572
577
  pvs_pos[sim_count + 1] = sim_dash_pos_sum;
573
578
  pvs_neg[sim_count] = sim_neg_sum;
574
579
  pvs_neg[sim_count + 1] = sim_dash_neg_sum;
575
- if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
576
- metrics[2][point_pos] = sim_pos_sum;
577
- metrics[2][point_pos+1] = sim_dash_pos_sum;
578
- point_pos += 2;
579
- }
580
580
 
581
- //
582
- // increment metric storing point by 4
583
- // Note: no limit condition here
584
- //
585
- if (!(KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE)){
581
+
582
+ if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
583
+ if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
584
+ metrics[2][point_pos] = sim_pos_sum;
585
+ metrics[2][point_pos+1] = sim_dash_pos_sum;
586
+ point_pos += 2;
587
+ }
588
+ }
589
+ else{
590
+ //
591
+ // increment metric storing point by 4
592
+ // Note: no limit condition here
593
+ //
586
594
  if( (sim_count + 2) % INTERVAL == 0 ) {
587
595
  // rb_p(rb_str_new2("T:"));
588
596
  // rb_p(INT2NUM(point_pos));
@@ -623,7 +631,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
623
631
  VALUE final_metrics = rb_ary_new();
624
632
 
625
633
  if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
626
- for(metric = 0; metric < 3; metric++) {
634
+ for(metric = 0; metric < BARRIER_DP; metric++) {
627
635
  VALUE leg_metrics = rb_ary_new();
628
636
 
629
637
  for(leg = 0; leg < DATAPOINTS; leg++) {
@@ -655,7 +663,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
655
663
  //
656
664
  // free your arrays from memory once you're done using them
657
665
  //
658
- int dp = (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE) ? 3 : DATAPOINTS;
666
+ int dp = (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE) ? BARRIER_DP : DATAPOINTS;
659
667
  for(metric = 0; metric < dp; metric++) {
660
668
  free( metrics[metric] );
661
669
  }
@@ -3,5 +3,5 @@
3
3
  # gem yank tarf_monte_carlo -v 2.3
4
4
 
5
5
  module TarfMonteCarlo
6
- VERSION = "3.42"
6
+ VERSION = "3.47"
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tarf_monte_carlo
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.42'
4
+ version: '3.47'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vivek Routh
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.0.6
143
+ rubygems_version: 3.0.8
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: Monte Carlo Simulation.