ftp_core/
lib.rs

1//! # FTP Core Library
2//!
3//! Bibliothèque principale pour les calculs FTP (Funds Transfer Pricing).
4//!
5//! ## Fonctionnalités principales
6//!
7//! - Calcul des taux FTP
8//! - Gestion des matrices de flux
9//! - Méthodes stock et flux
10//!
11//! ## Exemple d'utilisation
12//! test
13//! ```rust
14//! use ftp_core::FtpResult;
15//! use ndarray::array;
16//!
17//! let outstanding = array![[1000.0]];
18//! let profiles = array![[1.0, 0.5, 0.2]];
19//! let rates = array![[0.01, 0.02]];
20//!
21//! let mut ftp_result = FtpResult::new(outstanding, profiles, rates);
22//! ftp_result.compute("stock".to_string());
23//!
24//! ```
25
26use ndarray::array;
27// use pyo3::prelude::*;
28mod utils;
29
30mod holding_struct;
31
32pub mod common;
33mod method_flux;
34mod method_stock;
35
36pub use crate::holding_struct::FtpResult;
37//pub use crate::holding_struct::PyFtpResult;
38
39// use ndarray::Array2;
40//use numpy::{PyReadonlyArray2, PyArray2};
41/// Point d'entrée principal de l'application
42///
43/// # Exemples
44///
45/// ```
46/// use ftp_core::mainx;
47///
48/// // Exécute les calculs avec des données d'exemple
49/// mainx();
50/// ```
51pub fn mainx() {
52    let v_outstanding = array![[1000.0], [1200.0], [1350.0], [1250.0], [1380.0]];
53
54    let m_profile = array![
55        [1.00, 0.50, 0.20, 0.05, 0.00],
56        [1.00, 0.50, 0.20, 0.05, 0.00],
57        [1.00, 0.50, 0.20, 0.05, 0.00],
58        [1.00, 0.50, 0.20, 0.05, 0.00],
59        [1.00, 0.50, 0.20, 0.05, 0.00]
60    ];
61    let m_taux = array![
62        [0.01300, 0.01400, 0.01600, 0.01700],
63        [0.01360, 0.01460, 0.01660, 0.01770],
64        [0.01430, 0.01530, 0.01730, 0.01840],
65        [0.01470, 0.01570, 0.01780, 0.01890],
66        [0.01500, 0.01600, 0.01820, 0.01920]
67    ];
68
69    let v_outstanding2 = v_outstanding.clone();
70    let m_profile2 = m_profile.clone();
71    let m_taux2 = m_taux.clone();
72
73    let mut ftp_res1 = FtpResult::new(v_outstanding, m_profile, m_taux);
74    ftp_res1.compute("stock".to_string());
75
76    //println!("{:.6}\n", ftp_res1.ftp_rate.unwrap());
77    //println!("{:.6}\n", ftp_res1.market_rate.unwrap());
78    //println!("{:.6}", ftp_res1.ftp_int.unwrap());
79    //println!("test.yml");
80
81    let mut ftp_res2 = FtpResult::new(v_outstanding2, m_profile2, m_taux2);
82    ftp_res2.compute("flux".to_string());
83
84    println!("{:.6}\n", ftp_res2.ftp_rate.unwrap());
85    println!("{:.6}\n", ftp_res2.market_rate.unwrap());
86    println!("{:.6}\n", ftp_res2.varstock_amort.unwrap());
87    println!("{:.6}", ftp_res2.stock_amort.unwrap());
88    println!("test.yml");
89}