简单股票选股公式分析评测函数

import pandas as pd
import os

def Quant(funs,name):
    K_path='data/K'
    files=[files for root, dirs, files in os.walk(K_path)][0]
    outdf=pd.DataFrame()
    for file in files:
        path=os.path.join(K_path, file)
        df=pd.read_csv(path,encoding="gbk",index_col = 0,parse_dates=['日期'])
        df = funs(df)
        df['Buy'] = df["开盘"].shift(-1)
        for i in range(8):
            if i == 0:
                continue
            elif i==1:
                df['sell_%d' %i]=df["开盘"].shift(-2)
            else:
                df['sell_%d' %i]=df['收盘'].shift(-i)
        df_new=df[df[name]]
        outdf=outdf.append(df_new)
    if len(outdf)==0:
        print('从未出现')
        return outdf
    order={}
    for i in range(8):
        if i !=0:
            sy=outdf['sell_%d' %i]/outdf['Buy']

            order['第%d日' %i]={
                '出现总次数(次)':len(outdf),
                '成功次数(次)':sum(sy>1),
                '平均收益率(%)':((sy-1)*100).mean(),
                '累计收益率(%)':(sy.prod()-1)*100,
                '盈亏比':(sy[sy>1].mean()-1)/(1-sy[sy<1].mean()),
                '成功率':round(sum(sy>1)/len(outdf)*100,0)
                }
    order_df=pd.DataFrame(order).T
    order_df['%s'%name]=name
    order_df.to_csv('temp/%s量化.csv' %name,encoding='gbk')
    return order_df

从data/K目录读取历史K线数据,数据包含日期、开盘、收盘、最高、最低等价格信息。返回分析结果并保存为csv文件。参数funs为选股函数名,name为选股函数对结果的标记名称。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值