ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 4.11 FPC • FPC 指标选股 > 来源:https://uqer.io/community/share/55a4bcb4f9f06c6dd1e17f19 ```py 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) ``` ![](https://box.kancloud.cn/2016-07-30_579cbb04593eb.jpg) ``` 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 ```