You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
4.6 KiB
89 lines
4.6 KiB
{% extends 'base.html' %} |
|
{% set active_page = 'custom' %} |
|
|
|
|
|
{% block title %}Strategy Page{% endblock%} |
|
{% block content %} |
|
<div class="container-fluid" style="min-height:92%;position:relative;"> |
|
<div class="card my-3"> |
|
<div class="card-header"> |
|
<h1 class="modal-title font-bold text-xl" style="color: #000055;">格式規範與上傳檔案</h1> |
|
</div> |
|
<div class="card-body"> |
|
<div class="row justify-content-center"> |
|
<div class="col-lg-5 col-md-5 col-sm-10"> |
|
<ul class="fa-ul"> |
|
<li><span class="fa-li"><i class="fa-solid fa-flag"></i></span>上傳之csv檔需包含header,且第一行為時間資訊。</li> |
|
<li><span class="fa-li"><i class="fa-solid fa-flag"></i></span>價格資訊需長度相同,且資產數量大於1檔才會進行回測。</li> |
|
<li><span class="fa-li"><i class="fa-solid fa-flag"></i></span>範例如下圖所示。</li> |
|
</ul> |
|
<img src="{{ url_for('static', filename='img/file.jpg') }}" class="img-fluid mb-3" alt="SINGUP IMAGE"> |
|
</div> |
|
<div class="col-lg-7 col-md-7 col-sm-10"> |
|
<form method="POST" enctype="multipart/form-data"> |
|
<div class="p-2 font-bold text-lg"> |
|
投組最佳化配置 |
|
</div> |
|
<div class="input-group"> |
|
<span class="input-group-text bg-info">輸入數據時長</span> |
|
<select name="lookback" class="form-select"> |
|
<option value="21">1個月</option> |
|
<option value="63">3個月</option> |
|
<option selected value="126">6個月</option> |
|
<option value="252">12個月</option> |
|
</select> |
|
</div> |
|
<div class="input-group"> |
|
<span class="input-group-text bg-info">再平衡頻率</span> |
|
<select name="frequency" class="form-select"> |
|
<option value="21">每月</option> |
|
<option value="63">每季</option> |
|
<option selected value="126">每半年</option> |
|
<option value="252">每年</option> |
|
</select> |
|
</div> |
|
<div class="input-group"> |
|
<span class="input-group-text bg-info">最佳化目標函數</span> |
|
<select name="role" class="form-select" onchange="changeFunc(value);"> |
|
<option selected value="max_sharpe">最大化夏普比率</option> |
|
<option value="max_sortino">最大化索提諾比率</option> |
|
<option value="min_volatility">最小化波動率</option> |
|
<option value="quadratic_utility">最大化效用函數</option> |
|
</select> |
|
</div> |
|
<div class="input-group" style="display: none;" id="gamma"> |
|
<span class="input-group-text bg-info">風險厭惡係數</span> |
|
<input type="number" id="gamma" name="gamma" name="targetAnnualVolatility" class="form-control fmt-pct" value="30" autocomplete="off"> |
|
<span class="input-group-text">%</span> |
|
</div> |
|
<div class="form-group d-flex mt-3"> |
|
<input type="file" class="form-control-file" id="csv_file" name="csv_file" accept=".csv" max-file="3" required> |
|
<button id="uploadCheck" type="submit" class="btn btn-outline-primary ms-auto">確認上傳</button> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
{% endblock %} |
|
{% block script %} |
|
<script> |
|
function changeFunc(value) { |
|
console.log(value); |
|
if (value === 'quadratic_utility') { |
|
$('#gamma').css("display", "flex"); |
|
} else { |
|
$('#gamma').css("display", "none"); |
|
} |
|
} |
|
</script> |
|
<script> |
|
$("#csv_file").on("change", function () { |
|
if(this.files[0].size > 1000000) { |
|
alert("檔案大小請勿超過 1MB !!"); |
|
$(this).val(null); |
|
} |
|
}); |
|
</script> |
|
{% endblock script %}
|
|
|