si_sseci

隱藏或顯示代碼

In [142]:
%%HTML
<button onclick="$('.input, .prompt, .output_stderr, .output_error, .output_result').toggle();">点我隐藏或显示代码</button>

最好投资股票的方法是买指数基金 -- 巴菲特

1993年|致股东的信

“通过定期投资指数基金,一个什么都不懂的投资者通常都能打败大部分的专业基金经理。”

1996年|致股东的信

“如果让我提供一点心得给各位参考,我认为,大部分的投资者,不管是机构投资者还是个人投资者,投资股票最好的方式是直接去买手续费低廉的指数型基金,而且这样做的收益(在扣除相关费用后),应该可以轻易地击败市场上大部分的投资专家。”

1999年|巴菲特书评

《共同基金常识》:“要想获得最大可能的市场收益率,就必须降低买入和持有基金的成本,而投资者要做的,就是买入运行成本低、没有或很少有佣金的基金,尤其是低成本的指数基金,然后持有尽可能长的时间。” 巴菲特对该书给予的评价:“令人信服,非常中肯且切中时弊,这是每个投资者必读的书籍。”

2003年|致股东的信

“那些收费非常低廉的指数基金,在产品设计上是非常适合投资者的,对于大多数想要投资股票的人来说,收费很低的指数基金是最理想的选择。”

2004年|致股东的信

“过去35年来,美国企业创造了优异的业绩,按理说股票投资者也应该相应取得优异的收益,只要大家以分散且低成本的方式投资所有美国企业即可分享其优异业绩,通过投资指数基金就可以做到,但绝大多数投资者很少投资指数基金,结果他们投资股票的业绩大多只是平平而已,甚至亏得惨不忍睹。我认为主要有三个原因:第一,成本太高,投资者买入卖出过于频繁,或者费用支出过大;第二,投资决策是根据小道消息或市场潮流,而不是根据深思熟虑并且量化分析上市公司;第三,盲目追涨杀跌,在错误的时间进入或退出股市。”

2007年|CNBC电视采访

“对于绝大多数没有时间研究上市公司基本面的中小投资者来说,成本低廉的指数基金是他们投资股市的最佳选择。” “如果你坚持长期持续定期买入指数基金,你可能不会买在最低点,但你同样也不会买在最高点。”

2008年|伯克希尔股东大会

Tim Ferriss提问:“如果你只有30岁,没有其他经济依靠,只能靠一份全日制工作谋生,没有办法每天进行投资,假设你已经有些储蓄足够你一年半的生活开支,那么你攒的第一个100万将会如何投资?” 巴菲特回答:“我会把所有的钱都投资到一个低成本的跟踪标准普尔500指数的指数基金,然后继续努力工作……”

2008年|巴菲特百万美元大赌指数基金

巴菲特个人和主要投资于对冲基金的普罗蒂杰公司立下一个十年慈善赌局,2008年至2017年长期投资一只标准普尔500指数基金的收益将会跑赢普罗蒂杰公司精心选择的5只对冲基金组合,赌金为100万美元。2015年,Ted Seides基金宣布提前认输,巴菲特提前胜利。

2014年|致股东的信

“我对信托公司的要求非常简单:持有10%的现金购买短期政府债券,另外90%配置在低费率的标普500指数基金上。我相信遵守这个策略,信托的长期业绩会战胜大多数聘请了高费率管理人的投资者——无论是养老金、机构还是个人。”

2015年|致股东的信

“6年前(2009年)有权威人士警告股价会下跌,建议你投资‘安全’的国债或者银行存单。如果你真的听了这些劝告,那么现在只有微薄的回报,如果你当时买了一些低成本的指数基金,现在的回报能保证有不错的生活(标普500指数6年前约700点,现在约2100点)。

2018年|腐朽的资本主义国家的投资人的话

未必适合中国国情, please go on ...

配置环境

导入依赖包

In [143]:
import psycopg2
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DayLocator, HourLocator, DateFormatter, drange, MonthLocator, YearLocator
from matplotlib import ticker 
import datetime as dt
import matplotlib
from pylab import * 
from matplotlib.font_manager import *
forcn = FontProperties(fname='/usr/share/fonts/truetype/arphic/ukai.ttc', size=14)
matplotlib.rcParams['axes.unicode_minus'] = False

配置字典

In [144]:
index_dict = {
      '000001': '上证指数'
    , '000002': 'A股指数'
    , '000003': 'B股指数'
    , '000016': '上证50'
    , '000300': '沪深300'
    , '399001': '深证成指'
    , '399002': '深成指R'
    , '399003': '成份B指'
    , '399006': '创业板指'
    , '399102': '创业板综'
    , '399106': '深证综指'
}

连接数据库

In [145]:
conn = psycopg2.connect(database="demo", user="demo", password="demo", host="www.jasper.wang", port="1234")
cur = conn.cursor()

单独指数浏览

初步查看数据

In [146]:
sql1 = '''SELECT * FROM public.v_si_index where checkor is not null order by index_date;'''
data = pd.read_sql(sql1, conn,)
conn.commit()
df = DataFrame(data)
datas=df.head(1)
print(datas)
   index_date  checkor  checkand  pclose_000001  pamount_000001  \
0  1990-12-19    99.98       NaN          99.98        494000.0   

   pclose_000002  pamount_000002  pclose_000003  pamount_000003  \
0          99.98        494000.0            NaN             NaN   

   pclose_000016       ...        pclose_399002  pamount_399002  \
0            NaN       ...                  NaN             NaN   

   pclose_399003  pamount_399003  pclose_399006  pamount_399006  \
0            NaN             NaN            NaN             NaN   

   pclose_399102  pamount_399102  pclose_399106  pamount_399106  
0            NaN             NaN            NaN             NaN  

[1 rows x 25 columns]

000001 上证综指

In [147]:
Xdate=df.iloc[0:, 0:1]
Pclose=df.iloc[0:, 3:4]
Pamount=df.iloc[0:, 4:5]
titlelist = df.columns.values.tolist()
for k, v in index_dict.items():
    if titlelist[3][-6:] == k:
        label = v
figure(figsize=(16,8), dpi=80)

ax1=plt.subplot(211)
l1,=plt.plot(Xdate, Pclose, 'b-', lw=0.5, label=label+'收盘价')
plt.setp(ax1.get_xticklabels(), fontsize=14)
plt.setp(ax1.get_yticklabels(), fontsize=14)
ax1 = gca()
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax1.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax1.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax1.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax1.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax1.legend(handles=[l1, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pclose.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 3].tolist()[0]
mt = str(md)+', '+str(mv)
ax1.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 

ax2=plt.subplot(212, sharex=ax1)
l2,=plt.plot(Xdate, Pamount, 'r-', lw=0.5, label=label+'成交额')
plt.setp(ax2.get_xticklabels(), fontsize=14)
plt.setp(ax2.get_yticklabels(), fontsize=14)
ax2 = gca()
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax2.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax2.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax2.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax2.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax2.legend(handles=[l2, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pamount.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 4].tolist()[0]
mt = str(md)+', '+str(mv)
ax2.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
plt.text(Xdate.iloc[3600][0], 860000000000, 'www.jasper.wang\nwelcome', style='oblique', ha='center', fontsize=20, color='blue')
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)
plt.show()

000002 A股指数

In [148]:
Xdate=df.iloc[0:, 0:1]
Pclose=df.iloc[0:, 5:6]
Pamount=df.iloc[0:, 6:7]
titlelist = df.columns.values.tolist()
for k, v in index_dict.items():
    if titlelist[5][-6:] == k:
        label = v
figure(figsize=(16,8), dpi=80)
ax1=plt.subplot(211)
l1,=plt.plot(Xdate, Pclose, 'b-', lw=0.5, label=label+'收盘价')
plt.setp(ax1.get_xticklabels(), fontsize=14)
plt.setp(ax1.get_yticklabels(), fontsize=14)
ax1 = gca()
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax1.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax1.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax1.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax1.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax1.legend(handles=[l1, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pclose.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 5].tolist()[0]
mt = str(md)+', '+str(mv)
ax1.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
ax2=plt.subplot(212, sharex=ax1)
l2,=plt.plot(Xdate, Pamount, 'r-', lw=0.5, label=label+'成交额')
plt.setp(ax2.get_xticklabels(), fontsize=14)
plt.setp(ax2.get_yticklabels(), fontsize=14)
ax2 = gca()
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax2.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax2.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax2.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax2.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax2.legend(handles=[l2, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pamount.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 6].tolist()[0]
mt = str(md)+', '+str(mv)
ax2.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
plt.text(Xdate.iloc[3600][0], 860000000000, 'www.jasper.wang\nwelcome', style='oblique', ha='center', fontsize=20, color='blue')
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)
plt.show()

000003 B股指数

In [149]:
Xdate=df.iloc[0:, 0:1]
Pclose=df.iloc[0:, 7:8]
Pamount=df.iloc[0:, 8:9]
titlelist = df.columns.values.tolist()
for k, v in index_dict.items():
    if titlelist[7][-6:] == k:
        label = v
figure(figsize=(16,8), dpi=80)
ax1=plt.subplot(211)
l1,=plt.plot(Xdate, Pclose, 'b-', lw=0.5, label=label+'收盘价')
plt.setp(ax1.get_xticklabels(), fontsize=14)
plt.setp(ax1.get_yticklabels(), fontsize=14)
ax1 = gca()
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax1.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax1.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax1.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax1.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax1.legend(handles=[l1, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pclose.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 7].tolist()[0]
mt = str(md)+', '+str(mv)
ax1.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
ax2=plt.subplot(212, sharex=ax1)
l2,=plt.plot(Xdate, Pamount, 'r-', lw=0.5, label=label+'成交额')
plt.setp(ax2.get_xticklabels(), fontsize=14)
plt.setp(ax2.get_yticklabels(), fontsize=14)
ax2 = gca()
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax2.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax2.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax2.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax2.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax2.legend(handles=[l2, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pamount.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 8].tolist()[0]
mt = str(md)+', '+str(mv)
ax2.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
plt.text(Xdate.iloc[5000][0], 7000000000, 'www.jasper.wang\nwelcome', style='oblique', ha='center', fontsize=20, color='blue')
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)
plt.show()

000016 上证50

  • 挑选A股市场中最具代表性的50只股票组成,俗称“超级大蓝筹指数”。
  • 即上海证券市场规模大、流动性好的最具代表性的50只股票组成样本股,综合反映上海证券市场最具市场影响力的一批龙头企业的整体状况。
  • 于2004年1月2日起正式发布,目标是建立一个成交活跃、规模较大、主要作为衍生金融工具基础的投资指数。
    • 2018年5月最新上证50股票发布:
1 2 3 4 5
浦发银行 (600000) 民生银行 (600016) 宝钢股份 (600019) 中国石化 (600028) 南方航空 (600029)
中信证券 (600030) 招商银行 (600036) 保利地产 (600048) 中国联通 (600050) 上汽集团 (600104)
北方稀土 (600111) 万华化学 (600309) 华夏幸福 (600340) 康美药业 (600518) 贵州茅台 (600519)
山东黄金 (600547) 绿地控股 (600606) 海通证券 (600837) 伊利股份 (600887) 江苏银行 (600919)
东方证券 (600958) 招商证券 (600999) 大秦铁路 (601006) 中国神华 (601088) 兴业银行 (601166)
北京银行 (601169) 中国铁建 (601186) 国泰君安 (601211) 上海银行 (601229) 农业银行 (601288)
中国平安 (601318) 交通银行 (601328) 新华保险 (601336) 中国中铁 (601390) 工商银行 (601398)
中国太保 (601601) 中国人寿 (601628) 中国建筑 (601668) 中国电建 (601669) 华泰证券 (601688)
中国中车 (601766) 中国交建 (601800) 光大银行 (601818) 中国石油 (601857) 浙商证券 (601878)
中国银河 (601881) 中国核电 (601985) 中国银行 (601988) 中国重工 (601989) 洛阳钼业 (603993)
In [150]:
Xdate=df.iloc[0:, 0:1]
Pclose=df.iloc[0:, 9:10]
Pamount=df.iloc[0:, 10:11]
titlelist = df.columns.values.tolist()
for k, v in index_dict.items():
    if titlelist[9][-6:] == k:
        label = v
figure(figsize=(16,8), dpi=80)
ax1=plt.subplot(211)
l1,=plt.plot(Xdate, Pclose, 'b-', lw=0.5, label=label+'收盘价')
plt.setp(ax1.get_xticklabels(), fontsize=14)
plt.setp(ax1.get_yticklabels(), fontsize=14)
ax1 = gca()
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax1.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax1.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax1.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax1.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax1.legend(handles=[l1, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pclose.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 9].tolist()[0]
mt = str(md)+', '+str(mv)
ax1.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
ax2=plt.subplot(212, sharex=ax1)
l2,=plt.plot(Xdate, Pamount, 'r-', lw=0.5, label=label+'成交额')
plt.setp(ax2.get_xticklabels(), fontsize=14)
plt.setp(ax2.get_yticklabels(), fontsize=14)
ax2 = gca()
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.grid(which = 'both' , color='k', linestyle='--', linewidth=0.3)
ax2.xaxis.set_major_locator(ticker.MultipleLocator(730))
ax2.xaxis.set_minor_locator(ticker.MultipleLocator(365))
ax2.xaxis.set_major_formatter(DateFormatter('%Y%m'))
ax2.set_xlim(Xdate.iloc[0][0]-relativedelta(months=+6), Xdate.iloc[-1][0]+relativedelta(years=+1))
ax2.legend(handles=[l2, ], loc = 2, frameon=False, prop=forcn)
max_pc = Pamount.idxmax()
md = df.iloc[max_pc, 0].tolist()[0]
mv = df.iloc[max_pc, 10].tolist()[0]
mt = str(md)+', '+str(mv)
ax2.annotate(
      mt, fontproperties=forcn
    , xy=(md, mv)
    , xycoords='data'
    , xytext=(-240, -16)
    , textcoords='offset points'
    , fontsize=16
    , arrowprops=dict(
          facecolor='black'
        , shrink=0.005
        , width=2
        , headlength=5
        , headwidth=8
    )
) 
plt.text(Xdate.iloc[3600][0], 300000000000, 'www.jasper.wang\nwelcome', style='oblique', ha='center', fontsize=20, color='blue')
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)
plt.show()