Published
Edited
Jul 24, 2019
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
cDaiSharpe = getSharpe(cDaiRate, riskFree, daiDailyChanges)
Insert cell
ethSharpeData = findSharpe(cDaiSharpe, ethDailyChange)
Insert cell
findSharpe = (targetSharpe, dailyChanges, rate = 0.15) => {
let returnRate = rate
let calculatedSharpe = getSharpe(returnRate, riskFree, dailyChanges)
while(calculatedSharpe < targetSharpe || returnRate > 5) {
returnRate = returnRate + 0.01
calculatedSharpe = getSharpe(returnRate, riskFree, dailyChanges)
}
return { calculatedSharpe, returnRate }
}
Insert cell
cDaiRate = Number(cDaiData.supply_rate.value)
Insert cell
daiDailyChanges = getPercentChange(coinbaseDai.map(d => d[4]))
Insert cell
daiStd = simpleStatistics.standardDeviation(daiDailyChanges)
Insert cell
ethDailyChange = getPercentChange(daiEthPrices.map(p => p.close))
Insert cell
ethStd = simpleStatistics.standardDeviation(ethDailyChange)
Insert cell
ethImplied = (ethStd / daiStd)*cDaiRate
Insert cell
riskFree = 0.02
Insert cell
import {cDaiData} from '@bgits/cdai-pricing'
Insert cell
daiEthPrices = ethPrices.filter(p => Number(p.time) >= firstTime)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
daiDataUrl = 'https://dai.stablecoin.science/data/ethdai-trades-30d.csv'
Insert cell
Insert cell
Insert cell
endTime = new Date(daiEthTimes[daiEthTimes.length-1]*1000)
Insert cell
coinbaseApi = `https://api.pro.coinbase.com/products/DAI-USDC/candles?start=${startTime}&end=${endTime}&granularity=86400`
Insert cell
d3 = require('d3')
Insert cell
import {dailyPrices, getSharpe} from '@bgits/crypto-networks-cost-of-capital-exploration'
Insert cell
simpleStatistics = require('simple-statistics')
Insert cell
getPercentChange = prices => prices.map((price, i) => {
if (!i) return 0
let yesterdaysPrice = prices[i-1]
return (price - yesterdaysPrice) / yesterdaysPrice
})
Insert cell
displayPercent = num => Number(num).toLocaleString(undefined,{style: 'percent', minimumFractionDigits:2})
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more