tarf_monte_carlo 3.32 → 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: 2fd5c07e07e1a0fa016c6f8137c1e2b964f031b7210dca898e4d1006c0781ff4
4
- data.tar.gz: 95210edd7247efc5785fec37c5c13cbe64f86a7509570382f19234174a021e4c
3
+ metadata.gz: 4cde374a7687b72a44d4ac3227cce1e4145a4a8079e9196003e92da327b09ca9
4
+ data.tar.gz: '058135bcdcaec69d1f34532412061862516409723c44a7d4e83afa52e399cd5a'
5
5
  SHA512:
6
- metadata.gz: b9da6d59b8810e6ff75ca95a02c66f59081dfc368bca41de0b809a6c14468b5c1935e07bcb3ba8108766b423177b43d454788fd62c44566747c2f2122a412626
7
- data.tar.gz: a954cdf5255f86459bae5c6c171b9232dfce4ec4fa13e1f1ef8d5ebfe18beac0defbcbb3ba6d33fbe05af28c889b28031139b60d5e2cac1fd4a468099c387d77
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,8 +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){
97
- return (conversion_sign == 1) ? (rebate * rate) : rebate;
96
+ double get_equivalent_rebate(int conversion_sign, double rebate, float rate, int dir_sign){
97
+ double total = (conversion_sign == 1) ? (rebate * rate) : rebate;
98
+ return (-1 * dir_sign * total);
98
99
  }
99
100
 
100
101
  // main method for running monte carlo simulation from sidekiq worker/outside method
@@ -394,25 +395,25 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
394
395
  sim_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg) ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
395
396
  }
396
397
  else{
397
- 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);
398
399
  }
399
400
  if(knockedLeg_dash >= 0 ){
400
401
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + knockedLeg_dash ) ), sim_dash[NL-1]);
401
402
  sim_dash_pos[NL-1] = european_payoff(( *( Xs_array + (knockedLeg_dash) ) ), sim_dash[NL-1], cp_sign, dir_sign, equivalent_notional);
402
403
  }
403
404
  else{
404
- 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);
405
406
  }
406
407
  } else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
407
408
  if(knockedLeg >= 0){
408
- 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);
409
410
  }
410
411
  else{
411
412
  double equivalent_notional = get_equivalent_notional(conversion_sign, ( *( Ns_array + 0 ) ), sim[NL-1]);
412
413
  sim_pos[NL-1] = european_payoff(( *( Xs_array + 0 ) ), sim[NL-1], cp_sign, dir_sign, equivalent_notional);
413
414
  }
414
415
  if(knockedLeg_dash >= 0 ){
415
- 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);
416
417
  }
417
418
  else{
418
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.32"
6
+ VERSION = "3.37"
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tarf_monte_carlo
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.32'
4
+ version: '3.37'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vivek Routh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-03 00:00:00.000000000 Z
11
+ date: 2020-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler