Skip to content

Commit 37cab3f

Browse files
committed
Longstaff-Schwartz: Utilise assert_approx_equal for unit tests + lower tolerance
1 parent d66a22c commit 37cab3f

1 file changed

Lines changed: 30 additions & 16 deletions

File tree

crates/RustQuant_instruments/src/options/longstaff_schwartz.rs

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,9 @@ impl LongstaffScwhartzPricer {
232232
mod tests_longstaff_schwartz_pricer_at_the_money {
233233
use super::*;
234234
use time::macros::date;
235+
use RustQuant_utils::assert_approx_equal;
235236

236-
const TOLERANCE: f64 = 0.25;
237+
const TOLERANCE: f64 = 0.125;
237238
const ATM_CALL_EXPECTED_PRICE: f64 = 0.680;
238239
const ATM_PUT_EXPECTED_PRICE: f64 = 0.243;
239240

@@ -252,8 +253,10 @@ mod tests_longstaff_schwartz_pricer_at_the_money {
252253
None
253254
);
254255

255-
assert!(
256-
(longstaff_schwartz_pricer.generate_price() - ATM_CALL_EXPECTED_PRICE).abs() < TOLERANCE
256+
assert_approx_equal!(
257+
longstaff_schwartz_pricer.generate_price(),
258+
ATM_CALL_EXPECTED_PRICE,
259+
TOLERANCE
257260
);
258261
}
259262

@@ -272,8 +275,10 @@ mod tests_longstaff_schwartz_pricer_at_the_money {
272275
None
273276
);
274277

275-
assert!(
276-
(longstaff_schwartz_pricer.generate_price() - ATM_PUT_EXPECTED_PRICE).abs() < TOLERANCE
278+
assert_approx_equal!(
279+
longstaff_schwartz_pricer.generate_price(),
280+
ATM_PUT_EXPECTED_PRICE,
281+
TOLERANCE
277282
);
278283
}
279284
}
@@ -286,8 +291,9 @@ mod tests_longstaff_schwartz_pricer_at_the_money {
286291
mod tests_longstaff_schwartz_pricer_in_the_money {
287292
use super::*;
288293
use time::macros::date;
294+
use RustQuant_utils::assert_approx_equal;
289295

290-
const TOLERANCE: f64 = 0.25;
296+
const TOLERANCE: f64 = 0.125;
291297
const ITM_CALL_EXPECTED_PRICE: f64 = 5.4889;
292298
const ITM_PUT_EXPECTED_PRICE: f64 = 5.0000;
293299

@@ -305,9 +311,10 @@ mod tests_longstaff_schwartz_pricer_in_the_money {
305311
500,
306312
None
307313
);
308-
309-
assert!(
310-
(longstaff_schwartz_pricer.generate_price() - ITM_CALL_EXPECTED_PRICE).abs() < TOLERANCE
314+
assert_approx_equal!(
315+
longstaff_schwartz_pricer.generate_price(),
316+
ITM_CALL_EXPECTED_PRICE,
317+
TOLERANCE
311318
);
312319
}
313320

@@ -326,8 +333,10 @@ mod tests_longstaff_schwartz_pricer_in_the_money {
326333
None
327334
);
328335

329-
assert!(
330-
(longstaff_schwartz_pricer.generate_price() - ITM_PUT_EXPECTED_PRICE).abs() < TOLERANCE
336+
assert_approx_equal!(
337+
longstaff_schwartz_pricer.generate_price(),
338+
ITM_PUT_EXPECTED_PRICE,
339+
TOLERANCE
331340
);
332341
}
333342
}
@@ -340,8 +349,9 @@ mod tests_longstaff_schwartz_pricer_in_the_money {
340349
mod tests_longstaff_schwartz_pricer_out_the_money {
341350
use super::*;
342351
use time::macros::date;
352+
use RustQuant_utils::assert_approx_equal;
343353

344-
const TOLERANCE: f64 = 0.25;
354+
const TOLERANCE: f64 = 0.125;
345355
const OTM_CALL_EXPECTED_PRICE: f64 = 0.0000;
346356
const OTM_PUT_EXPECTED_PRICE: f64 = 0.0000;
347357

@@ -360,8 +370,10 @@ mod tests_longstaff_schwartz_pricer_out_the_money {
360370
None
361371
);
362372

363-
assert!(
364-
(longstaff_schwartz_pricer.generate_price() - OTM_CALL_EXPECTED_PRICE).abs() < TOLERANCE
373+
assert_approx_equal!(
374+
longstaff_schwartz_pricer.generate_price(),
375+
OTM_CALL_EXPECTED_PRICE,
376+
TOLERANCE
365377
);
366378
}
367379

@@ -380,8 +392,10 @@ mod tests_longstaff_schwartz_pricer_out_the_money {
380392
None
381393
);
382394

383-
assert!(
384-
(longstaff_schwartz_pricer.generate_price() - OTM_PUT_EXPECTED_PRICE).abs() < TOLERANCE
395+
assert_approx_equal!(
396+
longstaff_schwartz_pricer.generate_price(),
397+
OTM_PUT_EXPECTED_PRICE,
398+
TOLERANCE
385399
);
386400
}
387401
}

0 commit comments

Comments
 (0)