4.11 FPC • FPC 指标选股
来源:https://uqer.io/community/share/55a4bcb4f9f06c6dd1e17f19
import pandas as pd
fields = ['tradeDate', 'secID', 'OperatingProfitRatio', 'ROE', 'InventoryTRate', 'ARTRate', 'TotalAssetsTRate', 'OperatingRevenueGrowRate', 'OperatingProfitGrowRate', 'NetProfitGrowRate', 'NetAssetGrowRate', 'DebtsAssetRatio', 'CurrentRatio', 'QuickRatio']
weights = [15.0, 20.0, 0.07, 0.07, 0.06, 8.0, 8.0, 8.0, 8.0, 0.07, 0.07, 0.07]
def FPCCalculator(x):
sumRes = 0
for name, weight in zip(fields[2:], weights):
sumRes += x[name] * weight
return sumRes
start = '2011-01-01' # 回测起始时间
end = '2015-01-01' # 回测结束时间
benchmark = 'HS300' # 策略参考标准
universe = set_universe('HS300', start) # 证券池,回测支持股票和基金
capital_base = 100000000 # 起始资金
refresh_rate = 60 # 调仓频率,即每 refresh_rate 个交易日执行一次 handle_data() 函数
def initialize(account): # 初始化虚拟账户状态
pass
def handle_data(account): # 每个交易日的买入卖出指令
hist = account.get_attribute_history('closePrice',1)
print account.current_date
today = account.current_date
cal = Calendar('China.SSE')
referenceDate = cal.advanceDate(today, '-1b', BizDayConvention.Preceding).strftime('%Y%m%d')
res = pd.DataFrame()
for stock in account.universe:
data = DataAPI.MktStockFactorsDateRangeGet(secID=stock, beginDate=referenceDate, endDate=referenceDate, field=fields)
res = res.append(data.dropna())
res = res.reset_index(drop=True)
res = res.set_index('secID')
ind = DataAPI.EquIndustryGet(secID=res.index.values, industryVersionCD='010303', intoDate=referenceDate)
ind = ind.set_index('secID')
res['industry'] = ind.industryName1
res['score'] = res.apply(FPCCalculator, 1)
grouped = res[['industry', 'score']].groupby('industry')
buyList = []
# 只选行业中股票个数大于5个行业分类
for key, group in grouped:
if len(group) >= 5:
group['score'] = group['score'] - group['score'].mean()
group = group.sort('score', ascending=False)
buyList.append((key, group.index[0], group.score[0]))
# 先卖出
for stock in account.valid_secpos:
order_to(stock, 0)
# 再买入
totalValue = account.referencePortfolioValue
cashForEachStock = totalValue / (len(buyList) + 1)
for key, name, score in buyList:
amount = int(cashForEachStock / hist[name] / 100) * 100
print "{0:<20s}: {1:s}, {2:f}, {3:d}".format(key, name, score, amount)
order(name, amount)
2011-01-05 00:00:00
交运设备 : 600418.XSHG, 277.876645, 640800
交通运输 : 600350.XSHG, 33.614389, 1559300
信息服务 : 600271.XSHG, 19.515397, 249400
公用事业 : 600863.XSHG, 261.666837, 1671100
农林牧渔 : 000061.XSHE, 15.004222, 658100
化工 : 000422.XSHE, 187.995211, 475200
医药生物 : 002007.XSHE, 67.818000, 135500
商业贸易 : 002024.XSHE, 12.686739, 495900
家用电器 : 000651.XSHE, 6.061078, 822600
建筑建材 : 600528.XSHG, 33.795187, 709800
房地产 : 600266.XSHG, 44.695256, 637600
有色金属 : 600547.XSHG, 417.523861, 120400
机械设备 : 000039.XSHE, 35.414604, 295900
采掘 : 000933.XSHE, 46.406670, 398200
食品饮料 : 000858.XSHE, 19.308545, 203000
2011-04-08 00:00:00
交运设备 : 000927.XSHE, 128.086565, 783700
交通运输 : 601111.XSHG, 40.021770, 609200
信息服务 : 600271.XSHG, 18.897618, 284900
公用事业 : 600863.XSHG, 264.298228, 1622300
农林牧渔 : 000061.XSHE, 15.004222, 649600
化工 : 000422.XSHE, 11.132274, 421800
医药生物 : 600216.XSHG, 15.584448, 335300
商业贸易 : 002024.XSHE, 10.290995, 481100
家用电器 : 000651.XSHE, 5.837902, 623700
建筑建材 : 601117.XSHG, 19.892445, 838900
房地产 : 000897.XSHE, 32.173353, 1113200
有色金属 : 600547.XSHG, 949.914380, 118200
机械设备 : 000157.XSHE, 30.560292, 526900
采掘 : 600188.XSHG, 19.870549, 179800
钢铁 : 000709.XSHE, 130.212328, 1520200
食品饮料 : 600300.XSHG, 100.285020, 1076800
2011-07-05 00:00:00
交运设备 : 600104.XSHG, 30.278670, 359900
交通运输 : 600029.XSHG, 159.996161, 804300
信息服务 : 600271.XSHG, 18.554824, 256400
公用事业 : 600900.XSHG, 30.288765, 964700
农林牧渔 : 000876.XSHE, 16.770247, 314800
化工 : 000059.XSHE, 52.574421, 440800
医药生物 : 600518.XSHG, 14.594103, 904600
商业贸易 : 002024.XSHE, 10.591486, 474500
家用电器 : 000651.XSHE, 10.057383, 595800
建筑建材 : 600585.XSHG, 19.600357, 231400
房地产 : 000631.XSHE, 40.536041, 1370900
有色金属 : 600111.XSHG, 109.240872, 255400
机械设备 : 000039.XSHE, 57.594695, 290000
采掘 : 601001.XSHG, 15.730951, 350000
钢铁 : 600516.XSHG, 407.299490, 551700
食品饮料 : 600132.XSHG, 17.648762, 105700
2011-09-28 00:00:00
交运设备 : 600104.XSHG, 21.918292, 381800
交通运输 : 600221.XSHG, 63.193351, 1851600
信息服务 : 600271.XSHG, 14.206672, 211700
公用事业 : 600674.XSHG, 25.243519, 1662700
农林牧渔 : 000876.XSHE, 24.967820, 279200
化工 : 000059.XSHE, 25.787124, 568800
医药生物 : 600518.XSHG, 15.576307, 793800
商业贸易 : 002024.XSHE, 8.403357, 528100
家用电器 : 000651.XSHE, 9.330746, 631900
建筑建材 : 600585.XSHG, 306.156492, 316400
房地产 : 000631.XSHE, 31.578629, 1362600
有色金属 : 600111.XSHG, 200.004115, 290700
机械设备 : 000039.XSHE, 53.399231, 348500
采掘 : 600188.XSHG, 28.178807, 194500
钢铁 : 000898.XSHE, 2738.223747, 1032200
食品饮料 : 600809.XSHG, 18.768502, 156500
2011-12-28 00:00:00
交运设备 : 600104.XSHG, 17.063323, 385900
交通运输 : 000089.XSHE, 35.753107, 1126000
信息服务 : 600588.XSHG, 14.781967, 473400
公用事业 : 000685.XSHE, 46.858354, 805300
农林牧渔 : 000876.XSHE, 26.901091, 281600
化工 : 000422.XSHE, 26.961147, 393900
医药生物 : 600518.XSHG, 16.171002, 839200
商业贸易 : 600694.XSHG, 34.616035, 158900
建筑建材 : 600585.XSHG, 34.849863, 325600
房地产 : 000631.XSHE, 36.914683, 1842100
有色金属 : 000807.XSHE, 263.555174, 958000
机械设备 : 600031.XSHG, 29.957499, 410900
采掘 : 601001.XSHG, 12.862060, 383400
钢铁 : 600307.XSHG, 26.649657, 1276300
食品饮料 : 600300.XSHG, 25.273663, 1180800
2012-03-30 00:00:00
交运设备 : 600104.XSHG, 18.909886, 426800
交通运输 : 000089.XSHE, 35.166259, 1278400
信息服务 : 600271.XSHG, 16.981212, 314400
公用事业 : 000685.XSHE, 48.707469, 871200
化工 : 000422.XSHE, 28.601842, 413000
医药生物 : 600518.XSHG, 15.576615, 867900
商业贸易 : 600694.XSHG, 32.895471, 212700
建筑建材 : 600585.XSHG, 20.132624, 371300
房地产 : 000402.XSHE, 36.743106, 936400
有色金属 : 000612.XSHE, 3797.404448, 760600
机械设备 : 600031.XSHG, 27.121428, 466400
采掘 : 601001.XSHG, 11.694587, 432800
钢铁 : 600010.XSHG, 81.043473, 1722100
食品饮料 : 600300.XSHG, 24.462883, 813200
2012-07-02 00:00:00
交运设备 : 600066.XSHG, 28.154927, 670000
交通运输 : 000089.XSHE, 39.622036, 1276300
信息服务 : 600588.XSHG, 34.751230, 504100
公用事业 : 000685.XSHE, 35.456503, 856900
化工 : 600251.XSHG, 24.002774, 567000
医药生物 : 600196.XSHG, 14.593144, 512900
商业贸易 : 600694.XSHG, 17.596119, 168100
家用电器 : 000100.XSHE, 162.404051, 2648600
建筑建材 : 600585.XSHG, 22.135445, 368200
房地产 : 600663.XSHG, 59.464286, 431300
有色金属 : 600456.XSHG, 186.015637, 274800
机械设备 : 600031.XSHG, 28.231175, 399400
采掘 : 600123.XSHG, 8.183554, 307700
钢铁 : 600307.XSHG, 31.022309, 1541900
食品饮料 : 600519.XSHG, 23.296690, 25300
2012-09-24 00:00:00
交运设备 : 600150.XSHG, 86.708491, 234500
交通运输 : 000089.XSHE, 39.383480, 1313100
信息服务 : 600271.XSHG, 80.422510, 337800
公用事业 : 000685.XSHE, 35.061598, 963300
化工 : 000422.XSHE, 20.686581, 413900
医药生物 : 600518.XSHG, 18.695275, 634200
商业贸易 : 600694.XSHG, 34.618859, 136600
家用电器 : 000651.XSHE, 14.583746, 537700
建筑建材 : 601117.XSHG, 11.177778, 773300
房地产 : 000046.XSHE, 907.969889, 1432000
有色金属 : 600456.XSHG, 57.602414, 290200
机械设备 : 000157.XSHE, 27.342064, 635600
采掘 : 600123.XSHG, 9.754217, 290300
钢铁 : 000825.XSHE, 43.268790, 1516400
食品饮料 : 002304.XSHE, 19.892648, 63800
2012-12-24 00:00:00
交运设备 : 600066.XSHG, 26.100632, 614600
交通运输 : 601107.XSHG, 116.863379, 1556200
信息服务 : 600271.XSHG, 48.157093, 378300
公用事业 : 600008.XSHG, 58.545444, 1219100
化工 : 000422.XSHE, 16.611969, 460200
医药生物 : 600518.XSHG, 25.176992, 777700
商业贸易 : 600694.XSHG, 24.983091, 170800
家用电器 : 000651.XSHE, 18.691066, 433900
建筑建材 : 601117.XSHG, 15.471286, 647900
房地产 : 600895.XSHG, 294.473466, 754600
有色金属 : 601899.XSHG, 147.629408, 1435300
机械设备 : 600312.XSHG, 325.920975, 680700
采掘 : 600123.XSHG, 9.751122, 266000
钢铁 : 000825.XSHE, 88.335062, 1438800
食品饮料 : 600519.XSHG, 21.102387, 25900
2013-03-28 00:00:00
交运设备 : 600150.XSHG, 38.141684, 255100
交通运输 : 601107.XSHG, 124.017399, 1667100
信息服务 : 600271.XSHG, 37.765484, 379400
公用事业 : 600011.XSHG, 70.219799, 848200
农林牧渔 : 000876.XSHE, 126.213409, 422400
化工 : 600309.XSHG, 20.922440, 309400
医药生物 : 600518.XSHG, 23.752800, 585800
商业贸易 : 002024.XSHE, 17.212139, 796100
家用电器 : 000651.XSHE, 17.939662, 408700
建筑建材 : 601117.XSHG, 15.867114, 552900
房地产 : 600895.XSHG, 294.490930, 811000
有色金属 : 601899.XSHG, 144.656562, 1639000
机械设备 : 600312.XSHG, 304.909865, 581300
采掘 : 600583.XSHG, 55.129969, 802800
钢铁 : 000825.XSHE, 123.683741, 1554900
食品饮料 : 600519.XSHG, 21.180904, 36000
2013-07-02 00:00:00
交运设备 : 000625.XSHE, 114.535214, 552700
交通运输 : 000089.XSHE, 41.398885, 1385600
信息服务 : 600804.XSHG, 7.150407, 422300
公用事业 : 601139.XSHG, 271.722329, 581200
化工 : 600309.XSHG, 34.933967, 311000
医药生物 : 600518.XSHG, 8.240444, 498800
商业贸易 : 600694.XSHG, 25.571651, 184100
家用电器 : 000651.XSHE, 11.454882, 447500
建筑建材 : 601668.XSHG, 20.426365, 1637400
房地产 : 000046.XSHE, 35.341020, 1079900
有色金属 : 601899.XSHG, 139.891359, 2220300
机械设备 : 600312.XSHG, 97.669502, 512400
采掘 : 600583.XSHG, 33.244083, 748900
钢铁 : 600019.XSHG, 93.875140, 1296600
食品饮料 : 000895.XSHE, 17.037947, 193200
2013-09-26 00:00:00
交运设备 : 000625.XSHE, 142.122140, 558000
交通运输 : 000089.XSHE, 44.337186, 1395800
信息服务 : 600804.XSHG, 13.150377, 303700
公用事业 : 600886.XSHG, 36.863455, 1607000
化工 : 600309.XSHG, 25.442594, 367000
医药生物 : 600196.XSHG, 11.686152, 438500
商业贸易 : 600655.XSHG, 6.632367, 651100
建筑建材 : 600528.XSHG, 25.614124, 1033400
房地产 : 002244.XSHE, 48.302567, 1420900
有色金属 : 600489.XSHG, 876.140851, 584300
机械设备 : 600312.XSHG, 118.116765, 585800
采掘 : 600583.XSHG, 36.158939, 793600
钢铁 : 000825.XSHE, 10.851036, 2157800
食品饮料 : 600519.XSHG, 13.133058, 47600
2013-12-26 00:00:00
交运设备 : 000625.XSHE, 89.622325, 495200
交通运输 : 000089.XSHE, 41.127229, 1326900
信息服务 : 600804.XSHG, 18.757929, 406600
公用事业 : 600027.XSHG, 111.988911, 2078600
化工 : 600352.XSHG, 27.120396, 908000
医药生物 : 600161.XSHG, 20.161769, 262600
商业贸易 : 600500.XSHG, 9.151041, 810200
建筑建材 : 600585.XSHG, 40.048519, 347000
房地产 : 000046.XSHE, 31.540756, 1305800
有色金属 : 600497.XSHG, 26.848059, 602300
机械设备 : 600312.XSHG, 49.129871, 573500
采掘 : 600583.XSHG, 38.696328, 755100
钢铁 : 000825.XSHE, 1.620364, 2231100
食品饮料 : 600519.XSHG, 15.203512, 50900
2014-03-28 00:00:00
交通运输 : 000089.XSHE, 57.025247, 1288900
公用事业 : 600886.XSHG, 29.920482, 1177500
化工 : 600352.XSHG, 34.851128, 663100
医药生物 : 600664.XSHG, 8.847229, 861800
商业贸易 : 600694.XSHG, 10.188886, 203400
国防军工 : 000768.XSHE, 15.368459, 584700
建筑装饰 : 600820.XSHG, 47.412512, 994900
房地产 : 000046.XSHE, 38.909941, 1148300
有色金属 : 600497.XSHG, 28.310791, 573100
机械设备 : 600835.XSHG, 16.508934, 257400
汽车 : 000625.XSHE, 86.397775, 552900
电气设备 : 600312.XSHG, 35.927563, 402100
计算机 : 600100.XSHG, 8.826704, 530600
采掘 : 600583.XSHG, 58.070124, 669400
钢铁 : 000825.XSHE, 1.617123, 2131300
食品饮料 : 600519.XSHG, 16.279505, 35700
2014-06-26 00:00:00
交通运输 : 000089.XSHE, 37.823741, 1315200
公用事业 : 600674.XSHG, 34.934140, 842600
化工 : 600352.XSHG, 29.599356, 680000
医药生物 : 002007.XSHE, 15.935101, 196000
商业贸易 : 000061.XSHE, 858.871568, 512100
国防军工 : 600118.XSHG, 6.488620, 284900
家用电器 : 600839.XSHG, 71.112703, 1583000
建筑装饰 : 601186.XSHG, 8.365248, 1104900
房地产 : 600239.XSHG, 564.094438, 1540200
有色金属 : 600111.XSHG, 29.080872, 375500
机械设备 : 000528.XSHE, 15.807318, 841400
汽车 : 000951.XSHE, 1596.494204, 421700
电气设备 : 002202.XSHE, 12.785842, 534100
计算机 : 000021.XSHE, 14.081832, 839100
采掘 : 600583.XSHG, 48.024740, 672600
钢铁 : 601003.XSHG, 28.696162, 2283900
食品饮料 : 600519.XSHG, 22.505981, 34000
2014-09-19 00:00:00
交通运输 : 000089.XSHE, 37.736841, 1403600
公用事业 : 600674.XSHG, 25.079282, 787100
化工 : 600688.XSHG, 188.636319, 1673400
医药生物 : 000623.XSHE, 17.549571, 363500
商业贸易 : 000061.XSHE, 123.977950, 555100
国防军工 : 600118.XSHG, 6.782743, 273900
建筑装饰 : 601186.XSHG, 5.159384, 1216400
房地产 : 600239.XSHG, 6068.206329, 1379400
有色金属 : 000969.XSHE, 46.723918, 616600
机械设备 : 000039.XSHE, 14.453034, 414400
汽车 : 000625.XSHE, 25.819080, 486400
电气设备 : 002202.XSHE, 33.252376, 570900
计算机 : 000021.XSHE, 36.036769, 946700
采掘 : 601001.XSHG, 52.806971, 961500
钢铁 : 600005.XSHG, 40.192879, 2705800
食品饮料 : 600519.XSHG, 26.104634, 39300
2014-12-19 00:00:00
交通运输 : 000089.XSHE, 27.584352, 1245200
公用事业 : 600674.XSHG, 53.839932, 800900
化工 : 600352.XSHG, 40.059302, 891300
医药生物 : 000623.XSHE, 15.455563, 234000
商业贸易 : 000061.XSHE, 52.779162, 640700
国防军工 : 600879.XSHG, 3.075249, 484500
家用电器 : 000100.XSHE, 9.096006, 2101200
建筑装饰 : 600068.XSHG, 6.882331, 929000
房地产 : 600239.XSHG, 67.767563, 1517300
有色金属 : 601168.XSHG, 132.989485, 894800
机械设备 : 000039.XSHE, 19.252980, 348100
汽车 : 000625.XSHE, 21.574376, 476200
电气设备 : 002202.XSHE, 47.553600, 613000
计算机 : 600588.XSHG, 10.384352, 336200
采掘 : 600583.XSHG, 41.950386, 818900
钢铁 : 600005.XSHG, 46.425391, 2349100
食品饮料 : 600132.XSHG, 30.739120, 472600