tarf_monte_carlo 3.36 → 3.37

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: 63dd616c6846ce9dcf226070ebd3112f3b8ecc6fe757c77bd0a7a61bb99648ec
4
- data.tar.gz: bae66094b0d84c5b5dc47cb58f7c06aac3321a66991eee8aa267b76cfd4afbb8
3
+ metadata.gz: 4cde374a7687b72a44d4ac3227cce1e4145a4a8079e9196003e92da327b09ca9
4
+ data.tar.gz: '058135bcdcaec69d1f34532412061862516409723c44a7d4e83afa52e399cd5a'
5
5
  SHA512:
6
- metadata.gz: 1f69e4376ecd39f189abc6cca12d962a002da73d25a1fe8524a68725726bb878d7c186885e8f779b7a8bc749b2182965887ade63111eaece2cdbfecc5d13c013
7
- data.tar.gz: 9a98f27485a6d420293e99c1770611374d7bff06bb274df511099afcd8eeb1f2f0ccf9891a6cb52531cc4d62640a6516d46fb63959d2023b50c628c65c6d148a
6
+ metadata.gz: bd79246265df4efc0d2474b69233c53a47a57e65073bc0a27ac9af8d4d5f6845b8189de8dd0f89211f26667001c0999f0a42ba7725a67eed7706bdbd4ae58272
7
+ data.tar.gz: 5412be0cec43e5f56b4c4be725bf407c093a312f0afbc1f5debc66973f9baed47b305f32447e90b899dedf2d17e349755c6cdaba56559dfc4af5e8abb34ffd7b
@@ -58,7 +58,7 @@ VALUE cTarfMonteCarlo = Qnil;
58
58
  void Init_tarf_monte_carlo();
59
59
  double european_payoff(double, double, int, int, double);
60
60
  double get_equivalent_notional(int, double, float);
61
- double get_equivalent_rebate(int, double, float);
61
+ double get_equivalent_rebate(int, double, float, int);
62
62
 
63
63
  // Prototype for our methods - methods are prefixed by 'method_' here
64
64
  VALUE method_box_muller( VALUE );
@@ -93,9 +93,9 @@ double get_equivalent_notional(int conversion_sign, double notional, float rate)
93
93
  return (conversion_sign == 1) ? (notional / rate) : notional;
94
94
  }
95
95
 
96
- double get_equivalent_rebate(int conversion_sign, double rebate, float rate){
96
+ double get_equivalent_rebate(int conversion_sign, double rebate, float rate, int dir_sign){
97
97
  double total = (conversion_sign == 1) ? (rebate * rate) : rebate;
98
- return (-1 * total);
98
+ return (-1 * dir_sign * total);
99
99
  }
100
100
 
101
101
  // main method for running monte carlo simulation from sidekiq worker/outside method
@@ -395,25 +395,25 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
395
395
  sim_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg) ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
396
396
  }
397
397
  else{
398
- sim_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim[NL-1]);
398
+ sim_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim[NL-1], dir_sign);
399
399
  }
400
400
  if(knockedLeg_dash >= 0 ){
401
401
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + knockedLeg_dash ) ), sim_dash[NL-1]);
402
402
  sim_dash_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg_dash) ) ), sim_dash[NL-1], cp_sign, dir_sign, equivalent_notional);
403
403
  }
404
404
  else{
405
- sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1]);
405
+ sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1], dir_sign);
406
406
  }
407
407
  } else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
408
408
  if(knockedLeg >= 0){
409
- sim_pos[knockedLeg] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg]);
409
+ sim_pos[knockedLeg] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg], dir_sign);
410
410
  }
411
411
  else{
412
412
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + 0 ) ), sim[NL-1]);
413
413
  sim_pos[NL-1] = european_payoff(( *( Xs_array + 0 ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
414
414
  }
415
415
  if(knockedLeg_dash >= 0 ){
416
- sim_dash_pos[knockedLeg_dash] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg_dash ) ), sim[knockedLeg_dash]);
416
+ sim_dash_pos[knockedLeg_dash] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg_dash ) ), sim[knockedLeg_dash], dir_sign);
417
417
  }
418
418
  else{
419
419
  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.36"
6
+ VERSION = "3.37"
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.36'
4
+ version: '3.37'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vivek Routh