Nighttime Possum Meandering

    finance

    5.0.0 • Public • Published

    FINANCE

    NPM version

    This module contains an implementation of Markowitz algorithm for the portfolio optimization, a routine for retrieving historical prices from Yahoo, statistical information for stocks and a routine for calculating implied volatility using Black and Scholes formula.

    Example

    See examples directory.

    For a frontend, see node-conpa.

    Installation

    To install with npm:

    npm install finance
    

    Tested with Node.js 14.x, R 3.4.3 and Rserve 1.7.3.

    Methods

    keystatistics.getKeyStatistics(params, callback)

    It retrieves the key statistics for the stocks and returns an array of objects to create an uneditable form on front-end side.

    Params

    • symbol asset symbol.

    Callback response

    • keyStatistics object.

    optionchain.getOptionChainFromYahoo(params, callback)

    It retrieves the strike values for calls and puts from Yahoo! Finance.

    Params

    • symbol asset symbol.
    • expiration expiration month. Has to be in the form: "YYYY-MM-DD", example: "2016-01-03".

    Callback response

    • optionChain

      • strike strike value of the asset.
      • expDateStr expire date (string).
      • expDate expire date (Date).
      • now Date.
      • calls vector of call values.
      • puts vector of put values.

    parsecsv.parse(arr, options)

    Arguments

    • arr is the string containing the comma separated value content.

    • options

      • skipHeader flag to skip the first row (dafault false).
      • delimeter is the delimeter between the fields (default ",").
      • reverse to reverse the rows (default false).
      • column is the column to extract (default 0).
      • replaceZeroes flag to replace zeroes with the previous value (default false).
      • skipNRecords flag to skip records (default 0).

    performances.getPerformances(x, weights)

    It calculates the weighted performance for a matrix.

    Arguments

    • x matrix containing the values (i.e. the asset returns).
    • weights the weights

    Returns a vector containing the weighted perfomance of the matrix.

    portfolio.getOptimalPortfolio(params, callback, config)

    It creates an optimal portfolio. If config is defined, the method call a Rserve instance, otherwise a native implementation is used.

    Params

    • prods vector of symbols.
    • referenceDate reference date (String).
    • targetReturn weekly target return, if undefined, the mean of returns.
    • lows vector of constraints.
    • highs vector of constraints.
    • shorts a logical indicating whether shortsales are allowed.

    Callback response

    • perf performances vector.

    • message error message, if empty the optimization is fine.

    • optim details of quadprog response.

      • solution vector of weights.
      • value the value of the quadratic function at the solution.
      • unconstrained_solution vector of the unconstrained minimizer.
      • iterations the number of iterations the algorithm needed.
      • iact vector with the indices of the active constraints at the solution.
      • message error message, if empty the optimization is fine.
      • pm portfolio return.
      • ps portfolio risk.

    Config

    • host hostname or ip address of R instance.
    • port port of Rserve instance.
    • user username for remote connection of Rserve instance.
    • password password for remote connection of Rserve instance.
    • debug boolean to enable rio logging.

    portfolio.getScriptOptimalPortfolio(params, callback)

    It retrieves the source code of the R script calculating the optimal portfolio.

    Params See portfolio.getOptimalPortfolio.

    Callback response

    • source the source code of the script.

    quotes.getQuotes(symbol, refDate, callback)

    It retrieves the prices from Yahoo! finance.

    Arguments

    • symbol asset symbol.
    • refDate reference date (Date).

    Callback response

    • error calback error.

    • symbol asset symbol.

    • prices

      • beforeRefDate CSV string of prices before reference date.
      • afterRefDate CSV string of prices after reference date.

    returns.getReturns(symbols, refDate, callback)

    It retrieves the prices from Yahoo! finance and calculates the log returns of the close prices.

    Arguments

    • symbols vector containing the symbols of the assets.
    • refDate reference date (String).

    Callback response

    • returns

      • message message error.
      • beforeRefDate vector of log returns of close prices before reference date.
      • afterRefDate vector of log returns of close prices after reference date.

    riskfreerate.getRiskFreeRateFromYahoo(callback)

    It retrieves the risk free rate from Yahoo! Finance.

    Callback response

    • riskfree risk free rate.

    volatility.getImpliedVolatility(params, callback)

    It calculates the implied volatility for an option using Black and Scholes formula.

    Arguments

    • symbol asset symbol.

    Callback response

    • option

      • strike strike of the asset.
      • riskfree risk free rate.
      • expDate expire date (string).
      • callVolatility implied volatility for the calls.
      • putVolatility implied volatility for the puts.

    Install

    npm i finance

    DownloadsWeekly Downloads

    120

    Version

    5.0.0

    License

    MIT

    Unpacked Size

    50.6 kB

    Total Files

    26

    Last publish

    Collaborators

    • avatar