tarf_monte_carlo 3.31 → 3.36
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 +4 -4
- data/ext/tarf_monte_carlo/tarf_monte_carlo.c +4 -14
- data/lib/tarf_monte_carlo/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 63dd616c6846ce9dcf226070ebd3112f3b8ecc6fe757c77bd0a7a61bb99648ec
|
|
4
|
+
data.tar.gz: bae66094b0d84c5b5dc47cb58f7c06aac3321a66991eee8aa267b76cfd4afbb8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1f69e4376ecd39f189abc6cca12d962a002da73d25a1fe8524a68725726bb878d7c186885e8f779b7a8bc749b2182965887ade63111eaece2cdbfecc5d13c013
|
|
7
|
+
data.tar.gz: 9a98f27485a6d420293e99c1770611374d7bff06bb274df511099afcd8eeb1f2f0ccf9891a6cb52531cc4d62640a6516d46fb63959d2023b50c628c65c6d148a
|
|
@@ -94,7 +94,8 @@ double get_equivalent_notional(int conversion_sign, double notional, float rate)
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
double get_equivalent_rebate(int conversion_sign, double rebate, float rate){
|
|
97
|
-
|
|
97
|
+
double total = (conversion_sign == 1) ? (rebate * rate) : rebate;
|
|
98
|
+
return (-1 * total);
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
// main method for running monte carlo simulation from sidekiq worker/outside method
|
|
@@ -193,7 +194,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
193
194
|
// first create a 1-D array of pointers, and then, for each array entry, create another 1-D array.
|
|
194
195
|
//
|
|
195
196
|
double **metrics;
|
|
196
|
-
double data[4][NL];
|
|
197
197
|
metrics = ( double** ) malloc( DATAPOINTS * sizeof(double*) );
|
|
198
198
|
for( metric = 0; metric < DATAPOINTS; metric++ ) {
|
|
199
199
|
metrics[metric] = ( double* ) malloc( NL * sizeof(double) );
|
|
@@ -217,10 +217,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
217
217
|
sim_dash[leg] = 0.0;
|
|
218
218
|
sim_dash_pos[leg] = 0.0;
|
|
219
219
|
sim_dash_neg[leg] = 0.0;
|
|
220
|
-
data[0][leg] = 0.0;
|
|
221
|
-
data[1][leg] = 0.0;
|
|
222
|
-
data[2][leg] = 0.0;
|
|
223
|
-
data[3][leg] = 0.0;
|
|
224
220
|
}
|
|
225
221
|
|
|
226
222
|
int knockedLeg = -1;
|
|
@@ -374,8 +370,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
374
370
|
sim[leg] = profit_loss;
|
|
375
371
|
sim_dash[leg] = profit_loss_dash;
|
|
376
372
|
|
|
377
|
-
data[0][leg] = sim[leg];
|
|
378
|
-
data[1][leg] = sim_dash[leg];
|
|
379
373
|
//
|
|
380
374
|
// Store spot and spot dash
|
|
381
375
|
//
|
|
@@ -392,7 +386,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
392
386
|
Spot_dash = S;
|
|
393
387
|
}
|
|
394
388
|
}
|
|
395
|
-
|
|
396
389
|
// legs loop end
|
|
397
390
|
// start from the Knock value
|
|
398
391
|
double ko_so_far = K, ko_so_far_dash = K;
|
|
@@ -411,9 +404,6 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
411
404
|
else{
|
|
412
405
|
sim_dash_pos[NL-1] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + 0 ) ), sim_dash[NL-1]);
|
|
413
406
|
}
|
|
414
|
-
|
|
415
|
-
data[2][NL-1] = sim_pos[NL-1];
|
|
416
|
-
data[3][NL-1] = sim_dash_pos[NL-1];
|
|
417
407
|
} else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
|
418
408
|
if(knockedLeg >= 0){
|
|
419
409
|
sim_pos[knockedLeg] = get_equivalent_rebate(rebate_conversion_sign, ( *( Rebate_array + knockedLeg ) ), sim[knockedLeg]);
|
|
@@ -595,11 +585,11 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
|
595
585
|
//
|
|
596
586
|
// rb_p(rb_str_new2("Converting metrics"));
|
|
597
587
|
VALUE final_metrics = rb_ary_new();
|
|
598
|
-
for(metric = 0; metric <
|
|
588
|
+
for(metric = 0; metric < DATAPOINTS; metric++) {
|
|
599
589
|
VALUE leg_metrics = rb_ary_new();
|
|
600
590
|
|
|
601
591
|
for(leg = 0; leg < NL; leg++) {
|
|
602
|
-
rb_ary_push( leg_metrics, DBL2NUM(
|
|
592
|
+
rb_ary_push( leg_metrics, DBL2NUM( metrics[metric][leg] ) );
|
|
603
593
|
}
|
|
604
594
|
|
|
605
595
|
rb_ary_push(final_metrics, leg_metrics);
|
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.
|
|
4
|
+
version: '3.36'
|
|
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-
|
|
11
|
+
date: 2020-10-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|