tarf_monte_carlo 3.28 → 3.29

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: 61612dbfd673a328672091d8e64ec0ebd5251f0e1d0904938e4fcfa1e083ff84
4
- data.tar.gz: 22c0461dc088058378702be27ad055f600f97eac6c5392008d9c5783ff15cea0
3
+ metadata.gz: f522654ff1db977c9473f222c2759823b5abfabec305a05f46808509a089e997
4
+ data.tar.gz: 9057078c47fe076d38ba905d9bef3e857c8afff6962c3cbdc3afb73b88f41807
5
5
  SHA512:
6
- metadata.gz: 0f3224cfb1535727083cb0223bf06eca402e43d50f4bd6eb3adccc7cf44cd47f5ddf16cf8882b57ca7ae564014f805cb8a3c5e3137edd967862e5b5653d9e0dd
7
- data.tar.gz: 77e3ed4c219a3a797f1f03b8fa663eea5bb954672824a5154610fe1012fe25c1c0a9981881b272e678ae1579ea32ced99566539bb5f016255d1b06f8815d1a2e
6
+ metadata.gz: dbe7c24227ce0280a09b0d055e1158f2585b6b46307065fa6d460ab8ed53b8a2423c398e2dd5ae6273249a0bfd10b0beb8abcedf4337597ffa2097940ed0efbd
7
+ data.tar.gz: 5f59b811c836dfb9b13cbafc7264651aad54a03a7420042543549e25548de72574a82274b54e1951d9dd9d3b763af0437ef95d35ff6b6fd29161ce355280fe2f
@@ -90,11 +90,11 @@ double european_payoff(double strike, double spot, int cp_sign, int dir_sign, do
90
90
  }
91
91
 
92
92
  double get_equivalent_notional(int conversion_sign, double notional, float rate){
93
- return (conversion_sign == 1) ? (notional / rate) : notional
93
+ return (conversion_sign == 1) ? (notional / rate) : notional;
94
94
  }
95
95
 
96
96
  double get_equivalent_rebate(int conversion_sign, double rebate, float rate){
97
- return (conversion_sign == 1) ? (rebate * rate) : rebate
97
+ return (conversion_sign == 1) ? (rebate * rate) : rebate;
98
98
  }
99
99
 
100
100
  // main method for running monte carlo simulation from sidekiq worker/outside method
@@ -122,6 +122,8 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
122
122
  int dir_sign = NUM2INT( rb_hash_aref(MCInputs, rb_str_new2("direction_sign")) );
123
123
  int dir2_sign = NUM2INT( rb_hash_aref(MCInputs, rb_str_new2("direction2_sign")) );
124
124
  int cp_sign = NUM2INT( rb_hash_aref(MCInputs, rb_str_new2("callput_sign")) );
125
+ int conversion_sign = NUM2INT( rb_hash_aref(MCInputs, rb_str_new2("conversion_sign")) );
126
+ int rebate_conversion_sign = NUM2INT( rb_hash_aref(MCInputs, rb_str_new2("rebate_conversion_sign")) );
125
127
 
126
128
  // assign leg specific attributes
127
129
  double *pvs_pos = ( double* ) malloc( SCount * sizeof(double) );
@@ -392,25 +394,25 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
392
394
  sim_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg) ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
393
395
  }
394
396
  else{
395
- sim_pos[NL-1] = get_equivalent_rebate(conversion_sign, ( *( Rebate_array + 0 ) ), sim[NL-1]);
397
+ sim_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim[NL-1]);
396
398
  }
397
399
  if(knockedLeg_dash >= 0 ){
398
400
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + knockedLeg_dash ) ), sim_dash[NL-1]);
399
401
  sim_dash_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg_dash) ) ), sim_dash[NL-1], cp_sign, dir_sign, equivalent_notional);
400
402
  }
401
403
  else{
402
- sim_dash_pos[NL-1] = get_equivalent_rebate(conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1]);
404
+ sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1]);
403
405
  }
404
406
  } else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
405
407
  if(knockedLeg >= 0){
406
- sim_pos[knockedLeg] = get_equivalent_rebate(conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg]);
408
+ sim_pos[knockedLeg] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg]);
407
409
  }
408
410
  else{
409
411
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + 0 ) ), sim[NL-1]);
410
412
  sim_pos[NL-1] = european_payoff(( *( Xs_array + 0 ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
411
413
  }
412
414
  if(knockedLeg_dash >= 0 ){
413
- sim_dash_pos[knockedLeg_dash] = get_equivalent_rebate(conversion_sign, ( *( Rebate_array + knockedLeg_dash ) ), sim[knockedLeg_dash]);
415
+ sim_dash_pos[knockedLeg_dash] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg_dash ) ), sim[knockedLeg_dash]);
414
416
  }
415
417
  else{
416
418
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + 0 ) ), sim_dash[NL-1]);
@@ -3,5 +3,5 @@
3
3
  # gem yank tarf_monte_carlo -v 2.3
4
4
 
5
5
  module TarfMonteCarlo
6
- VERSION = "3.28"
6
+ VERSION = "3.29"
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.28'
4
+ version: '3.29'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vivek Routh