//导入所需的包

import xxx(所用数据库)
import pandas as pd
import matplotlib.pylab as plt
import statsmodels.api as sm

//创建dictionary,包含目标股票,大盘,开始截止日期

parm = {'firm': 'TSLA', 'index': 'SPY', 'startdate': '2012-04-01', 'enddate': '2022-03-31'}

//连接wrds数据库
db = xxx.Connection(xxx_username = yourname)

//自建函数,获得目标股票历年日价
def get_daily_stock_price_us(p):
  df = db.raw_sql("""SELECT a.date, a.prc
                  FROM crsp.dsf a 
                  LEFT JOIN crsp.dsfhdr b
                  ON a.permno = b.permno
                  WHERE b.htsymbol = %(firm)s and a.date >= %(startdate)s and a.date <= %(enddate)s""", 
                  params = p, date_cols = ['date'])
  return df

daily_price_firm = get_daily_stock_price_us(parm)
daily_price_firm = daily_price_firm.rename(columns = {"prc": parm['firm']})

//描述性统计

daily_price_firm.describe()

//自建函数,获取大盘每日点数

def get_daily_index_price(p):
  df = db.raw_sql("""SELECT a.date, a.prc
                         FROM crsp.dsf a left join crsp.dsfhdr b
                         ON a.permno = b.permno
                         WHERE b.htsymbol = %(index)s and a.date >= %(startdate)s and a.date <= %(enddate)s""",
                         params = p, date_cols = ['date'])
  return df

daily_index_price = get_daily_index_price(parm)
daily_index_price = daily_index_price.rename(columns = {"prc": parm['index']})

//将目标日价与大盘每日点数两张表合并成一张

df1 = daily_price_firm.merge(daily_index_price, left_on = 'date', right_on = 'date')

//日期从date型转成datetime型

daily_price_firm['date'] = pd.to_datetime(df1['date']).dt.date
daily_index_price['date'] = pd.to_datetime(df1['date']).dt.date
df1['date'] = pd.to_datetime(df1['date']).dt.date

//计算目标股票日价与大盘点数变动趋势之间的相关系数

df1.corr()

//绘制大盘点数历年变动趋势

daily_price_firm.set_index('date').plot(kind = 'line',
            figsize = (12, 4),
            legend = False,
            title = f"{parm['firm']}'s Price History")
plt.show()

//计算以数据所包含期间内第一天目标股票日价为基础,大盘历年来每日对应股价

df1['SP500_rebased'] = df1['TSLA'][0] / df1['SPY'][0] * df1['SPY']
del df1['SPY']

//绘制目标股票日价与大盘每日对应股价趋势的组合图

df1.set_index('date').plot(kind = 'line',
        figsize = (12, 6),
        legend = True,
        title = 'Price History')
plt.show()

//自建函数,获取目标股票历年月回报率

def get_stock_return_monthly(p):
  df = db.raw_sql("""SELECT a.date, a.ret
                  FROM crsp.msf a 
                  LEFT JOIN crsp.dsfhdr b
                  ON a.permno = b.permno
                  WHERE b.htsymbol = %(firm)s and a.date >= %(startdate)s and a.date <= %(enddate)s""", 
                  params = p, date_cols = ['date'])
  return df

Tesla = get_stock_return_monthly(parm)

//自建函数,获取大盘历年来月回报率

def get_index_return_monthly(p):
  df = db.raw_sql("""SELECT date, sprtrn
                    FROM crsp.msi
                    WHERE date >= %(startdate)s and date <= %(enddate)s""", 
                    params = p, date_cols = ['date'])
  return df

SP500 = get_index_return_monthly(parm)

//线性回归,计算目标股票的CAPM模型,并绘散点+线性拟合图
X = SP500['sprtrn']
Y = Tesla['ret']
X = sm.add_constant(X)
model = sm.OLS(Y, X).fit()
print(model.summary())
predictions = model.predict(X)
model.params
print(f"The beta of {parm['firm']} is {model.params[1]}")

df2 = pd.concat([X, Y], axis = 1)

ax = df2.plot(x = 'sprtrn', y = 'ret', kind = 'scatter')
plt.scatter(X['sprtrn'], Y)
plt.xlabel("S&P 500 Return")
plt.ylabel("Tesla Return")
plt.plot(X['sprtrn'], predictions, "r")
plt.show()

//绘图分析发行发行目标股票公司的资产结构

def plot_assets(p):
  stk_assets = db.raw_sql("""SELECT a.fyear, a.che, a.rect, a.invt, a.ppegt, a.intan
                            FROM comp.funda a
                            LEFT JOIN comp.names b
                            ON a.gvkey = b.gvkey
                            WHERE b.tic = %(firm)s and a.datafmt = 'STD' and a.consol = 'C' and a.indfmt = 'INDL' and a.fyear >= 2012 and a.fyear <= 2021""", 
                            params = p)
  stk_assets['fyear'] = stk_assets['fyear'].astype(int)
  stk_assets = stk_assets.set_index('fyear')
  stk_assets['intan'] = stk_assets['intan'].fillna(0).astype(int)
  stk_assets[['che', 'rect', 'invt', 'ppegt', 'intan']].plot.area().set_title('Stucture of Assets')
plot_assets(parm)

//最后断开与数据库的连接

db.close()

Python分析股票行情代码相关推荐

  1. 【机器学习】使用CatBoost库分析股票行情(指标为RSI、Boll、MACD和MA)并输出因子占比分析

    文章目录 前言 一.CatBoost是什么? 二.准备工作 2.1 MyTT 2.2 获取日K数据 2.3 安装CatBoost 三. 使用CatBoost库分析股票行情(完整源码) 总结 前言 随着 ...

  2. python 行情数据,拼多多股票:Python获取股票行情数据的一种方法

    Python获取股票行情数据的一种方法 拼多多股票 本号帮大家找了一个可免费获取股票行情数据的接口. Tushare社区目前主要维护新版本:tushare pro,数据更稳定拼多多股票质量更高,可获取 ...

  3. 如何去使用Python分析股票数据?学到就是赚到

    对于炒股的同学来说,必须会看懂数据才能避免入坑.今天小千就来教大家如何去使用Python分析股票数据,学到就是赚到.(小千提醒,股市有风险,请谨慎投资) 这次的美股例子就选择了美国显卡制造商英伟达,其 ...

  4. 同花顺python_专题研究|量化交易怎么少得了GUI!手把手教你用 Python 打造股票行情分析界面...

    开场 Python 的出现可以帮助我们快速解决实际的问题,提高工作效率. 如果给Python 脚本加上一个GUI 的话,不仅可以进一步提升使用效率(不用每次停止运行去修改参数),而且还能把自己程序分享 ...

  5. 用python编写能够分析股票行情的程序

    首先,你需要获取股票行情数据.这可以通过访问股票交易所的网站或者使用第三方的财经数据提供商的 API 来实现. 然后,你可以使用 Python 的一些科学计算库如 NumPy 和 pandas 来帮助 ...

  6. python股票分析入门_学习用Python分析股票数据(入门)

    学习使用python来分析股票,主要事涉及数据获取.数据可视化,以及探究数据中各项指标的含义及和关系.使用工具 pandas.numpy.datatime pandas-datareader 在线获取 ...

  7. python分析股票主力_python如何获取股票数据,python股票分析系统

    内容导航: Q1:怎样用python处理股票 用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare:一个国内股票数据获取包.可以在百度中搜索&qu ...

  8. python分析股票数据 彤_Python数据分析:股票数据

    最近股市比较火,我7月初上车了,现在已经下了.中间虽然吃了点肉,但下车的时候都亏进去了,最后连点汤都没喝着. 这篇文章我们就用它python 对股票数据做个简单的分析.数据集是从1999年到2016年 ...

  9. Python实现股票行情接收V013

    最近做了一些调整和功能的增加,主要体现在如下方面: 1.解析新浪行情的所有数据: class QuoteData:def __init__(self):self.id = ''self.rawLine ...

最新文章

  1. 【latex】输入角度符号°
  2. 【无标题】Kafka副本管理—— 为何去掉replica.lag.max.messages参数
  3. 基于Starling的mask实现
  4. SpringMVC 异常的处理
  5. 网络技术员所任职的不同工作
  6. python matplotlib调整图像比例
  7. 深入浅出讲解梯度消失和梯度爆炸问题(原因、解决方法)
  8. 服务器cpu和普通cpu性能,服务器cpu排行(为什么服务器cpu不适合家用)
  9. 508. Most Frequent Subtree Sum
  10. Canopen协议 (1):网络状态管理(NMT)
  11. 百度可观测系列 | 如何构建亿级指标的高可用 TSDB 存储集群?
  12. 随机事件和概率及概率的性质
  13. PHP 浏览器下载文件
  14. axios 美[æk‘sioʊz]
  15. 使用ARP欺骗, 截取局域网中任意一台机器的网页请求,破解用户名密码等信息
  16. Java二维数组声明与初始化
  17. C# 实现打印机功能
  18. 音速启动 便携 csdn_在安全模式下启动便携式Firefox
  19. tiktok x-tt-params
  20. 【BX学习之丰巢智能柜】 丰巢智能柜的收费标准

热门文章

  1. QT QVectorQPairQString, qint64 qSort 排序
  2. 关于MySQL错误提示ERROR 1265 (01000)的问题分析及解决方案
  3. telnet远程管理及AAA认证方式
  4. linux模拟手机号码,虚拟手机号码接收短信
  5. 高级数据结构1—初识树状数组—快速求得前缀和和修改某一元素值
  6. Codeup——577 | 问题 C: 等腰梯形
  7. 监控摄像头参数详细介绍
  8. erron变量、strerror函数 和 perror 函数
  9. C语言程序设计(第三版)
  10. 儿童护眼灯怎么选?儿童护眼灯品牌排行榜