货币供应量M1M2与上证综合指数之间的相关性图示

本文通过Baostock数据平台获取了货币供应量M1和M2以及上证综合指数的历史数据,分析两者是否存在关联。结果显示,货币供应量稳定增长,而上证指数波动较大,两者相关性不大。

通过baostock数据平台获取了货币供应量M1和M2的历史数据,并且获取了相同时间内上证综合指数的数据,来分析两者是不是存在关联。

绘制出图像如下,可以看出两者几乎没有什么相关性,货币供应量一直稳定地在增长,从80万亿一直增长到160万亿。几乎是一条直线,而上证指数的波动就比较大,时常有图上的暴涨暴跌。

代码如下:

import baostock as bs
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime


def get_szzs_his_data(startDate, endDate):
    """获取历史上证指数数据"""
    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    # 获取上增指数
    rs = bs.query_history_k_data("sh.000001",
                                 "date,close",
                                 start_date=startDate, end_date=endDate,
                                 frequency="d", adjustflag="3")
    print('query_history_k_data respond error_code:' + rs.error_code)
    print('query_history_k_data respond  error_msg:' + rs.error_msg)

    # 打印结果集
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)

    # 登出系统
    bs.logout()
    return result


def get_money_supply(startDate, endDate):
    # 获取货币供应量
    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:'+lg.error_code)
    print('login respond  error_msg:'+lg.error_msg)

    # 获取货币供应量
    rs = bs.query_money_supply_data_month(
        start_date=startDate, end_date=endDate)
    print('query_money_supply_data_month respond error_code:'+rs.error_code)
    print('query_money_supply_data_month respond  error_msg:'+rs.error_msg)

    # 打印结果集
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)

    # 登出系统
    bs.logout()
    return result


def plot_two_curve_line(tradingDateList, y1, y2, titletext='pic', y1name=u'y1', y2name=u'y2'):
    """根据日期,画出相同时间序列的两个值的曲线"""

    # 将不同量纲的两个值转化为相似的数量级
    multi_num = y1[-1] / y2[-1]
    y2 = [y * multi_num for y in y2]

    x1 = range(len(tradingDateList))

    datelable = []
    for i_days in range(len(tradingDateList)):
        tradingdate = tradingDateList[i_days]
        date = int(tradingdate[8:])
#         print date
#         if date %10 == 0:
        if date == 1:
            datelable.append(tradingdate)
        else:
            datelable.append("")

    x1 = np.array(x1)
    y1 = np.array(y1)
    y2 = np.array(y2)

    fig, ax = plt.subplots()
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    plt.xticks(x1, datelable, rotation=30)
    ax.plot(x1, y1, color='r', label=y1name)
    ax.plot(x1, y2, color='y', label=y2name)
    plt.title(titletext)
#     plt.legend((y1name, y2name))

    # 显示在右上角
    ax.legend(loc=1)

    plt.show()


def plot_money_supply_and_szzs():
    """  画出szzs和货币供应量之间的相关指数 """
    startdate = "2012-01-05"
    endate = "2018-07-02"

    szzsData = get_szzs_his_data(startdate, endate)
    datelist = szzsData.loc[:, 'date']
    close = szzsData.loc[:, 'close']

    money_suppy_data = get_money_supply("2012-01", "2018-08")
    money_supply_yearlist = money_suppy_data.loc[:, 'statYear'].astype('int')
    money_supply_monthlist = money_suppy_data.loc[:, 'statMonth'].astype('int')
    money_supply_data = money_suppy_data.loc[:, 'm2Month']
    print(len(datelist), len(money_supply_yearlist), len(money_supply_data))

    modified_datelist = []
    modified_szzslist = []
    modified_money_supply_hisdata = []

    i = 0
    j = 0
    # 对其日期 将不同时间序列的数据 转化为同一时间序列的数据。
    while True:
        if i == len(datelist) and j == len(money_supply_yearlist):
            break
        szzs_stat_year = datetime.datetime.strptime(datelist[i], "%Y-%m-%d").year
        szzs_stat_month = datetime.datetime.strptime(datelist[i], "%Y-%m-%d").month
        # 如果szzs的日期和货币供应的年,月相等,则提取该值。
        if szzs_stat_year == money_supply_yearlist[j] and szzs_stat_month == money_supply_monthlist[j]:
            print(szzs_stat_year, money_supply_yearlist[j], szzs_stat_month, money_supply_monthlist[j])
            modified_datelist.append(datelist[i])
            modified_szzslist.append(float(close[i]))
            modified_money_supply_hisdata.append(float(money_supply_data[j]))
            i += 1
            j += 1
        elif szzs_stat_year < money_supply_yearlist[j] or (szzs_stat_year == money_supply_yearlist[j] and szzs_stat_month < money_supply_monthlist[j]):
            i += 1
        elif szzs_stat_year > money_supply_yearlist[j] or (szzs_stat_year == money_supply_yearlist[j] and szzs_stat_month > money_supply_monthlist[j]):
            j += 1
        else:
            print(szzs_stat_year, money_supply_yearlist[j], szzs_stat_month, money_supply_monthlist[j])
            print("error")

    print(len(modified_datelist), len(
        modified_money_supply_hisdata), len(modified_szzslist))
    plot_two_curve_line(modified_datelist, modified_money_supply_hisdata, modified_szzslist, titletext=u'货币供应量和上证指数历史走势图', y1name=u'货币供应量M2(单位:亿元)',
                        y2name=u'上证指数')


if __name__ == '__main__':
    plot_money_supply_and_szzs()

 

Consider the GM example (on page 19 of the lecture note). Use simulation-based heuristic (on page 24 of the lecture note) to design a suitable flexibility structure. Write the the details of your solution procedure, and attach the pseudo code. You can use any programming language to implement the algorithm. TEAM SIZE: It is recommended that each team consist of four students; and a team of three is also acceptable. Each team just needs to submit one report (a standalone pdf file). Please fill your team information in the webform(https://1drv.ms/x/c/ 4164e72a822aff72/EchzFadREYdCjiql52IdrS8BSoHtWzONZpiJxev-guY9Yw?e=rohNF4). If you need help in finding teammates, just fill your information in the blue area of the form and I will assist you. Hint: We are not testing you how to generate truncated multivariate normal variables. Find the solution on the internet if you cannot get one by yourself. 第19页:真实数据(GM) 需求: 使用截断正态分布(±2σ),标准差为平均值的40%。 分组: A到F为紧凑型车。 G到M为全尺寸车。 N到P为豪华车。 相关性: 组内相关性为0.3。 组间相关性为零。 容量需求图: 左侧的数字表示不同工厂的容量。 右侧的字母表示不同产品的需求。 连线表示工厂可以生产哪些产品。 第24页:链接方法2 一般情况: 使用基于模拟的启发式方法。 运行模拟: 评估每个产品的预期损失销售量。 评估每个工厂的预期利用容量。 将损失销售量最大的产品未充分利用的工厂连接起来。 重复: 重复上述步骤,直到达到满意的匹配。 图示: 左侧和右侧的图示展示了产品工厂之间的连接关系,通过调整连接来优化匹配。 这种方法通过模拟和启发式算法,帮助找到最佳的产能需求匹配方案,以最小化销售损失和最大化工厂利用率。
最新发布
11-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值