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