npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

analyze-dca

v1.0.4

Published

Analyzes past stock values using dollar cost averaging investment strategy

Downloads

4

Readme

Dollar-Cost-Averaging

analyze-dca is a simple node package that analyzes past stock values and concludes gains/loses based on practicing the Dollar Cost Averaging investment strategy over a set trading period.

Check out more elaborate explanation about Dollar Cost Averaging for a better understanding of how this module works referenced briefly below.

How it works

analyze-dca function takes a JSON object as an input parameter, dca-request (see typescript code block below).

type Period = 'd' | 'w' | 'm' | 'y';

interface dca_request {
    amountInvested: number // amount that the user was looking forward to invest
    stockSymbol: string // TSLA, AMZN, GOOGL, AAPL
    period: Period // daily / weekly /monthly / yearly
    numPeriods: number // how many periods, past # days/weeks/months/years
}

The amountInvested is divided equally into numPeriods parts which is invested on a regular period resulting in a cumulative sum of the number of shares that are bought based on the historical (open) share price on those days. Through this, the amount invested every period remains constant while the number of shares bought on recurring periods fluctuates based on market volatility.

After calculating such for every trading period, the total number of shares bought through DCA is compared against buying shares with the whole amount at the price numPeriods days/weeks/months/years ago. Monetary profits/loses are based on the share price of the most recent trading period.

Check out a sample result object shown in the comment under usage section.

Installation

$ npm install --save analyze-dca

Usage

var analyze_dca = require('analyze-dca')

analyze_dca({
    amountInvested: 5000, // Amount to be invested
    stockSymbol: 'TSLA',
    period: 'w', // 'd' (daily) / 'w' (weekly) / 'm' (monthly) / 'y' (yearly)
    numPeriods: 4 // # of periods the stock is bought for DCA
}).then((data) => {
    console.log(data)
    /*
        {
            sharesOwnedWithDCA: 2.9247167245086256,
            sharesOwnedWithDirect: 2.996733479595437,
            directProfit: 439.50,
            dcaProfit: 356.84,
            sharesData: [
                {
                    date: 2022-01-03T05:00:00.000Z,
                    open: 1147.75,
                    close: 1199.780029,
                    high: 1201.069946,
                    low: 1136.040039,
                    symbol: 'TSLA'
                },
                {
                    date: 2021-12-27T05:00:00.000Z,
                    open: 1073.670044,
                    close: 1093.939941,
                    high: 1117,
                    low: 1070.719971,
                    symbol: 'TSLA'
                },
                {
                    date: 2021-12-20T05:00:00.000Z,
                    open: 910.700012,
                    close: 899.940002,
                    high: 921.690002,
                    low: 893.390015,
                    symbol: 'TSLA'
                },
                {
                    date: 2021-12-13T05:00:00.000Z,
                    open: 1001.090027,
                    close: 966.409973,
                    high: 1005,
                    low: 951.419983,
                    symbol: 'TSLA'
                }
            ]
        }
    */
}).catch((error) => {
    console.log(error)
})

All dates are in ISO format. All numerical values are returned with max precision available. Round accordingly.

License

ISC License

Copyright (c) [2022] [Shaz Momin]

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.