python 股票策略

1- 讀倉位信息:

(1)先簡單存到dic中,時間是倒序抡四,在構(gòu)造time_list中reverse即可
(2) str,int轉(zhuǎn)換 int(''.join(str1.split('-'))

def read_date(file_name):
    df_all = pd.read_excel(file_name+'.xlsx',header=None)

    df_all = df_all.dropna(axis=0,how='all')
    df_all.columns = ['股票代碼','股票名稱','占基金凈值比(%)']
    df_all = df_all.reset_index(drop=True)
    judge = df_all[df_all.iloc[:,0] == '股票代碼']

    dic = {}
    for i,s_index in enumerate(judge.index):
        time = df_all['股票代碼'].iloc[s_index-1]
        time = ''.join(time.split('-'))
        if s_index != judge.index[-1]:
            df_temp = df_all.iloc[s_index+1:judge.index[i+1]-1,:]
        else:
            df_temp = df_all.iloc[s_index+1:,:]
        dic[time] = df_temp

    return dic

2- 讀取收盤價:

取出來后的數(shù)據(jù)轉(zhuǎn)格式:
df_close_f = df_close.pivot(index='時間',columns='股票代碼',values='CLOSE')
取tb_object_1425 賦權(quán)收盤價腕够,代碼略

3- 計算股票端收益率:

(1) df.pct_change(1)計算股票個券收益率
(2) 用np.dot(df_r,df_pos) 矩陣計算蜂桶,得到股票端收益率
(3) 用矩陣計算要實現(xiàn)對齊數(shù)據(jù)s_index = df_pos['股票代碼'] \ df_r = df_r.loc[:,s_index]
或用自定義函數(shù)ircp.ORDER_LIST(): df = df.set_index(target_columns) \ df = df.loc[s_index,:] \ df = df.reset_index()

def get_stock_r(dic, dic_close):
    time_list = list(dic.keys())
    time_list.reverse()

    dic_stock_r  ={}
    for time  in time_list:
        df_pos = dic[time]
        df_pos = df_pos.dropna()
        df_close = dic_close[time]
        df_r = df_close.pct_change(1)
        df_r = df_r.dropna()

        # df_r的 columns 和 df_pos 的index 要匹配
        s_index = df_pos['股票代碼']
        df_r = df_r.loc[:,s_index]

        # 提高計算精度几晤,收益率乘以100
        np_stock_r = np.dot(np.array(df_r), np.array(df_pos['占基金凈值比(%)']))
        df_stock_r = pd.DataFrame(np_stock_r,index=df_r.index,columns=['stock_r'])
        dic_stock_r[time] = df_stock_r

    return dic_stock_r

4- 運行策略:

(1)逐漸建倉 倉位 np.linspace(0,0.8,len(xxx)
(2)非滿倉下認為投貨幣基金
(3)series 是對應(yīng)位置加減盛撑,dataframe與series運算.add, .sub , .div 再復(fù)雜的運算可轉(zhuǎn)為array檬姥,進行換算曾我, 注意換算后是否要轉(zhuǎn)置

def run_strategy(dic_stock_r, s_date):
    time_list = list(dic_stock_r.keys())
    start_date = int(time_list[0])
    end_date = ircp.CLOSE_DATE(s_date,freq='quarter')
    money_fund = 。健民。抒巢。

    df_r = pd.DataFrame()   # 記錄最后的總收益
    for time in time_list:
        df_stock_r = dic_stock_r[time]
        df_stock_r.index = df_stock_r.index.astype(int)
        df_fund_r = money_fund.loc[df_stock_r.index, 'N_RETURN']
        df_fund_r = (df_fund_r - 1) * 100  # 提高計算精度,收益率乘以100
        # 第一期逐漸建倉
        if time == time_list[0]:
            # 期末倉位0.8秉犹,期間倉位逐漸遞增
            # 是占凈值的比例蛉谜,要根據(jù)0.8折算
            stock_pos = np.linspace(0,0.8,len(df_stock_r))
            fund_pos = 1-stock_pos
            df_r_temp = np.array(df_stock_r.T)*stock_pos/0.8 + np.array(df_fund_r.T)*fund_pos
            df_r_temp = pd.DataFrame(df_r_temp.T,index=df_stock_r.index,columns=['r'])
        else:
            # 0.8的股票倉位 0.2 的貨幣基金倉位 是占凈值的比例,不用再乘以0.8
            df_r_temp = (df_stock_r ).add(df_fund_r * 0.2,axis=0)
            df_r_temp.columns = ['r']
        df_r = pd.concat([df_r,df_r_temp],axis=0)
        print(time)
    print('整體收益率提取完成')
    return df_r

5- 策略評判:

(1)最大回撤
(2)真實收益
(3)基準
(4)勝率
(5)平均年化收益率

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崇堵,一起剝皮案震驚了整個濱河市型诚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸳劳,老刑警劉巖狰贯,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赏廓,居然都是意外死亡涵紊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門楚昭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栖袋,“玉大人,你說我怎么就攤上這事抚太√练” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵尿贫,是天一觀的道長电媳。 經(jīng)常有香客問我,道長庆亡,這世上最難降的妖魔是什么匾乓? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮又谋,結(jié)果婚禮上拼缝,老公的妹妹穿的比我還像新娘。我一直安慰自己彰亥,他們只是感情好咧七,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著任斋,像睡著了一般继阻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天瘟檩,我揣著相機與錄音抹缕,去河邊找鬼。 笑死墨辛,一個胖子當著我的面吹牛卓研,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播背蟆,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼鉴分,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了带膀?” 一聲冷哼從身側(cè)響起志珍,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垛叨,沒想到半個月后伦糯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嗽元,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年敛纲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剂癌。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡淤翔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出佩谷,到底是詐尸還是另有隱情旁壮,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布谐檀,位于F島的核電站抡谐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桐猬。R本人自食惡果不足惜麦撵,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溃肪。 院中可真熱鬧免胃,春花似錦、人聲如沸惫撰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽润绎。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莉撇,已是汗流浹背呢蛤。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棍郎,地道東北人其障。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像涂佃,于是被迫代替她去往敵國和親励翼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350