- This parameter represents the Time Series Data fetched from AlphaVantage for all the stocks which are present in a given portfolio.
- It is prefered to have the DAILIY Time Series, but Weekly and Monthly is also okay. It won't break the code.
- The data is formed in the following way:
{
SYMBOL: {
DATE: {
"1. open": number,
"2. high": number,
"3. low": number,
"4. close": number,
"5. volume": number
}
}
}{
AAPL: {
'2017-01-27': {
'1. open': '120.0000',
'2. high': '122.4400',
'3. low': '119.5000',
'4. close': '121.9500',
'5. volume': '124748449'
},
.
.
.
},
.
.
.,
JPM: {
'2017-01-27': {
'1. open': '83.3000',
'2. high': '86.9800',
'3. low': '83.2050',
'4. close': '86.9300',
'5. volume': '73396847'
},
.
.
.
}
}- This parameter represents the Company Overview data fetched from AlphaVantage for all the stocks which are present in a given portfolio.
- The data is formed in the following way:
{
SYMBOL: {
Symbol: string,
AssetType: string,
...
}
}{
BABA: {
Symbol: 'BABA',
AssetType: 'Common Stock',
Exchange: 'NYSE',
Currency: 'USD',
Country: 'USA',
Sector: 'Consumer Cyclical',
Industry: 'Internet Retail',
...,
LastSplitFactor: 'None',
LastSplitDate: 'None'
},
JPM: {
Symbol: 'JPM',
AssetType: 'Common Stock',
...,
LastSplitDate: '2000-06-12'
}
}- This parameter represents the Balance Sheet data fetched from AlphaVantage for all the stocks which are present in a given portfolio.
- The data is formed in the following way:
{
SYMBOL: {
symbol: string,
annualReports: [object],
quarterlyReports: [object]
}
}{
AAPL: {
symbol: 'AAPL',
annualReports: [Object1, ...ObjectN ],
quarterlyReports: [Object1, ...ObjectN]
},
...,
GOOGL: {
symbol: 'GOOGL',
annualReports: [ Object1, ...ObjectN ],
quarterlyReports: [ Object1, ...ObjectN ]
},
}Testing the performance of a portfolio over a historical time span
| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| stocksData | Daily/Weekly/Monthly Time Series in the from of {symbol: data fetched from AlphaVantage} |
| fromDate | Date |
| toDate | Date |
| Parameters | Type | Explanation |
|---|---|---|
| MDDMaxToMin | number as String | The maximum drawdown of a portfolio according to the maximum and minimum observed value |
| MDDInitialToMin | number as String | The maximum drawdown of a portfolio according to the initial and minimum observed value |
| dateMax | Date as String | The date at which the portfolio value was the highest |
| dateMin | Date as String | The date at which the portfolio value was the lowest |
| maxValue | number as String | The maximum observed value of the portfolio |
| minValue | number as String | The minimum observed value of the portfolio |
| initialValue | number as String | The initial value of the portfolio or how much it costed to buy all the stocks at the starting date |
| bestYear | { | Best Year performance |
| changeBest: number as String | The change of the value of the portfolio | |
| yearBest: Date as String | The year itself | |
| growthRateBest: number as String} | The growth rate of the portfolio value in this year | |
| } | ||
| worstYear | { | Worst Year performance |
| changeWorst | number as String, | The change of the value of the portfolio |
| yearWorst | Date as String, | The year itself |
| growthRateWorst | number as String | The growth rate of the portfolio value in this year |
| } | ||
| finalPortfolioBalance | number as String, | The final portfolio balance (if < 0 => equal to 0) |
| CAGR | number | Compound Annual Growth Rate of the portfolio |
| standardDeviation | number | Standard Deviation of the portfolio |
| sharpeRatio | number | Sharpe Ratio of the portfolio |
{
fromDate: 2017-01-01T00:00:00.000Z,
toDate: 2021-04-03T08:57:28.391Z,
MDDMaxToMin: '-0.5293',
MDDInitialToMin: '-0.0056',
dateMax: '2020-08-28',
dateMin: '2017-01-20',
maxValue: '34841.2200',
minValue: '16400.8600',
initialValue: '16493.1500',
bestYear: {
changeBest: '8311.4400',
yearBest: '2019',
growthRateBest: '0.4028'
},
worstYear: {
changeWorst: '-1908.7500',
yearWorst: '2018',
growthRateWorst: '-0.0867'
},
finalPortfolioBalance: 31958.44,
CAGR: 0.16938406656595228,
standardDeviation: 0.032812673349866026,
sharpeRatio: 0.2787391748259358
}Evaluates the portfolio diversification in:
- industries
- countries
- currencies
- asset classes
- sectors
| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| symbolCompanyOverview | Company Overviews in the form of {symbol: data fetched from AlphaVantage} |
| Parameters | Type |
|---|---|
| industries | { |
| concrete industry | number |
| } | |
| countries | { |
| concrete country | number |
| } | |
| currencies | { |
| concrete currency | number |
| } | |
| assetClasses | { |
| concrete asset class | number |
| } | |
| sectors | { |
| concrete sector | number |
| } |
{
industries: {
'Banks-Diversified': 0.6504065040650407,
'Consumer Electronics': 0.1626016260162602,
'Information Technology Services': 0.0813008130081301,
'Internet Retail': 0.07317073170731708,
'Internet Content & Information': 0.032520325203252036
},
countries: { USA: 1 },
currencies: { USD: 1 },
assetClasses: { 'Common Stock': 1 },
sectors: {
'Financial Services': 0.6504065040650407,
Technology: 0.2439024390243903,
'Consumer Cyclical': 0.07317073170731708,
'Communication Services': 0.032520325203252036
}
}
| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| symbolCompanyOverview | Company Overviews in the form of {symbol: data fetched from AlphaVantage} |
| Parameters | Type | Explanation |
|---|---|---|
| PERatios | { | |
| concrete stock symbol | number | Price-Earning ratio of each of the stocks |
| } | ||
| averagePERatios | number | Weighted average Price-Earning ratio |
{
peRation: {
AAPL: '33.4662',
GOOGL: '34.6457',
AMZN: '74.3694',
IBM: '20.945',
BABA: '25.4694',
JPM: '17.0011'
},
averagePEration: 21.98755609756098
}| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| symbolCompanyOverview | Company Overviews in the form of {symbol: data fetched from AlphaVantage} |
| Parameters | Type | Explanation |
|---|---|---|
| dividendyield | { | |
| concrete stock symbol | number | Dividendyield of each of the stocks |
| } | ||
| averageDividendyield | number | Weighted average Dividendyield |
{
dividendyield: {
AAPL: 0.0067,
GOOGL: 0,
AMZN: 0,
IBM: 0.0505,
BABA: 0,
JPM: 0.0232
},
averageDividendyield: 0.020284552845528457
}| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| stocksData | Daily/Weekly/Monthly Time Series in the from of {symbol: data fetched from AlphaVantage} |
| Parameters | Type | Explanation |
|---|---|---|
| totalGainLoss | number | Positive numbers represent Gains and negative numbers - Losses |
| concrete stock symbol | { | |
| symbolGainLoss | number | Positive numbers represent Gains and negative numbers - Losses |
| } |
{
totalGainLoss: 2726.7100000000028,
perSymbol: {
AAPL: -226,
GOOGL: 1172.5999999999995,
AMZN: -362.39999999999964,
IBM: 99.80000000000018,
BABA: -6.089999999999918,
JPM: 2048.800000000003
}
}| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| stocksData | Daily/Weekly/Monthly Time Series in the from of {symbol: data fetched from AlphaVantage} |
| Parameters | Type |
|---|---|
| volatility | { |
| concrete stock symbol | number |
| } | |
| correlations | { |
| concrete correlation | number |
| } | |
| portfolioVolatility | number |
| standardDeviation | number |
{
volatility: {
Apple: 1.0304461557501514,
Google: 0.5496680733681532,
Amazon: 0.5993856976545141,
IBM: 0.5765889119578946,
'Alibaba group': 0.7140162113218156,
'JPMorgan Chase & Co.': 0.6486754881067324
},
correlations: {
'Apple to Google': 0.397373186,
'Amazon to Apple': 0.352196405,
'Amazon to Google': 0.57879282,
'Apple to IBM': 0.274291102,
'Google to IBM': 0.404049364,
'Amazon to IBM': 0.293267182,
'Alibaba group to Apple': 0.265261281,
'Alibaba group to Google': 0.484715212,
'Alibaba group to Amazon': 0.489600363,
'Alibaba group to IBM': 0.296927759,
'Apple to JPMorgan Chase & Co.': 0.223081253,
'Google to JPMorgan Chase & Co.': 0.502319427,
'Amazon to JPMorgan Chase & Co.': 0.223161337,
'IBM to JPMorgan Chase & Co.': 0.609458275,
'Alibaba group to JPMorgan Chase & Co.': 0.263935979
},
portfolioVolatility: 0.5208850412096532,
standardDeviation: 0.032812673349866026
}
| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| stocksData | Daily/Weekly/Monthly Time Series in the from of {symbol: data fetched from AlphaVantage} |
| Parameters | Type |
|---|---|
| sharpeRatioPerSymbol | { |
| concrete stock symbol | number |
| } | |
| portfolioSharpeRatio | number |
Again this should also be shown on a portfolio level
{
sharpeRatioPerSymbol: {
Apple: -0.01677788742875957,
Google: 0.3918344052565828,
Amazon: 0.5882535062884182,
IBM: -0.1304550726559575,
'Alibaba group': 0.30004682245527253,
'JPMorgan Chase & Co.': 0.18631715927443418
},
portfolioSharpeRatio: 0.2787391748259358
}| Parameters | Type |
|---|---|
| portfolio | A real or simulated portfolio in the form it is fetched from FinApi |
| balanceSheetPerSymbol | Balance Sheets in the form of {symbol: data fetched from AlphaVantage} |
| Parameters | Type | Explanation |
|---|---|---|
| debtEquityPerStock | { | |
| concrete stock symbol | number | Represents the Debt/Equity of each of the stocks |
| } | ||
| averageDebtEquity | number | Weighted average Debt/Equity of the portfolio |
{
debtEquityPerStock: {
AAPL: 3.957039440456695,
GOOGL: 0.436192393414336,
AMZN: 2.4387713588283155,
IBM: 6.525015680030878,
BABA: 0.5082281505442549,
JPM: 11.121075767663967
},
averageDebtEquity: 8.48989362900556
}Performs backtesting, portfolio evaluation and analysis.
Spawns a child python process and prints out what it returns