master
SeanChenTaipei 2 years ago
parent e0f64919e4
commit e87b7bafb2
  1. 1
      cool.json
  2. 35
      main.py
  3. 19
      static/js/addStock.js
  4. 34
      templates/strategy_tw.html

File diff suppressed because one or more lines are too long

@ -20,26 +20,26 @@ pd.options.plotting.backend = "plotly"
# PARAMETERS
CONFIGS = {
# "ENV": "development",
# "DEBUG": True,
"ENV": "development",
"DEBUG": True,
"SECRET_KEY": os.urandom(30), # Set the secret key for session authentication
"PERMANENT_SESSION_LIFETIME": timedelta(minutes=60)
}
SQL_CONFIG = dict(
database= os.getenv("PGDATABASE"),
user=os.getenv("PGUSER"),
host=os.getenv("PGHOST"),
port=os.getenv("PGPORT"),
password=os.getenv("PGPASSWORD")
)
# SQL_CONFIG = dict(
# database="railway",
# user="postgres",
# host="containers-us-west-103.railway.app",
# port="5913",
# password="gv5Mh7cPjCm9YTjAmsYD"
# database= os.getenv("PGDATABASE"),
# user=os.getenv("PGUSER"),
# host=os.getenv("PGHOST"),
# port=os.getenv("PGPORT"),
# password=os.getenv("PGPASSWORD")
# )
# SQL_CONFIG = {
SQL_CONFIG = dict(
database="railway",
user="postgres",
host="containers-us-west-103.railway.app",
port="5913",
password="gv5Mh7cPjCm9YTjAmsYD"
)
# SQL_CONFIG = {@
# 'database': "tpm",
# 'user': "hsienchen",
# 'host': "127.0.0.1",
@ -280,9 +280,12 @@ def buildPort():
ts = int(request.form.get('ts'))
ts = datetime.fromtimestamp(ts/1000)
role = request.form.get('role')
ratio = float(request.form.get('ratio'))
lookback = int(request.form.get('lookback'))
backtest = int(request.form.get('frequency'))
gamma = float(request.form.get('gamma'))/100
comment = request.form.get('comment')
stock_list = json.loads(request.form.get('stockList'))
ratio=0.7
# Algorithm MVO
print("-"*10)

@ -54,14 +54,15 @@ $stockList.on('click', '.delete-btn', function(){
deleteStockItem(itemIndex);
// console.log(stockList);
});
// $stockList.on('click', '.delete-btn', function(event) {
// // Get index of item to delete
// const $deleteBtn = $(event.target);
// const itemIndex = $deleteBtn.parent().index();
// // Delete item from list
// deleteStockItem(itemIndex);
// });
function changeFunc(value) {
console.log(value);
if (value === 'quadratic_utility') {
$('#gamma').css("display", "flex");
} else {
$('#gamma').css("display", "none");
}
}
// Event listener for submit button click
@ -107,8 +108,10 @@ $sendPort.click(function(event) {
name: $('input[name=portName]').val(),
ts: Date.now(),
comp: $('#competition').val(),
ratio: $('#ratio-select').val(),
lookback: $('#lookback').val(),
frequency: $('#opt-frequency').val(),
role: $('#role-select').val(),
gamma: $('#util-gamma').val(),
comment: $commentPort.val(),
stockList: JSON.stringify(stockList)
},

@ -136,7 +136,7 @@ div.card{
<div class="card mt-3">
<div class="d-flex p-2">
<div class="p-2 font-bold text-lg">
策略參數選擇
投組最佳化配置
</div>
<div class="btn-group ms-auto">
<button type="button" class="btn btn-outline-danger btn-sm" id="submit-port">
@ -146,23 +146,39 @@ div.card{
</div>
<div class="input-group">
<span class="input-group-text bg-info">訓練 / 回測數據比</span>
<select id="ratio-select" class="form-select">
<option value="0.5">5:5</option>
<option value="0.6">6:4</option>
<option selected value="0.7">7:3</option>
<option value="0.8">8:2</option>
<option value="0.9">9:1</option>
<span class="input-group-text bg-info">輸入數據時長</span>
<select id="lookback" 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 id="opt-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 id="role-select" class="form-select">
<select id="role-select" 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="util-gamma" name="targetAnnualVolatility" class="form-control fmt-pct" value="30" autocomplete="off">
<span class="input-group-text">%</span>
</div>
</div>

Loading…
Cancel
Save