Commit f72a7872 authored by 纪超's avatar 纪超

完成日志、配置文件、数据库工具模块

parent 495d15b0
import json import json
import os import os
import sys import sys
from logging import DEBUG
import pandas as pd import pandas as pd
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
...@@ -108,7 +109,8 @@ class MptSolver: ...@@ -108,7 +109,8 @@ class MptSolver:
return min_rtn, min_var, maxCVaR_whenMinV return min_rtn, min_var, maxCVaR_whenMinV
def solve_mpt(self, min_rtn, max_rtn): def solve_mpt(self, min_rtn, max_rtn):
logger.debug(f'...... ...... ...... ...... ...... ...... ...... ...... MPT ... sub risk : pct_value = {self.pct_value}') logger.debug(
f'...... ...... ...... ...... ...... ...... ...... ...... MPT ... sub risk : pct_value = {self.pct_value}')
big_y = min_rtn + self.pct_value * (max_rtn - min_rtn) big_y = min_rtn + self.pct_value * (max_rtn - min_rtn)
logger.debug(f'big_Y = target_Return = {big_y}') logger.debug(f'big_Y = target_Return = {big_y}')
model = self.create_model() model = self.create_model()
...@@ -127,7 +129,8 @@ class MptSolver: ...@@ -127,7 +129,8 @@ class MptSolver:
def solve_poem(self, min_rtn, max_rtn, base_cvar, max_cvar): def solve_poem(self, min_rtn, max_rtn, base_cvar, max_cvar):
k_history = len(self.rtn_history) k_history = len(self.rtn_history)
quantile = self.pct_value quantile = self.pct_value
logger.debug(f'...... ...... ...... ...... ...... ...... ...... ...... POEM With CVaR constraints ... sub risk : pct_value = {quantile}') logger.debug(
f'...... ...... ...... ...... ...... ...... ...... ...... POEM With CVaR constraints ... sub risk : pct_value = {quantile}')
big_y = min_rtn + quantile * (max_rtn - min_rtn) big_y = min_rtn + quantile * (max_rtn - min_rtn)
small_y = base_cvar + (max_cvar - base_cvar) * self.get_config('poem.cvar-scale-factor') * quantile small_y = base_cvar + (max_cvar - base_cvar) * self.get_config('poem.cvar-scale-factor') * quantile
logger.debug(f'big_Y = target_Return = {big_y} | small_y = target_cvar = {small_y}') logger.debug(f'big_Y = target_Return = {big_y} | small_y = target_cvar = {small_y}')
......
...@@ -7,8 +7,11 @@ logger = get_logger('test') ...@@ -7,8 +7,11 @@ logger = get_logger('test')
@autowired(names={'builder': 'poem'}) @autowired(names={'builder': 'poem'})
def test_portfolio_builder(builder: PortfoliosBuilder = None): def test_portfolio_builder(builder: PortfoliosBuilder = None):
result, detail = builder.build_portfolio(parse_date('2011-11-07'), PortfoliosType.NORMAL) result, detail = builder.build_portfolio(parse_date('2011-11-07'), PortfoliosType.NORMAL)
logger.info(result) logger.info("portfolios: ")
logger.info(detail) for risk, portfolio in result.items():
logger.info(risk.name)
logger.info(portfolio)
logger.info(detail[risk])
if __name__ == '__main__': if __name__ == '__main__':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment