tarf_monte_carlo 3.28 → 3.29

Sign up to get free protection for your applications and to get access to all the features.
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