Skip to content

Instantly share code, notes, and snippets.

@omnichronous
Created December 15, 2017 16:36
Show Gist options
  • Save omnichronous/7167c2bbb860326aa372822e728935d8 to your computer and use it in GitHub Desktop.
Save omnichronous/7167c2bbb860326aa372822e728935d8 to your computer and use it in GitHub Desktop.
Equal-weighted Dogs of the Dow (and variants) portfolio
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
function balance(assets, portfolioWorth) {
try {
var portfolio = {};
var numberOfAssets = Object.keys(assets).length;
var moneyPerAsset = portfolioWorth / numberOfAssets;
for (var asset in assets) {
var price = assets[asset];
var stock = moneyPerAsset / price;
console.log(moneyPerAsset, 'will buy', stock, 'stock from', asset);
portfolio[asset] = stock;
}
return portfolio;
} catch (e) {
console.error(e);
}
}
function foolish4(assets, portfolioWorth) {
try {
var portfolio = {};
var numberOfAssets = Object.keys(assets).length;
var cheapestAssetPrice = Object.keys(assets).reduce(function(m, k){ return assets[k] < m ? assets[k] : m }, +Infinity);
var cheapestAssetKey = val2key(cheapestAssetPrice, assets);
console.log('40% of portfolio -', portfolioWorth * 0.4, '- will buy', (portfolioWorth * 0.4) / cheapestAssetPrice, 'stock from', cheapestAssetKey);
for (var asset in assets) {
if (asset !== cheapestAssetKey) {
console.log('20% of portfolio -', portfolioWorth * 0.2, '- will buy', (portfolioWorth * 0.2) / assets[asset], 'stock from', asset);
}
}
} catch (e) {
console.error(e);
}
}
function val2key(val, array) {
for (var key in array) {
if (array[key] == val) {
return key;
}
}
return false;
}
</script>
</head>
<body>
<script>
console.log('Foolish 4 2018');
foolish4({
vz: 52.34,
pfe: 36.46,
ko: 46.03,
csco: 37.90
}, 500);
console.log('Dow 4 2018');
balance({
vz: 52.34,
pfe: 36.46,
ko: 46.03,
csco: 37.90
}, 500);
console.log('Small Dogs of the Dow 2018');
balance({
ge: 17.64,
vz: 52.34,
pfe: 36.46,
ko: 46.03,
csco: 37.90
}, 500);
console.log('Dogs of the Dow 2018');
balance({
ge: 17.64,
vz: 52.34,
ibm: 154.00,
xom: 82.90,
cvx: 119.53,
pfe: 36.46,
mrk: 56.01,
ko: 46.03,
csco: 37.90,
pg: 91.00
}, 500);
console.log('U.S. Fundamental Growth');
balance({
goog: 1018.38,
aapl: 169.01,
avgo: 263.89,
cvs: 71.38,
hd: 180.8,
mmc: 84.4,
ma: 147.42,
msft: 82.78,
rtn: 185.2,
tmo: 183.87
}, 500);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment