コード例 #1
0
def Cal_AllIndex_HalfYear_Holding_Exposure(path, report_date):
    """
    计算重点指数最近一个半年报 的持仓风格暴露
    """
    # 参数举例
    #####################################################################
    # path = 'E:\\3_Data\\4_fund_data\\8_fund_index_exposure_weekly\\'
    # report_date = '20171231'
    # today = datetime.today().strftime("%Y%m%d")

    # 基金池
    #####################################################################
    index_pool_file = os.path.join(path, "fund_pool", '重点指数代码.csv')
    index_pool = pd.read_csv(index_pool_file, index_col=[0], encoding='gbk')
    date = Date().get_trade_date_offset(report_date, 0)
    beg_date = Date().get_trade_date_offset(report_date, -2)
    end_date = Date().get_trade_date_offset(report_date, 2)

    # 计算重点所有重点 基金最近一个半年报 的持仓风格暴露
    #####################################################################
    # 计算万德全A的基准 因为每早下载 这里就不重复下载
    # Index().load_weight_china_index_date(date)

    for i_index in range(len(index_pool)):

        index_code = index_pool.index[i_index]
        # 下载指数权重 因为每早下载 这里就不重复下载
        # if index_code not in ["000300.SH", '000905.SH', '881001.WI']:
        #     Index().load_weight_from_wind_date(index_code=index_code, date=date)
        Index().cal_index_exposure(index_code, beg_date, end_date)

        if i_index == 0:
            exposure = Index().get_index_exposure_date(index_code,
                                                       date,
                                                       type_list=["STYLE"])
            exposure["CTY"] = 1.0
        else:
            exposure_add = Index().get_index_exposure_date(index_code,
                                                           date,
                                                           type_list=["STYLE"])
            exposure_add["CTY"] = 1.0
            exposure = pd.concat([exposure, exposure_add], axis=0)

    #####################################################################
    exposure.index = index_pool.index_name
    exposure.loc["1/3*中小板综+1/3*创业板综+1/3*中证500", :] = exposure.loc[
        ["中小板综", "创业板综", "中证500"], :].mean()
    cols = list(exposure.columns)
    cols.insert(0, 'Type')
    exposure['Type'] = '市场指数'
    exposure = exposure[cols]
    exposure_file = os.path.join(
        path, "halfyear_holding_exposure",
        'IndexHalfYearExposure_' + report_date + '.csv')
    exposure.to_csv(exposure_file)
コード例 #2
0
def holding_data_liuxin(today, project_path, out_path):

    # 输入参数
    ##################################################################################
    # project_path = 'E:\\4_代码\\pycharmprojects\\timer\\input_data\\'
    # out_path = 'E:\\3_数据\\7_other_data\\0_mail_holding_all\\'
    person_name = 'liuxin'
    # today = datetime(2018, 6, 27).strftime("%Y%m%d")
    before_trade_data = Date().get_trade_date_offset(today, -1)
    today = Date().change_to_str(today)

    # 基金列表
    ##################################################################################
    fund = pd.read_excel(project_path + 'Manage_Fund_Name.xlsx',
                         encoding='gbk')
    fund_val = fund.ix[:, person_name]
    fund_val = fund_val.dropna()
    fund_list = list(fund_val.values)
    # fund_list.append("泰达宏利品质生活")

    # 基金持仓证券
    ##################################################################################

    fund_asset = MfcData().get_fund_security(before_trade_data)
    fund_asset = fund_asset[[
        '持仓日期', '序号', '基金名称', '证券代码', '证券名称', '证券类别', '市值', '市值比净值(%)', '持仓',
        '净买量', '净买金额', '费用合计', '当日涨跌幅(%)', '持仓多空标志', '估值价格', '最新价'
    ]]

    for i_fund in range(len(fund_list)):

        fund_name = fund_list[i_fund]
        fund_asset_fund = fund_asset[fund_asset['基金名称'] == fund_name]
        out_sub_path = os.path.join(out_path, person_name, today,
                                    "holding_data")
        if not os.path.exists(out_sub_path):
            os.makedirs(out_sub_path)
        out_file = os.path.join(out_sub_path, fund_name + '持仓.xlsx')
        fund_asset_fund.to_excel(out_file, index=None)

    # 股票库
    ##################################################################################
    pool_path = Parameter().get_load_out_file("Mfc_Data")
    pool_list = [
        "改革动力股票库.xls", "改革动力禁止库.xls", "改革动力限制库.xls", "公司超五库.xls", "公司股票库.xls",
        "公司关联库.xls", "公司禁止库.xls", "公司限制库.xls", "逆向股票库.xls", "逆向禁止库.xls",
        "逆向限制库.xls", "同顺禁止库.xls", "量化限制库.xls"
    ]

    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    if not os.path.exists(out_sub_path):
        os.makedirs(out_sub_path)

    for i_file in range(len(pool_list)):

        file = pool_list[i_file]
        src_file = os.path.join(pool_path, 'raw_file', today, file)
        out_file = os.path.join(out_sub_path, file)
        try:
            shutil.copyfile(src_file, out_file)
        except:
            pd.DataFrame([]).to_excel(out_file)

    # 指数权重 Axioma
    ##################################################################################
    index_code_list = [
        "000300.SH", "000905.SH", "000016.SH", "881001.WI",
        'China_Index_Benchmark'
    ]
    out_sub_path = os.path.join(out_path, person_name, today, "index_weight")
    if not os.path.exists(out_sub_path):
        os.makedirs(out_sub_path)

    for index_code in index_code_list:
        data = Index().get_weight(index_code, before_trade_data)
        out_file = os.path.join(out_sub_path, index_code + '.csv')
        data.index = data.index.map(lambda x: x[0:6] + '-CN')
        data.to_csv(out_file, header=None)
コード例 #3
0
ファイル: holding_main.py プロジェクト: easy00000000/quant
    def holding_data_for_manager(self, person_name='liuyang'):
        """
        holding_data 中包含 基金资产、单个基金证券、股票池
        index_weight 为指数权重
        """

        # 输入参数
        print(" Prepare Data For ", person_name)
        before_trade_data = Date().get_trade_date_offset(self.today, -1)

        # 基金列表
        fund = MfcData().get_mfc_manage_info()
        fund_val = fund[person_name]
        fund_val = fund_val.dropna()
        fund_list = list(fund_val.values)

        # 基金资产
        fund_asset = MfcData().get_fund_asset(before_trade_data)
        fund_asset = fund_asset[[
            '序号', '统计日期', '基金编号', '基金名称', '股票资产', '净值', '基金份额', '单位净值',
            '单位净值涨跌幅(%)', '累计单位净值', '昨日单位净值', '当日股票收益率(%)', '当日股票净买入金额',
            '股票资产/净值(%)', '当前现金余额', '累计应收金额', '累计应付金额', '期货保证金账户余额', '期货保证金',
            '可用期货保证金', '保证金', 'T+0交易可用', 'T+1交易可用', 'T+0交易可用/净值(%)',
            'T+1交易可用/净值(%)'
        ]]

        fund_asset_fund = fund_asset[fund_asset['基金名称'].map(
            lambda x: x in fund_list)]
        out_sub_path = os.path.join(self.data_path, person_name, self.today,
                                    "holding_data")
        if not os.path.exists(out_sub_path):
            os.makedirs(out_sub_path)
        out_file = os.path.join(out_sub_path, '基金资产.xlsx')
        fund_asset_fund.to_excel(out_file, index=None)

        # 基金持仓证券
        fund_asset = MfcData().get_fund_security(before_trade_data)
        fund_asset = fund_asset[[
            '持仓日期', '序号', '基金名称', '证券代码', '证券名称', '证券类别', '市值', '市值比净值(%)',
            '持仓', '净买量', '净买金额', '费用合计', '当日涨跌幅(%)', '持仓多空标志', '估值价格', '最新价'
        ]]

        for i_fund in range(len(fund_list)):

            fund_name = fund_list[i_fund]
            fund_asset_fund = fund_asset[fund_asset['基金名称'] == fund_name]
            out_file = os.path.join(out_sub_path, fund_name + '持仓.xlsx')
            fund_asset_fund.to_excel(out_file, index=None)

        # 股票库
        pool_path = MfcData().data_path
        pool_path = os.path.join(pool_path, r"mfc_holding_raw\201806_now")

        if person_name == 'liuyang':

            pool_list = [
                "改革动力股票库.xls", "改革动力禁止库.xls", "改革动力限制库.xls", "公司超五库.xls",
                "公司股票库.xls", "公司关联库.xls", "公司禁止库.xls", "公司限制库.xls",
                "逆向股票库.xls", "逆向禁止库.xls", "逆向限制库.xls", "同顺禁止库.xls",
                "量化限制库.xls", '沪深300关联禁止库.xls', '沪深300投资库.xls', '沪深300限制库.xls',
                '中证500关联禁止库.xls', '中证500投资库.xls', '中证500限制库.xls'
            ]

        elif person_name == 'liuxin':

            pool_list = [
                "改革动力股票库.xls", "改革动力禁止库.xls", "改革动力限制库.xls", "公司超五库.xls",
                "公司股票库.xls", "公司关联库.xls", "公司禁止库.xls", "公司限制库.xls",
                "逆向股票库.xls", "逆向禁止库.xls", "逆向限制库.xls", "同顺禁止库.xls",
                "量化限制库.xls", '红利禁止库.xls'
            ]
        elif person_name == 'caolongjie':

            pool_list = [
                "公司超五库.xls", "公司股票库.xls", "公司关联库.xls", "公司禁止库.xls",
                "公司限制库.xls", "专户禁止库.xls", "量化11号禁止库.xls", "人寿固收限制库.xls",
                "人寿固收禁止库(委托人发送).xls", "量化限制库.xls"
            ]

        for i_file in range(len(pool_list)):

            file = pool_list[i_file]
            src_file = os.path.join(pool_path, 'raw_file', self.today, file)
            out_file = os.path.join(out_sub_path, file)
            try:
                shutil.copyfile(src_file, out_file)
            except Exception as e:
                print(e)
                print(src_file)
                print(out_file)
                pd.DataFrame([]).to_excel(out_file)

        # 指数权重 Axioma
        out_sub_path = os.path.join(self.data_path, person_name, self.today,
                                    "index_weight")
        if not os.path.exists(out_sub_path):
            os.makedirs(out_sub_path)

        for index_code in self.index_code_list:
            data = Index().get_weight_date(index_code, before_trade_data)
            out_file = os.path.join(out_sub_path, index_code + '.csv')
            data.index = data.index.map(lambda x: x[0:6] + '-CN')
            data = data.sort_values(by=['WEIGHT'], ascending=False)
            data.to_csv(out_file, header=None)
コード例 #4
0
def holding_data_clj(today, project_path, out_path):

    # 输入参数
    ##################################################################################
    # project_path = 'E:\\4_代码\\pycharmprojects\\timer\\input_data\\'
    # out_path = 'E:\\3_数据\\7_other_data\\0_mail_holding_all\\'
    person_name = 'caolongjie'
    before_trade_data = Date().get_trade_date_offset(today, -1)
    today = Date().change_to_str(today)

    # 基金列表
    ##################################################################################
    fund = pd.read_excel(project_path + 'Manage_Fund_Name.xlsx',
                         encoding='gbk')
    fund_val = fund.ix[:, person_name]
    fund_val = fund_val.dropna()
    fund_list = list(fund_val.values)

    # 基金持仓证券
    ##################################################################################

    fund_asset = MfcData().get_fund_security(before_trade_data)
    fund_asset = fund_asset[[
        '持仓日期', '序号', '基金名称', '证券代码', '证券名称', '证券类别', '市值', '市值比净值(%)', '持仓',
        '净买量', '净买金额', '费用合计', '当日涨跌幅(%)', '持仓多空标志', '估值价格', '最新价'
    ]]

    for i_fund in range(len(fund_list)):

        fund_name = fund_list[i_fund]
        fund_asset_fund = fund_asset[fund_asset['基金名称'] == fund_name]
        out_sub_path = os.path.join(out_path, person_name, today,
                                    "holding_data")
        if not os.path.exists(out_sub_path):
            os.mkdir(out_sub_path)
        out_file = os.path.join(out_sub_path, fund_name + '持仓.xlsx')
        fund_asset_fund.to_excel(out_file, index=None)

    # 基金资产
    ##################################################################################
    fund_asset = MfcData().get_fund_asset(before_trade_data)
    fund_asset = fund_asset[[
        '序号', '统计日期', '基金编号', '基金名称', '股票资产', '净值', '基金份额', '单位净值',
        '单位净值涨跌幅(%)', '累计单位净值', '昨日单位净值', '当日股票收益率(%)', '当日股票净买入金额',
        '股票资产/净值(%)', '当前现金余额', '累计应收金额', '累计应付金额', '期货保证金账户余额', '期货保证金',
        '可用期货保证金', '保证金'
    ]]

    fund_asset_fund = fund_asset[fund_asset['基金名称'].map(
        lambda x: x in fund_list)]
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    if not os.path.exists(out_sub_path):
        os.mkdir(out_sub_path)
    out_file = os.path.join(out_sub_path, '基金资产.xlsx')
    fund_asset_fund.to_excel(out_file, index=None)

    # 股票库
    ##################################################################################
    pool_path = Parameter().get_load_out_file("Mfc_Data")
    pool_list = [
        "公司超五库.xls", "公司股票库.xls", "公司关联库.xls", "公司禁止库.xls", "公司限制库.xls",
        "专户禁止库.xls", "量化11号禁止库.xls", "人寿固收限制库.xls", "人寿固收禁止库(委托人发送).xls",
        "量化限制库.xls"
    ]

    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    for i_file in range(len(pool_list)):

        file = pool_list[i_file]
        src_file = os.path.join(pool_path, 'raw_file', today, file)
        out_file = os.path.join(out_sub_path, file)
        try:
            shutil.copyfile(src_file, out_file)
        except:
            pd.DataFrame([]).to_excel(out_file)

    # 股票库 英文
    ##################################################################################
    pool_path = Parameter().get_load_out_file("Mfc_Data")
    pool_list = {
        "公司禁止库.xls": "Company Forbidden Pool.csv",
        "公司关联库.xls": "Company Related Pool.csv",
        "公司限制库.xls": "Company Limited Pool.csv"
    }
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    for scr_file, out_file in pool_list.items():

        src_file = os.path.join(pool_path, 'raw_file', before_trade_data,
                                scr_file)
        out_file = os.path.join(out_sub_path, out_file)
        data = pd.read_excel(src_file, index_col=[0])
        data.index = data['证券代码'].map(stock_code_add_postfix)
        data.index = data.index.map(lambda x: x[0:6] + '-CN')
        data['Status'] = 1.0
        data.to_csv(out_file, header=None, columns=['Status'])

    # Recent IPO Stock.csv
    ##################################################################################
    ipo_date_pd = Stock().get_ipo_date()
    beg_date = (datetime.strptime(today, '%Y%m%d') -
                timedelta(days=365)).strftime("%Y%m%d")
    ipo_date_pd = ipo_date_pd[ipo_date_pd['IPO_DATE'] > beg_date]
    ipo_date_pd.loc[:, 'IPO_DATE'] = 1.0
    ipo_date_pd.index = ipo_date_pd.index.map(lambda x: x[0:6] + '-CN')

    filename = 'Recent IPO Stock.csv'
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    print('loading ', filename, ' ......')
    ipo_date_pd.to_csv(os.path.join(out_sub_path, filename),
                       header=None,
                       columns=['IPO_DATE'])

    # Suspended List.csv
    ##################################################################################

    status_data = Stock().get_trade_status_date(today)
    ipo_date_pd = Stock().get_ipo_date()
    data = pd.concat([status_data, ipo_date_pd], axis=1)
    data = data.dropna()
    data = data[data['DELIST_DATE'] >= today]
    data['Trade_Status'] = 1.0
    data.index = data.index.map(lambda x: x[0:6] + '-CN')

    filename = 'Suspended List.csv'
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    print('loading ', filename, ' ......')
    data.to_csv(os.path.join(out_sub_path, filename),
                header=None,
                columns=['Trade_Status'])

    # CSI500 Benchmark.csv 5.5 现金
    ##################################################################################
    data = Index().get_weight("000905.SH", before_trade_data)
    data.index = data.index.map(lambda x: x[0:6] + '-CN')
    data['WEIGHT'] *= 94.5
    result = pd.DataFrame([5.5], index=["CSH_CNY"], columns=['WEIGHT'])
    result = pd.concat([result, data], axis=0)

    filename = 'CSI500 Benchmark.csv'
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    print('loading ', filename, ' ......')
    result.to_csv(os.path.join(out_sub_path, filename),
                  header=None,
                  columns=['WEIGHT'])

    # 指数权重 Axioma
    ##################################################################################
    index_code_list = ["000300.SH", "000905.SH", "000016.SH", "881001.WI"]
    out_sub_path = os.path.join(out_path, person_name, today, "index_weight")
    if not os.path.exists(out_sub_path):
        os.makedirs(out_sub_path)

    for index_code in index_code_list:
        data = Index().get_weight(index_code, before_trade_data)
        out_file = os.path.join(out_sub_path, index_code + '.csv')
        data.index = data.index.map(lambda x: x[0:6] + '-CN')
        data.to_csv(out_file, header=None)

    # 英文持仓情况
    ##################################################################################

    en_holding_dict = {"建行中国人寿中证500管理计划": "China Life Insurance Portfolio.csv"}
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    fund_sec = MfcData().get_fund_security(before_trade_data)

    for name, out_file in en_holding_dict.items():

        fund_sec_one = fund_sec[fund_sec['基金名称'] == name]
        fund_sec_one = fund_sec_one[fund_sec_one['证券类别'] == '股票']
        fund_sec_one = fund_sec_one[['证券代码', '持仓']]
        fund_sec_one.index = fund_sec_one['证券代码'].map(stock_code_add_postfix)
        fund_sec_one.index = fund_sec_one.index.map(lambda x: x[0:6] + '-CN')
        out_file = os.path.join(out_sub_path, out_file)
        fund_sec_one.to_csv(out_file, header=None, columns=['持仓'])
コード例 #5
0
def holding_data_yangchao(today, project_path, out_path):

    # 输入参数
    ##################################################################################
    person_name = 'yangchao'
    before_trade_data = Date().get_trade_date_offset(today, -1)
    today = Date().change_to_str(today)

    # 基金列表
    ##################################################################################
    fund = pd.read_excel(project_path + 'Manage_Fund_Name.xlsx',
                         encoding='gbk')
    fund_val = fund.ix[:, person_name]
    fund_val = fund_val.dropna()
    fund_list = list(fund_val.values)

    # 基金持仓证券
    ##################################################################################

    fund_asset = MfcData().get_group_security(before_trade_data)
    fund_asset = fund_asset[[
        '日期', '组合名称', '基金名称', '证券代码', '证券名称', '持仓', '市值比净值(%)', '盈亏率(%)',
        '证券类别', '当日买金额', '当日卖金额', '资产单元名称', '持仓多空标志'
    ]]

    for i_fund in range(len(fund_list)):

        fund_name = fund_list[i_fund]
        fund_asset_fund = fund_asset[fund_asset['基金名称'] == fund_name]
        out_sub_path = os.path.join(out_path, person_name, today,
                                    "holding_data")
        if not os.path.exists(out_sub_path):
            os.mkdir(out_sub_path)
        out_file = os.path.join(out_sub_path, fund_name + '.csv')
        fund_asset_fund.to_csv(out_file, index=None)

    # 绝对收益组合资产
    ##################################################################################
    group_name = 'yangchao_group'
    fund_val = fund.ix[:, group_name]
    fund_val = fund_val.dropna()
    fund_list = list(fund_val.values)

    fund_asset = MfcData().get_group_security(before_trade_data)
    fund_asset = fund_asset[[
        '日期', '组合名称', '基金名称', '证券代码', '证券名称', '持仓', '市值比净值(%)', '盈亏率(%)',
        '证券类别', '当日买金额', '当日卖金额', '资产单元名称', '持仓多空标志'
    ]]

    for i_fund in range(len(fund_list)):

        fund_name = fund_list[i_fund]
        one_fund = fund_asset[fund_asset['组合名称'] == fund_name]
        out_sub_path = os.path.join(out_path, person_name, today,
                                    "holding_data")
        if not os.path.exists(out_sub_path):
            os.mkdir(out_sub_path)
        if fund_name == '绝对收益期货组合':
            fund_name = "绝对收益股指期货组合"
        out_file = os.path.join(out_sub_path, fund_name + '.csv')
        one_fund.to_csv(out_file)

    # 股票库
    ##################################################################################
    pool_path = Parameter().get_load_out_file("Mfc_Data")
    pool_list = [
        "公司超五库.xls", "公司股票库.xls", "公司关联库.xls", "公司禁止库.xls", "公司限制库.xls",
        "绝对收益禁止库.xls", "绝对收益投资库.xls", "量化限制库.xls"
    ]

    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    for i_file in range(len(pool_list)):

        file = pool_list[i_file]
        src_file = os.path.join(pool_path, 'raw_file', today, file)
        out_file = os.path.join(out_sub_path, file)
        try:
            shutil.copyfile(src_file, out_file)
        except:
            pd.DataFrame().to_excel(out_file)

    # 股票库 英文
    ##################################################################################
    pool_path = Parameter().get_load_out_file("Mfc_Data")
    pool_list = {
        "公司禁止库.xls": "Company Forbidden Pool.csv",
        "公司关联库.xls": "Company Related Pool.csv",
        "公司限制库.xls": "Company Limited Pool.csv",
        "公司股票库.xls": "Company Investment Pool.csv",
        "绝对收益禁止库.xls": "ABS Fund Forbidden Pool.csv",
        "绝对收益投资库.xls": "ABS Fund Investment Pool.csv",
        "量化限制库.xls": "Quantitative Limited Pool.csv"
    }
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    for scr_file, out_file in pool_list.items():

        src_file = os.path.join(pool_path, 'raw_file', before_trade_data,
                                scr_file)
        out_file = os.path.join(out_sub_path, out_file)
        data = pd.read_excel(src_file, index_col=[0])
        data.index = data['证券代码'].map(stock_code_add_postfix)
        data.index = data.index.map(lambda x: x[0:6] + '-CN')
        data['Status'] = 1.0
        data.to_csv(out_file, header=None, columns=['Status'])

    # 股票库 Company Investment Pool.csv 包括公司股票库和公司超5库
    ##################################################################################
    stock_pool_file = os.path.join(pool_path, 'raw_file', before_trade_data,
                                   "公司股票库.xls")
    stock_pool = pd.read_excel(stock_pool_file, index_col=[0])
    stock_pool.index = stock_pool['证券代码'].map(stock_code_add_postfix)
    stock_pool.index = stock_pool.index.map(lambda x: x[0:6] + '-CN')
    stock_pool['Status'] = 1.0

    stock_5_pool_file = os.path.join(pool_path, 'raw_file', before_trade_data,
                                     "公司超五库.xls")
    stock_5_pool = pd.read_excel(stock_5_pool_file, index_col=[0])
    stock_5_pool.index = stock_5_pool['证券代码'].map(stock_code_add_postfix)
    stock_5_pool.index = stock_5_pool.index.map(lambda x: x[0:6] + '-CN')
    stock_5_pool['Status'] = 1.0

    out_file = os.path.join(out_sub_path, "Company Investment Pool.csv")
    res = pd.concat([stock_5_pool['Status'], stock_pool['Status']], axis=0)
    res.to_csv(out_file, header=None)

    # Recent IPO Stock.csv
    ##################################################################################
    ipo_date_pd = Stock().get_ipo_date()
    beg_date = (datetime.strptime(today, '%Y%m%d') -
                timedelta(days=365)).strftime("%Y%m%d")
    ipo_date_pd = ipo_date_pd[ipo_date_pd['IPO_DATE'] > beg_date]
    ipo_date_pd.loc[:, 'IPO_DATE'] = 1.0
    ipo_date_pd.index = ipo_date_pd.index.map(lambda x: x[0:6] + '-CN')

    filename = 'Recent IPO Stock.csv'
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    print('loading ', filename, ' ......')
    ipo_date_pd.to_csv(os.path.join(out_sub_path, filename),
                       header=None,
                       columns=['IPO_DATE'])

    # Suspended List.csv
    ##################################################################################

    status_data = Stock().get_trade_status_date(today)
    ipo_date_pd = Stock().get_ipo_date()
    data = pd.concat([status_data, ipo_date_pd], axis=1)
    data = data.dropna()
    data = data[data['DELIST_DATE'] >= today]
    data['Trade_Status'] = 1.0
    data.index = data.index.map(lambda x: x[0:6] + '-CN')

    filename = 'Suspended List.csv'
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    print('loading ', filename, ' ......')
    data.to_csv(os.path.join(out_sub_path, filename),
                header=None,
                columns=['Trade_Status'])

    # Benchmark.csv 5.5 现金
    ##################################################################################
    benchmark_dict = {
        "000905.SH": "CSI500 Benchmark.csv",
        "000300.SH": "CSI300 Benchmark.csv",
        "000016.SH": "CSI50 Benchmark.csv"
    }

    for index_code, out_file in benchmark_dict.items():

        data = Index().get_weight(index_code, before_trade_data)
        data.index = data.index.map(lambda x: x[0:6] + '-CN')
        data['WEIGHT'] *= 94.5
        result = pd.DataFrame([5.5], index=["CSH_CNY"], columns=['WEIGHT'])
        result = pd.concat([result, data], axis=0)

        out_sub_path = os.path.join(out_path, person_name, today,
                                    "holding_data")
        result.to_csv(os.path.join(out_sub_path, out_file),
                      header=None,
                      columns=['WEIGHT'])

    # 英文持仓情况
    ##################################################################################

    en_holding_dict = {
        "泰达宏利量化增强": "Quantitative Enhencement portfolio.csv",
        "泰达宏利业绩驱动量化": "Quantitative Earning Drive.csv",
        "泰达新思路": "New Thinking Portfolio.csv",
        "泰达宏利集利债券": "High Dividend Bond Equity.csv",
        "泰达宏利沪深300": "CSI300 Portfolio.csv",
        "泰达中证500指数分级": "CSI500 Portfolio.csv"
    }
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    fund_sec = MfcData().get_fund_security(before_trade_data)

    for name, out_file in en_holding_dict.items():

        fund_sec_one = fund_sec[fund_sec['基金名称'] == name]
        fund_sec_one = fund_sec_one[fund_sec_one['证券类别'] == '股票']
        fund_sec_one = fund_sec_one[['证券代码', '持仓']]
        fund_sec_one.index = fund_sec_one['证券代码'].map(stock_code_add_postfix)
        fund_sec_one.index = fund_sec_one.index.map(lambda x: x[0:6] + '-CN')
        print(fund_sec_one)
        if out_file != "High Dividend Bond Equity.csv":
            asset = MfcData().get_fund_asset(before_trade_data)
            asset.index = asset['基金名称']
            asset = asset[~asset.index.duplicated()]
            fund_sec_one = fund_sec_one[~fund_sec_one.index.duplicated()]
            fund_sec_one.ix['CSH_CNY', "持仓"] = asset.ix[name, "当前现金余额"]
        out_file = os.path.join(out_sub_path, out_file)
        fund_sec_one['持仓'] = fund_sec_one['持仓'].round(0)
        fund_sec_one.to_csv(out_file, header=None, columns=['持仓'])

    # 英文绝对收益持仓情况
    ##################################################################################

    en_holding_dict = {
        "绝对收益50对冲股票组合": "Absolute Return Strategy CSI50 Portfolio.csv",
        "绝对收益300对冲股票组合": "Absolute Return Strategy CSI300 Portfolio.csv",
        "绝对收益500对冲股票组合": "Absolute Return Strategy CSI500 Portfolio.csv",
    }
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    fund_sec = MfcData().get_group_security(before_trade_data)

    for name, out_file in en_holding_dict.items():

        fund_sec_one = fund_sec[fund_sec['组合名称'] == name]
        fund_sec_one = fund_sec_one[fund_sec_one['证券类别'] == '股票']
        fund_sec_one = fund_sec_one[['证券代码', '持仓']]
        fund_sec_one.index = fund_sec_one['证券代码'].map(stock_code_add_postfix)
        fund_sec_one.index = fund_sec_one.index.map(lambda x: x[0:6] + '-CN')
        out_file = os.path.join(out_sub_path, out_file)
        fund_sec_one.to_csv(out_file, header=None, columns=['持仓'])

    # China Market Index.csv
    ##################################################################################
    data = Index().get_weight("China_Index_Benchmark", before_trade_data)
    out_file = "China Market Index.csv"
    data.index = data.index.map(lambda x: x[0:6] + '-CN')
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    data.to_csv(os.path.join(out_sub_path, out_file),
                header=None,
                columns=['WEIGHT'])

    # Monitor 基金证券
    ##################################################################################
    en_holding_dict = {"泰达中证500指数分级": "CSI500 Monitor.csv"}
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")

    fund_sec = MfcData().get_fund_security(before_trade_data)

    for name, out_file in en_holding_dict.items():

        fund_sec_one = fund_sec[fund_sec['基金名称'] == name]
        fund_sec_one = fund_sec_one[fund_sec_one['证券类别'] == '股票']
        fund_sec_one = fund_sec_one[['证券代码', '持仓']]
        fund_sec_one.columns = ['STOCK_CODE', 'HOLDING']
        fund_sec_one.index = fund_sec_one['STOCK_CODE'].map(
            stock_code_add_postfix)
        out_file = os.path.join(out_sub_path, out_file)
        fund_sec_one.to_csv(out_file, columns=['HOLDING'])

    # Monitor 组合证券 绝对收益
    ##################################################################################
    out_sub_path = os.path.join(out_path, person_name, today, "holding_data")
    en_holding_dict = {
        "绝对收益50对冲股票组合": "Absolute Trading Monitor CSI50.csv",
        "绝对收益300对冲股票组合": "Absolute Trading Monitor CSI300.csv",
        "绝对收益500对冲股票组合": "Absolute Trading Monitor CSI500.csv",
        "绝对收益期货组合": "Absolute Monitor Option.csv",
    }
    fund_sec = MfcData().get_group_security(before_trade_data)

    for name, out_file in en_holding_dict.items():

        fund_sec_one = fund_sec[fund_sec['组合名称'] == name]
        # fund_sec_one = fund_sec_one[fund_sec_one['资产类别'] == '股票资产']
        fund_sec_one = fund_sec_one[['证券代码', '持仓']]
        fund_sec_one.columns = ['STOCK_CODE', 'HOLDING']
        if name != "绝对收益期货组合":
            fund_sec_one.index = fund_sec_one['STOCK_CODE'].map(
                stock_code_add_postfix)
        else:
            fund_sec_one.index = fund_sec_one['STOCK_CODE']
        out_file = os.path.join(out_sub_path, out_file)
        fund_sec_one.to_csv(out_file, columns=['HOLDING'])