tarf_monte_carlo 3.69 → 3.70

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: a09821b8f49b2435d5faac86b35b58e9514de07dcf70200c99d9fe8c2a496cd1
4
- data.tar.gz: 6f19dd72e7a81ba7ed41f8e40e29a57965acf4e4b5ee78cb1fb2f931d5ae3270
3
+ metadata.gz: aac96f23c9d9e9a4c66983afc7b7bc7c6d1ae2b982686dad3d76f426ff413bae
4
+ data.tar.gz: e7a775cdac4703922ef797c42c9a56a3780b99004ca43747e390a2c778652dc9
5
5
  SHA512:
6
- metadata.gz: 3fb2c088e7cd659ebae7db0b3dadb0ddac9e58661ca70383df086ff550f1e7387f384c29f66f216d13b9e0b6f073770521db72815544ac1aa401ac84476a8b93
7
- data.tar.gz: c686b6a2e6a347ffcb62a293f7b1b39beafae1755b31ab4d9a540b1b8f0b9ce16a3b0ae00ec43447214b4247229d58ea15ae996ee5467205432be179f9fccdb9
6
+ metadata.gz: 403b211c16baa7a9645be1ab217fbbbb7c879c18e439739c9f0ccd773b8a22f8ca4fc2656381d2135af41e2cce92f56a67d23d7883127dad27bf5eb2a5715fd2
7
+ data.tar.gz: fe1f4c219ab019318e3d6675a971a87c9bd7f50e4e759cfe0b48e507bf1ee247bb13c8828a00f70185483aa9d637f59c233f28c46a495739bdedf27ed4d6346d
@@ -211,7 +211,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
211
211
  //
212
212
  // first create a 1-D array of pointers, and then, for each array entry, create another 1-D array.
213
213
  //
214
- double testing[SCount];
215
214
  double **metrics;
216
215
  if (barrier_variations(KType)){
217
216
  metrics = ( double** ) malloc( BARRIER_DP * sizeof(double*) );
@@ -235,10 +234,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
235
234
 
236
235
  // run simulations loop
237
236
  for( sim_count = 0; sim_count < SCount; sim_count += 2 ) {
238
-
239
- testing[sim_count] = -1;
240
- testing[sim_count+1] = -1;
241
-
242
237
  // initial spot rate for each iteration would be current spot rate
243
238
  double Spot = S, Spot_dash = S;
244
239
  double sim[NL], sim_pos[NL], sim_neg[NL], sim_dash[NL], sim_dash_pos[NL], sim_dash_neg[NL];
@@ -288,14 +283,14 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
288
283
  profit_loss_dash = Spot_dash;
289
284
 
290
285
  // Both Until KI & Exp
291
- if ( (((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign) <= 0) && (((*(Barrier2_array + leg) - *(Xs_array + leg)) * cp_sign) >= 0) ){
286
+ if ( ((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign <= 0) && ((*(Barrier2_array + leg) - *(Xs_array + leg)) * cp_sign >= 0) ){
292
287
  if ((knockedLeg == -1) && ((*(Barrier_array + leg) - Spot) * cp_sign >= 0)){ knockedLeg = leg; }
293
288
  if ((knockedLeg2 == -1) && ((*(Barrier2_array + leg) - Spot) * cp_sign <= 0)){ knockedLeg2 = leg; }
294
289
 
295
290
  if ((knockedLeg_dash == -1) && ((*(Barrier_array + leg) - Spot_dash) * cp_sign >= 0)){ knockedLeg_dash = leg; }
296
291
  if ((knockedLeg2_dash == -1) && ((*(Barrier2_array + leg) - Spot_dash) * cp_sign <= 0)){ knockedLeg2_dash = leg; }
297
292
  }
298
- else if( (((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign) >= 0) && (((*(Barrier2_array + leg) - *(Xs_array + leg)) * cp_sign) <= 0) ){
293
+ else if( ((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign >= 0) && ((*(Barrier2_array + leg) - *(Xs_array + leg)) * cp_sign <= 0) ){
299
294
  if ((knockedLeg == -1) && ((*(Barrier_array + leg) - Spot) * cp_sign <= 0)){ knockedLeg = leg; }
300
295
  if ((knockedLeg2 == -1) && ((*(Barrier2_array + leg) - Spot) * cp_sign >= 0)){ knockedLeg2 = leg; }
301
296
 
@@ -303,7 +298,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
303
298
  if ((knockedLeg2_dash == -1) && ((*(Barrier2_array + leg) - Spot_dash) * cp_sign >= 0)){ knockedLeg2_dash = leg; }
304
299
  }
305
300
  // Only Until Exp
306
- else if( (KType == FX_AMERICAN_BARRIER_KIKO_UNTIL_EXP) && (((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign) >= 0) && (((*(Barrier2_array + leg) - *(Barrier_array + leg)) * cp_sign) >= 0) ){
301
+ else if( (KType == FX_AMERICAN_BARRIER_KIKO_UNTIL_EXP) && ((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign >= 0) && ((*(Barrier2_array + leg) - *(Barrier_array + leg)) * cp_sign >= 0) ){
307
302
  if ((knockedLeg == -1) && ((*(Barrier_array + leg) - Spot) * cp_sign <= 0)){ knockedLeg = leg; }
308
303
  if ((knockedLeg2 == -1) && ((*(Barrier2_array + leg) - Spot) * cp_sign <= 0)){ knockedLeg2 = leg; }
309
304
 
@@ -311,7 +306,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
311
306
  if ((knockedLeg2_dash == -1) && ((*(Barrier2_array + leg) - Spot_dash) * cp_sign <= 0)){ knockedLeg2_dash = leg; }
312
307
  }
313
308
 
314
- else if( (KType == FX_AMERICAN_BARRIER_KIKO_UNTIL_EXP) && (((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign) <= 0) && (((*(Barrier2_array + leg) - *(Barrier_array + leg)) * cp_sign) <= 0) ){
309
+ else if( (KType == FX_AMERICAN_BARRIER_KIKO_UNTIL_EXP) && ((*(Barrier_array + leg) - *(Xs_array + leg)) * cp_sign <= 0) && ((*(Barrier2_array + leg) - *(Barrier_array + leg)) * cp_sign <= 0) ){
315
310
  if ((knockedLeg == -1) && ((*(Barrier_array + leg) - Spot) * cp_sign >= 0)){ knockedLeg = leg; }
316
311
  if ((knockedLeg2 == -1) && ((*(Barrier2_array + leg) - Spot) * cp_sign >= 0)){ knockedLeg2 = leg; }
317
312
 
@@ -581,9 +576,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
581
576
  metrics[3][point_pos+1] = knockedLeg_dash;
582
577
  }
583
578
  } else if(KType == FX_AMERICAN_BARRIER_KIKO_UNTIL_KI){
584
- testing[sim_count] = knockedLeg2;
585
- testing[sim_count + 1] = knockedLeg2_dash;
586
-
587
579
  if(knockedLeg >= 0 && knockedLeg2 >= 0){
588
580
  if(knockedLeg < knockedLeg2){
589
581
  double equivalent_notional = *( Ns_array + knockedLeg );
@@ -847,18 +839,12 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
847
839
  }
848
840
  }
849
841
 
850
- VALUE testing_data = rb_ary_new();
851
- for(metric = 0; metric < SCount; metric++) {
852
- rb_ary_push(testing_data, DBL2NUM(testing[metric]));
853
- }
854
-
855
842
  // rb_p(rb_str_new2("Generating output hash"));
856
843
  VALUE final_pvs = rb_hash_new();
857
844
  rb_hash_aset(final_pvs, rb_str_new2("positive_pv"), DBL2NUM( pvs_pos_sum / SCount ));
858
845
  rb_hash_aset(final_pvs, rb_str_new2("negative_pv"), DBL2NUM( pvs_neg_sum / SCount ));
859
846
  rb_hash_aset(final_pvs, rb_str_new2("total_pv"), DBL2NUM( (pvs_neg_sum + pvs_pos_sum) / SCount ));
860
847
  rb_hash_aset(final_pvs, rb_str_new2("metrics"), final_metrics);
861
- rb_hash_aset(final_pvs, rb_str_new2("testing"), testing_data);
862
848
 
863
849
  //
864
850
  // free your arrays from memory once you're done using them
@@ -3,5 +3,5 @@
3
3
  # gem yank tarf_monte_carlo -v 2.3
4
4
 
5
5
  module TarfMonteCarlo
6
- VERSION = "3.69"
6
+ VERSION = "3.70"
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.69'
4
+ version: '3.70'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vivek Routh