framework:
  database:
    host: ${MYSQL_HOST:localhost}
    port: ${MYSQL_PORT:3306}
    user: ${MYSQL_USER:root}
    password: ${MYSQL_PWD:123456}
    dbname: ${MYSQL_DBNAME:jftech_robo}
  injectable:
    types:
      api.PortfoliosBuilder: portfolios.builder.PoemPortfoliosBuilder
  email:
    server: smtphz.qiye.163.com
    user: jft-ra@thizgroup.com
    password: 5dbb#30ec6d3
  mulit-process:
    max-workers: 8
  logger:
    version: 1
    use: ${LOG_NAME}
    formatters:
      brief:
        format: "%(asctime)s - %(levelname)s - %(message)s"
      simple:
        format: "%(asctime)s - %(filename)s - %(levelname)s - %(message)s"
    handlers:
      console:
        class: logging.StreamHandler
        formatter: simple
        level: DEBUG
        stream: ext://sys.stdout
      file:
        class: logging.handlers.TimedRotatingFileHandler
        level: INFO
        formatter: brief
        filename: logs/info.log
        interval: 1
        backupCount: 30
        encoding: utf8
        when: D
    loggers:
      prod:
        handlers: [ console, file ]
        level: INFO
        propagate: no
    root:
      level: INFO
      handlers: [ console ]
basic:
  datum:
    excludes:
      - 'FKUQX US Equity'
      - 'FTAAUSH LX Equity'
      - 'FTJAPAU LX Equity'
      - 'TEGAUH1 LX Equity'
      - 'TMEEAAU LX Equity'
      - 'TEUSAAU LX Equity'
      - 'FTEAUH1 LX Equity'
      - 'TFIAAUS LX Equity'
  navs:
    exrate:
      - from: EUR
        ticker: EURUSD BGN Curncy
asset-pool:
  asset-optimize:
    sortino-weight:
      - months: 3
        weight: 0.5
      - months: 6
        weight: 0.3
      - years: 1
        weight: 0.2
  asset-risk:
    advance-months: 3
    rtn-days: 5
    ewma:
      condition-total: 6
      condition-meet: 4
      factor: 0.3
      threshold: 0
    cvar:
      min-volume: 30
      threshold: -0.03
      coef: 0.95
portfolios:
  holder:
    init-nav: 100
    min-interval-days: 10
  solver:
    tol: 1E-10
    navs:
      months: 3
      max-nan:
        asset: 8
        day: 0.5
      risk:
        ft3: [ 2, 3 ]
        ft6: [ 2, 3, 4 ]
        ft9: [ 2, 3, 4, 5 ]
    matrix-rtn-days: 21
    asset-count: 5 # count or [min, max]
    mpt:
      cvar-beta: 0.2
      quantile: 0.9
      low-weight: 0.05
      high-weight: [ 1, 0.6, 0.35 ]
    poem:
      cvar-scale-factor: 0.1
    right_side:
      asset-count: [3, 5]
      navs:
        risk: [1, 2]
        exclude-asset-type: ['STOCK', 'BALANCED']
      mpt:
        quantile: 0.3
    crisis_1:
      asset-count: [3, 5]
      navs:
        risk: [1, 2]
      mpt:
        quantile: 0.1
    crisis_2:
      asset-count: [3, 5]
      navs:
        risk: [ 1, 2 ]
      mpt:
        quantile: 0.1
rebalance:
  drift-solver:
    date-curve:
      diff-threshold: 0.4
      init-factor: 0.000000002
    high-weight:
      coef: 0.2
  ruler:
    disable-period:
      normal: 10
      crisis_1: 15
      crisis_2: 15
      right_side: 15
  signals:
    init-signal:
      date: 2022-09-01
    crisis-signal:
      exp-years: 3
      exp-init: 2008-01-01
      inversion-years: 1
      inversion-threshold: 0.3
      crisis-1:
        mean-count: 850
        consecut-days: 5
      crisis-2:
        negative-growth: 1
        fed-months: 3
        fed-threshold: 0.75
    right-side:
      rtn-days: 5
      min-threshold: -0.05
      coef: 0.95
      cvar-min-volume: 30
    curve-drift:
      diff-threshold: 0.4
      init-factor: 0.000000002
    high-low-buy:
      threshold: [ 0.5, 0.8 ]
robo-executor:
  use: ${ROBO_EXECUTOR:backtest}
  backtest:
    start-date: 2008-01-02
    end-date: 2009-01-01