示例#1
0
def jyfm_tools_futures_spread(type_1="RB",
                              type_2="RB",
                              code_1="01",
                              code_2="05",
                              headers="",
                              plot=True):
    """
    交易法门-工具-套利分析-跨期价差(自由价差)
    :param type_1: str
    :param type_2: str
    :param code_1: str
    :param code_2: str
    :param plot: Bool
    :return: pandas.Series or pic
    """
    csa_payload_his = csa_payload.copy()
    csa_payload_his.update({"type1": type_1})
    csa_payload_his.update({"type2": type_2})
    csa_payload_his.update({"code1": code_1})
    csa_payload_his.update({"code2": code_2})
    res = requests.get(csa_url_spread, params=csa_payload_his, headers=headers)
    data_json = res.json()
    data_df = pd.DataFrame([data_json["category"], data_json["value"]]).T
    data_df.index = pd.to_datetime(data_df.iloc[:, 0])
    data_df = data_df.iloc[:, 1]
    data_df.name = "value"
    if plot:
        data_df.plot()
        plt.legend(loc="best")
        plt.xlabel("date")
        plt.ylabel("value")
        plt.show()
        return data_df
    else:
        return data_df
示例#2
0
def jyfm_tools_futures_ratio(type_1="RB",
                             type_2="RB",
                             code_1="01",
                             code_2="05",
                             headers="",
                             plot=True):
    """
    交易法门-工具-套利分析-自由价比
    :param type_1: str
    :param type_2: str
    :param code_1: str
    :param code_2: str
    :param plot: Bool
    :return: pandas.Series or pic
    2013-01-04   -121
    2013-01-07   -124
    2013-01-08   -150
    2013-01-09   -143
    2013-01-10   -195
                 ...
    2019-10-21    116
    2019-10-22    126
    2019-10-23    123
    2019-10-24    126
    2019-10-25    134
    """
    csa_payload_his = csa_payload.copy()
    csa_payload_his.update({"type1": type_1})
    csa_payload_his.update({"type2": type_2})
    csa_payload_his.update({"code1": code_1})
    csa_payload_his.update({"code2": code_2})
    res = requests.get(csa_url_ratio, params=csa_payload_his, headers=headers)
    data_json = res.json()
    data_df = pd.DataFrame([data_json["category"], data_json["value"]]).T
    data_df.index = pd.to_datetime(data_df.iloc[:, 0])
    data_df = data_df.iloc[:, 1]
    data_df.name = "value"
    if plot:
        data_df.plot()
        plt.legend(loc="best")
        plt.xlabel("date")
        plt.ylabel("value")
        plt.show()
        return data_df
    else:
        return data_df
示例#3
0
def get_futures_csa_seasonally(type_1="RB", type_2="RB", code_1="01", code_2="05", plot=True, headers=""):
    """
    获取某两个合约的价差季节图
    :param type_1: str
    :param type_2: str
    :param code_1: str
    :param code_2: str
    :param plot: Bool
    :return: pd.DataFrame
                      year2019  year2018  year2017  year2016  year2015  year2014  \
    dataCategory
    01-02            452.0     406.0       NaN       NaN       NaN    -262.0
    01-03            408.0     409.0      90.0       NaN       NaN    -249.0
    01-04            380.0     412.0      50.0      60.0       NaN       NaN
    01-05              NaN     377.0      67.0      56.0      20.0       NaN
    01-06              NaN       NaN      48.0      80.0       1.0    -242.0
                    ...       ...       ...       ...       ...       ...
    12-27              NaN     490.0     298.0      -4.0       NaN       NaN
    12-28              NaN     448.0     383.0       NaN      77.0       NaN
    12-29              NaN       NaN     454.0      17.0      67.0      93.0
    12-30              NaN       NaN       NaN      56.0      63.0      44.0
    12-31              NaN       NaN       NaN       NaN      61.0       1.0
                  year2013
    dataCategory
    01-02              NaN
    01-03              NaN
    01-04           -121.0
    01-05              NaN
    01-06              NaN
                    ...
    12-27           -174.0
    12-28              NaN
    12-29              NaN
    12-30           -194.0
    12-31           -223.0
    """
    csa_payload_his = csa_payload.copy()
    csa_payload_his.update({"type1": type_1})
    csa_payload_his.update({"type2": type_2})
    csa_payload_his.update({"code1": code_1})
    csa_payload_his.update({"code2": code_2})
    res = requests.get(csa_url_spread, params=csa_payload_his, headers=headers)
    data_json = res.json()
    data_df = pd.DataFrame([data_json["category"], data_json["value"]]).T
    data_df.index = pd.to_datetime(data_df.iloc[:, 0])
    data_df = data_df.iloc[:, 1]
    data_df.name = "value"
    big_df = pd.DataFrame()
    name_list = []
    for item in list(data_json.keys()):
        if item not in ["category", "value"]:
            name_list.append(item)
            big_df = pd.concat([big_df, pd.DataFrame(data_json[item])], axis=1)
    big_df.columns = name_list
    big_df.index = big_df["dataCategory"]
    del big_df["dataCategory"]
    big_df.replace("NaN", np.nan, inplace=True)
    if plot:
        for item in big_df.columns:
            temp_df = big_df[item].dropna()
            temp_df.astype("float").plot()
        plt.legend(loc="best")
        plt.xlabel("date")
        plt.ylabel("value")
        plt.show()
        return big_df
    else:
        return big_df