py-jftech: logger: version: 1 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: ${LOG_FILE:logs/info.log} interval: 1 backupCount: 30 encoding: utf8 when: D # loggers: # basic.sync: # level: DEBUG # handlers: [console] # propagate: no root: level: ${LOG_LEVEL:INFO} handlers: ${LOG_HANDLERS:[ console ]} database: host: ${MYSQL_HOST:localhost} port: ${MYSQL_PORT:3306} user: ${MYSQL_USER:root} password: ${MYSQL_PWD:123456} dbname: ${MYSQL_DBNAME:jftech_robo} database-2: host: 106.14.56.221 port: 3306 user: robo_user password: robo2.1@20220521 dbname: robo_ft_fund_real 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: ${MAX_PROCESS:8} basic: # 基础信息模块 sync: start-date: 2007-01-01 # 同步数据开始日期 datum: # 资料模块 change: date: ${DATUM_CHANGE_DATE} file: ${DATUM_CHANGE_FILE} excludes: # 排除的资料彭博ticker backtest: - 'FKUQX US Equity' - 'FTAAUSH LX Equity' - 'FTJAPAU LX Equity' - 'TEGAUH1 LX Equity' - 'TMEEAAU LX Equity' - 'TEUSAAU LX Equity' - 'FTEAUH1 LX Equity' - 'TFIAAUS LX Equity' real: - 'FGFSACU LX Equity' - 'TMEEAAU LX Equity' - 'FTEAMUH LX Equity' - 'FKUTX US Equity' - 'TEMUSGI LX Equity' - 'TEMFIAI LX Equity' - 'TEMGROA LX Equity' - 'TEMFMEA LX Equity' - 'TEMDGAA LX Equity' - 'TEMJAAU LX Equity' - 'TEMFHAC LX Equity' - 'TEMLATA LX Equity' - 'LEPEUAA ID Equity' - 'LGBOAAU ID Equity' navs: # 净值模块 exrate: # 汇率,如果不开启,整个这块注释掉 - from: EUR # 需要转换的货币类型 ticker: EURUSD BGN Curncy # 汇率值的彭博ticker asset-pool: # 资产池模块 asset-optimize: # 资产优选模块 sortino-weight: # sortino计算需要的权重,下面每一条为一次计算,e.g. months: 3, weight: 0.5 表示 3个月数据使用权重0.5来计算分值 - months: 3 weight: 0.5 - months: 6 weight: 0.3 - years: 1 weight: 0.2 asset-risk: # 资产风控模块 advance-months: 3 # 计算资产风控,需要净值提前开始时间多少个月 rtn-days: 5 # 滚动计算回报率的天数 ewma: # ewma相关 condition-total: 6 # 查看多少天的数据 condition-meet: 4 # 有多少天满足条件则触发 factor: 0.3 # ewma计算因子 threshold: 0 # 满足条件阀值 cvar: # cvar相关 min-volume: 30 # 计算cvar时净值最少数据量 threshold: -0.03 # 满足条件阀值 coef: 0.95 # 计算cvar的系数 portfolios: # 投组模块 holder: # 持仓投组相关 init-nav: 100 # 初始金额 min-interval-days: 10 # 两次实际调仓最小间隔期,单位交易日 solver: # 解算器相关 tol: 1E-10 # 误差满足条件 navs: # 净值要求 range: # 需要净值数据的区间, days: 90 表示90自然日,months: 3 表示3个自然月 days: 90 max-nan: # 最大缺失净值条件 asset: 8 # 单一资产最多缺少多少交易日数据,则踢出资产池 day: 0.5 # 单一交易日最多缺少百分之多少净值,则删除该交易日 risk: # 资产风险等级要求,可分开写也可以合并写,e.g. risk:[ 2, 3 ] 则表示 所有投组资产风险等级都是 2 或 3 ft3: [ 2, 3 ] # 类似这样写,只要求ft3的投组资产风险等级 ft6: [ 2, 3, 4 ] ft9: [ 2, 3, 4, 5 ] matrix-rtn-days: 20 # 计算回报率矩阵时,回报率滚动天数 asset-count: 5 # 投组资产个数。e.g. count 或 [min, max] 分别表示 最大最小都为count 或 最小为min 最大为max,另外这里也可以类似上面给不同风险等级分别配置 mpt: # mpt计算相关 cvar-beta: 0.2 # 计算Kbeta 需要用到 quantile: 0.9 # 分位点,也可以给不同风险等级分别配置 low-weight: 0.05 # 最低权重 high-weight: [ 1, 0.6, 0.35 ] # 最高权重比例,可给一个值,也可以给多个值,当多个值时,第一个表示只有一个资产时权重,第二个表示只有两个资产时权重,以此类推,最后一个表示其他资产个数时的权重 poem: # poem相关 cvar-scale-factor: 0.1 # 计算时用到的系数 right_side: # 这里表示右侧类型投组用到的参数,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致 navs: risk: [1, 2] exclude-asset-type: ['STOCK', 'BALANCED'] # 排除的资产类型 mpt: quantile: 0.3 crisis_1: # 危机1相关,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致 navs: risk: [1, 2] mpt: quantile: 0.1 crisis_2: # 危机2相关,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致 navs: risk: [ 1, 2 ] mpt: quantile: 0.1 rebalance: # 再平衡模块 drift-solver: # drift解算器相关 date-curve: # 日期曲线drift相关 diff-threshold: 0.4 # 权重相差初始阀值 init-factor: 0.000000002 # 权重相差递减因子 high-weight: # 高风险资产权重drift相关 coef: 0.2 # drift系数 ruler: # 再平衡信号选用规则 disable-period: 10 # 禁止买入期,交易日 # normal: 10 # 标准投组禁止买入期 # crisis_1: 15 # 危机1投组禁止买入期 # crisis_2: 15 # 危机2投组禁止买入期 # right_side: 15 # 右侧投组禁止买入期 signals: # 信号相关 crisis-signal: # 危机信号相关 exp-years: 3 # 预警期时长,单位自然年,点到点计算 exp-init: 2022-03-04 # 设置起始危机预警开始时间,如果关闭初始预警起,注释到这一条即可 inversion-years: 1 # 利率倒挂计算时长,单位自然年,点到点取值 inversion-threshold: 0.3 # 利率倒挂触发阀值 crisis-1: # 危机1相关 mean-count: 850 # spx去多少交易日计算平均值 threshold: -0.05 # spx计算后跌破阀值 crisis-2: # 危机2相关 negative-growth: 1 # 实际利率负增长时长,单位年,点到点取值 fed-months: 3 # fed 滚动月份,点到点取值 fed-threshold: -0.75 # fed判断阀值 right-side: # 市场右侧相关 rtn-days: 5 # 计算spx回报率滚动天数,交易日 min-threshold: -0.05 # spx回报率跌破阀值 coef: 0.95 # 计算cvar的系数 cvar-min-volume: 30 # 计算cvar至少需要多少交易日数据 high-low-buy: # 高低买入相关 threshold: # [ 低买入阀值,高买入阀值 ] ft3: [ 0.5, 0.8 ] ft6: [ 0.55, 0.8 ] ft9: [ 0.55, 0.8 ] reports: # 报告模块相关 navs: type: FUND tickers: - TEMTECI LX Equity - TEPLX US Equity - FRDPX US Equity - FKRCX US Equity - FTNRACU LX Equity benchmark: # benchmark报告 init-amount: 100 # 初始金额 stock-rate: # stock型基金比例 RR3: 0.3 RR4: 0.5 RR5: 0.7 fixed-range: # 固定区间收益率 range-dates: # 固定起始截止日期 - start: 2008-01-01 end: 2008-10-27 - start: 2011-05-02 end: 2011-10-04 - start: 2013-05-08 end: 2013-06-24 - start: 2014-09-03 end: 2014-12-16 - start: 2015-04-28 end: 2016-01-21 - start: 2018-01-26 end: 2018-10-29 - start: 2020-01-20 end: 2020-03-23 relative-range: # 相对区间收益率 range-dates: # 相对时间周期 - months: 1 name: '一个月' - months: 3 name: '三个月' - months: 6 name: '六个月' - years: 1 name: '一年' - years: 2 name: '两年' - years: 3 name: '三年' - years: 5 name: '五年' - years: 10 name: '十年' backtest: # 回测导出曹策略 exist-build: on # 如果报告文件存在,是否重新构建文件 save-path: ${EXPORT_PATH:excels} # 导出报告文件存放路径,如果以./或者../开头,则会以执行python文件为根目录,如果以/开头,则为系统绝对路径,否则,以项目目录为根目录 file-name: ${EXPORT_FILENAME:real} include-report: # 需要导出的报告类型列表,下面的顺序,也代表了excel中sheet的顺序 # - funds-report # 基金资料 # - navs-report # 净值报告 - hold-report # 持仓报告 - signal-report # 信号报告 - asset-pool-report # 基金池报告 - mpt-report # 最优投组报告 - benckmark-report # benckmark报告 - indicators-report # 各种特殊指标报告 - fixed-range-report # 固定区间收益报告 - relative-range-report # 相对区间收益报告 robo-executor: # 执行器相关 use: ${ROBO_EXECUTOR:real} # 执行哪个执行器,优先取系统环境变量ROBO_EXECUTOR的值,默认backtest sync-data: ${SYNC_DATA:on} # 是否开启同步资料数据 backtest: # 回测执行器相关 start-date: 2022-09-01 # 回测起始日期 end-date: 2023-02-20 # 回测截止日期 start-step: ${BACKTEST_START_STEP:4} # 回测从哪一步开始执行 1:计算资产ewma;2:计算资产池;3:计算最优投组:4:计算再平衡信号以及持仓投组 end-step: ${BACKTEST_END_STEP:4} # 回测从哪一步执行完成后结束执行 1:计算资产ewma;2:计算资产池;3:计算最优投组:4:计算再平衡信号以及持仓投组 clean-up: off real: # 实盘执行器 start-date: 2022-09-01 # 实盘开始时间 include-date: - 2023-02-18 - 2023-03-25 - 2023-06-17 - 2023-09-23 - 2008-01-05