每组里股票和债券两两计算 Risk Parity。 Group A: 沪深300、中证500 vs 国开债 Group B: QDII 纳斯达克100、标普500 vs 美元债 Group C: 标普500 vs 黄金 vs 美元债 Group D:业绩比较基准 (这几个按钮可以点的!) loading... var data = null; function render_data(data, gid){ var ret = `${gid}`; ret += `更新于 ${data['last_update']}, 时间窗口 ${data['window_size']}天, 预期年化 ${(data['total_performance']*100).toFixed(2)}% `; ret += "基金比例波动表现" for(var i=0; i${d['code']} ${d['name']}` ret += `${(d['allocation']*100).toFixed(2)}% ` ret += `${(d['volatility']*100).toFixed(2)}% ` ret += `${(d['performance']*100).toFixed(2)}% `; } ret += ""; ret += "计算器"; ret += `名字当前持有计算结果`; for(var i=0; i${d['code']} ${d['name']}:` ret += ` ` } ret += ""; ret += `调仓计算`; ret += `补仓新增: 补仓计算 减仓计算 `; ret += `pr: ${data['total_pr'].toFixed(2)}` return ret; } function calc(gid){ console.log(gid); d = data[gid]; var num = d['data'].length; var percents =[]; var codes = []; for (var i=0; i调仓:' + final[i].toFixed(2) + " 当前:" + (old_percents[i]*100).toFixed(2) + '% ' + " 目标:" + (percents[i]).toFixed(2) + "%" + ''; } } function calc2(gid){ console.log(gid); d = data[gid]; var num = d['data'].length; var percents =[]; var codes = []; for (var i=0; idiff_sum){ console.log("new_sum diff_sum"); var final_sum = new_sum + old_sum; for(var i = 0; i 0.){ final.push(final_sum*percents[i]/100. - now[i]); new_add += final_sum*percents[i]/100. - now[i]; }else{ final.push(0.); } } // re scale for(var i = 0; i 新增:' + final[i].toFixed(2) + " 当前:" + (old_percents[i]*100).toFixed(2) + '% 调整后:' + (new_percents[i]*100.).toFixed(2) + "% 目标:" + (percents[i]).toFixed(2) + "%" + ''; } } function calc3(gid){ console.log(gid); d = data[gid]; var num = d['data'].length; var percents =[]; var codes = []; for (var i=0; i调仓:' + final[i].toFixed(2) + " 当前:" + (old_percents[i]*100).toFixed(2) + '% ' + " 目标:" + (percents[i]).toFixed(2) + "%" + ''; } } function update_page(){ var main = document.getElementById('main'); var sel = document.getElementById('sel'); // make each element in data a details/summary for(var k in data){ var v = data[k]; var div = document.createElement('div'); // set id as k div.id = k; // set div display none div.style.display = 'none'; div.innerHTML = render_data(v, k); main.appendChild(div); } sel_html = ""; for(var k in data){ sel_html += `${k}`; } sel.innerHTML = sel_html; } function select(gid){ for(var k in data){ var v = data[k]; var div = document.getElementById(k); if(k == gid){ div.style.display = 'block'; }else{ div.style.display = 'none'; } } } const url = "https://risk-parity-api.ruotian.io/get"; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { data = JSON.parse(xhr.responseText); update_page(); } } }; xhr.send();