adding portfolio and asset to wasm
This commit is contained in:
parent
f9a7fb4b2f
commit
a567bcffaf
finlib-wasm/js-local
finlib/src
@ -1,4 +1,8 @@
|
||||
import { ValueAtRisk } from "finlib";
|
||||
import { ValueAtRisk, Portfolio, PortfolioAsset } from "finlib";
|
||||
|
||||
console.log(ValueAtRisk.varcovar([1, 2, 3, 4], 0.1));
|
||||
console.log(ValueAtRisk.varcovar([1, 2, 3, 4], 0.05));
|
||||
|
||||
let portfolio = new Portfolio([new PortfolioAsset(1.0, "test", [1.0, 2.0, 3.0])]);
|
||||
console.log(portfolio.isValid());
|
||||
console.log(portfolio.valueAtRisk(0.1));
|
||||
|
2
finlib-wasm/js-local/package-lock.json
generated
2
finlib-wasm/js-local/package-lock.json
generated
@ -20,7 +20,7 @@
|
||||
}
|
||||
},
|
||||
"../pkg": {
|
||||
"name": "@sarsoo/finlib",
|
||||
"name": "finlib-wasm",
|
||||
"version": "0.0.1"
|
||||
},
|
||||
"node_modules/@discoveryjs/json-ext": {
|
||||
|
@ -3,4 +3,6 @@ pub mod stats;
|
||||
pub mod util;
|
||||
pub mod risk;
|
||||
#[cfg(feature = "py")]
|
||||
pub mod py;
|
||||
pub mod py;
|
||||
#[cfg(feature = "wasm")]
|
||||
pub mod wasm;
|
@ -1,30 +1 @@
|
||||
use pyo3::prelude::*;
|
||||
use crate::risk::portfolio::{Portfolio, PortfolioAsset};
|
||||
|
||||
#[pymethods]
|
||||
impl Portfolio {
|
||||
|
||||
#[new]
|
||||
pub fn init(assets: Vec<PortfolioAsset>) -> Self {
|
||||
Portfolio::from(assets)
|
||||
}
|
||||
|
||||
#[pyo3(name = "is_valid")]
|
||||
pub fn is_valid_py(&self) -> bool {
|
||||
self.is_valid()
|
||||
}
|
||||
|
||||
#[pyo3(name = "value_at_risk")]
|
||||
pub fn value_at_risk_py(&mut self, confidence: f64) -> PyResult<Option<f64>> {
|
||||
Ok(self.value_at_risk(confidence))
|
||||
}
|
||||
}
|
||||
|
||||
#[pymethods]
|
||||
impl PortfolioAsset {
|
||||
|
||||
#[new]
|
||||
pub fn init(portfolio_weight: f64, name: String, values: Vec<f64>) -> Self {
|
||||
PortfolioAsset::new(portfolio_weight, name, values)
|
||||
}
|
||||
}
|
||||
pub mod portfolio;
|
30
finlib/src/py/portfolio.rs
Normal file
30
finlib/src/py/portfolio.rs
Normal file
@ -0,0 +1,30 @@
|
||||
use pyo3::prelude::*;
|
||||
use crate::risk::portfolio::{Portfolio, PortfolioAsset};
|
||||
|
||||
#[pymethods]
|
||||
impl Portfolio {
|
||||
|
||||
#[new]
|
||||
pub fn init(assets: Vec<PortfolioAsset>) -> Self {
|
||||
Portfolio::from(assets)
|
||||
}
|
||||
|
||||
#[pyo3(name = "is_valid")]
|
||||
pub fn is_valid_py(&self) -> bool {
|
||||
self.is_valid()
|
||||
}
|
||||
|
||||
#[pyo3(name = "value_at_risk")]
|
||||
pub fn value_at_risk_py(&mut self, confidence: f64) -> PyResult<Option<f64>> {
|
||||
Ok(self.value_at_risk(confidence))
|
||||
}
|
||||
}
|
||||
|
||||
#[pymethods]
|
||||
impl PortfolioAsset {
|
||||
|
||||
#[new]
|
||||
pub fn init(portfolio_weight: f64, name: String, values: Vec<f64>) -> Self {
|
||||
PortfolioAsset::new(portfolio_weight, name, values)
|
||||
}
|
||||
}
|
1
finlib/src/wasm/mod.rs
Normal file
1
finlib/src/wasm/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod portfolio;
|
30
finlib/src/wasm/portfolio.rs
Normal file
30
finlib/src/wasm/portfolio.rs
Normal file
@ -0,0 +1,30 @@
|
||||
use wasm_bindgen::prelude::*;
|
||||
use crate::risk::portfolio::{Portfolio, PortfolioAsset};
|
||||
|
||||
#[wasm_bindgen]
|
||||
impl Portfolio {
|
||||
|
||||
#[wasm_bindgen(constructor)]
|
||||
pub fn init_wasm(assets: Vec<PortfolioAsset>) -> Self {
|
||||
Portfolio::from(assets)
|
||||
}
|
||||
|
||||
#[wasm_bindgen(js_name = "isValid")]
|
||||
pub fn is_valid_wasm(&self) -> bool {
|
||||
self.is_valid()
|
||||
}
|
||||
|
||||
#[wasm_bindgen(js_name = "valueAtRisk")]
|
||||
pub fn value_at_risk_wasm(&mut self, confidence: f64) -> Option<f64> {
|
||||
self.value_at_risk(confidence)
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
impl PortfolioAsset {
|
||||
|
||||
#[wasm_bindgen(constructor)]
|
||||
pub fn init_wasm(portfolio_weight: f64, name: String, values: Vec<f64>) -> Self {
|
||||
PortfolioAsset::new(portfolio_weight, name, values)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user