Commit a3a72361 authored by jichao's avatar jichao

625回测

parent 891e922e
import json import json
from datetime import datetime as dt
from typing import List
from py_jftech import component, parse_date, get_config, to_tuple import pandas as pd
from py_jftech import component, parse_date, get_config, to_tuple, autowired
from api import DatumType, Datum, PortfoliosRisk from api import DatumType, Datum, PortfoliosRisk, RoboReportor
from basic.dao import robo_base_datum as rbd from basic.dao import robo_base_datum as rbd
...@@ -43,3 +46,21 @@ class DefaultDatum(Datum): ...@@ -43,3 +46,21 @@ class DefaultDatum(Datum):
if risk is PortfoliosRisk.FT9: if risk is PortfoliosRisk.FT9:
return risk3 + self.get_datums(type=DatumType.FUND, risk=(4, 5)) return risk3 + self.get_datums(type=DatumType.FUND, risk=(4, 5))
return None return None
@component(bean_name='funds-report')
class FundReportor(RoboReportor):
@autowired
def __init__(self, datum: Datum = None):
self._datum = datum
@property
def report_name(self) -> str:
return '基金资料'
def load_report(self, max_date=dt.today(), min_date=None) -> List[dict]:
datums = self._datum.get_datums(type=DatumType.FUND)
datums = pd.DataFrame(datums)
datums = datums[['id', 'ftTicker', 'bloombergTicker', 'chineseName', 'englishName', 'lipperKey', 'isin', 'currency', 'risk', 'inceptDate', 'category', 'assetType']]
return datums.to_dict('records')
...@@ -38,6 +38,11 @@ class BasicTest(unittest.TestCase): ...@@ -38,6 +38,11 @@ class BasicTest(unittest.TestCase):
result = report.load_report() result = report.load_report()
logger.info(to_str(result)) logger.info(to_str(result))
@autowired(names={'report': 'funds-report'})
def test_export_funds(self, report: RoboReportor = None):
result = report.load_report()
logger.info(to_str(result))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -208,17 +208,18 @@ reports: # 报告模块相关 ...@@ -208,17 +208,18 @@ reports: # 报告模块相关
backtest: # 回测导出曹策略 backtest: # 回测导出曹策略
exist-build: on # 如果报告文件存在,是否重新构建文件 exist-build: on # 如果报告文件存在,是否重新构建文件
save-path: ${EXPORT_PATH:excels} # 导出报告文件存放路径,如果以./或者../开头,则会以执行python文件为根目录,如果以/开头,则为系统绝对路径,否则,以项目目录为根目录 save-path: ${EXPORT_PATH:excels} # 导出报告文件存放路径,如果以./或者../开头,则会以执行python文件为根目录,如果以/开头,则为系统绝对路径,否则,以项目目录为根目录
file-name: ${EXPORT_FILENAME:backtest} file-name: ${EXPORT_FILENAME:fund_infos}
include-report: # 需要导出的报告类型列表,下面的顺序,也代表了excel中sheet的顺序 include-report: # 需要导出的报告类型列表,下面的顺序,也代表了excel中sheet的顺序
- funds-report # 基金资料
# - navs-report # 净值报告 # - navs-report # 净值报告
- hold-report # 持仓报告 # - hold-report # 持仓报告
- signal-report # 信号报告 # - signal-report # 信号报告
- asset-pool-report # 基金池报告 # - asset-pool-report # 基金池报告
- mpt-report # 最优投组报告 # - mpt-report # 最优投组报告
- benckmark-report # benckmark报告 # - benckmark-report # benckmark报告
- indicators-report # 各种特殊指标报告 # - indicators-report # 各种特殊指标报告
- fixed-range-report # 固定区间收益报告 # - fixed-range-report # 固定区间收益报告
- relative-range-report # 相对区间收益报告 # - relative-range-report # 相对区间收益报告
robo-executor: # 执行器相关 robo-executor: # 执行器相关
use: ${ROBO_EXECUTOR:backtest} #执行哪个执行器,优先取系统环境变量ROBO_EXECUTOR的值,默认backtest use: ${ROBO_EXECUTOR:backtest} #执行哪个执行器,优先取系统环境变量ROBO_EXECUTOR的值,默认backtest
sync-data: ${SYNC_DATA:off} sync-data: ${SYNC_DATA:off}
......
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