opcalc

Crates.ioopcalc
lib.rsopcalc
version0.2.1
sourcesrc
created_at2021-01-06 21:55:51.608853
updated_at2021-01-06 21:55:51.608853
descriptionAn easy-to-use black-scholes option calculator. Made for JS, built in Rust.
homepage
repositoryhttps://github.com/mfg-nyu/opcalc
max_upload_size
id333429
size588,495
Vic (Shihang) Li (vic-shihang-li)

documentation

README

opcalc

An easy-to-use black-scholes option calculator. Made for JS, built in Rust.

Getting started

Using the library in JavaScript

You may configure an option calculation instance like so:

// Import opcalc as a webassembly module

const option = opcalc
    .create_option()
    .with_asset_price(100)
    .with_strike(105)
    .with_volatility(0.2)
    .with_interest(0.005)
    .with_current_time(1606780800) // timestamp in seconds: 2020/12/01 00:00:00
    .with_maturity_time(1610668800) // timestamp in seconds: 2021/01/15 00:00:00
    .finalize();

After the option has been created, you may access its prices (call and put), greeks (delta, gamma, and more) like so:

const call = option.call_value();
const delta = option.call_delta();
// ...

Examples

There are multiple examples for using this library in the /examples folder.

  • React
  • Angular (coming soon)
  • Vue.js (coming soon)

Using the library in Rust

Using the library in Rust is similar to the experience in JavaScript.

use opcalc::option::builder::BSOptionBuilder;

let option = BSOptionBuilder::new()
    .with_asset_price(100.0)
    .with_strike(105.0)
    .with_interest(0.008)
    .with_volatility(0.23)
    .with_current_time(1_606_780_800) // timestamp in seconds: 2020/12/01 00:00:00
    .with_maturity_time(1_610_668_800) // timestamp in seconds: 2021/01/15 00:00:00
    .finalize()
    .unwrap();  // safely unwrap here because all required builder steps are taken

// then, use this option to obtain calculation results
let gamma = option.call_gamma();

Contributing

Want to contribute? See our guide to contributing.

Commit count: 117

cargo fmt