<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 5.2 Joseph Piotroski 9 F-Score Value Investing Model · 基本面選股系統:Piotroski F-Score ranking system > 來源:https://uqer.io/community/share/56710b1d228e5b8d84f00ac7 ```py from CAL.PyCAL import * import numpy as np from pandas import DataFrame , Series start = '2014-01-01' # 回測起始時間 end = '2015-01-01' # 回測結束時間 benchmark = 'HS300' # 策略參考標準 universe = set_universe('HS300') # 證券池,支持股票和基金 capital_base = 100000 # 起始資金 csvs = [] security_base = {} commission = Commission(buycost=0.0008, sellcost=0.0018) # 傭金萬八 slippage = Slippage() freq = 'd' # 策略類型,'d'表示日間策略使用日線回測,'m'表示日內策略使用分鐘線回測 refresh_rate = 1 # 調倉頻率,表示執行handle_data的時間間隔,若freq = 'd'時間間隔的單位為交易日,若freq = 'm'時間間隔為分鐘 cal = Calendar('China.SSE') def initialize(account): # 初始化虛擬賬戶狀態 pass def handle_data(account): # 每個交易日的買入賣出指令 today = account.current_date.strftime('%Y%m%d') yesterday = cal.advanceDate(account.current_date, '-1B', BizDayConvention.Following).strftime('%Y%m%d') lastyear = cal.advanceDate(account.current_date, '-1Y', BizDayConvention.Following).strftime('%Y%m%d') # 去除ST股 try: STlist = DataAPI.SecSTGet(secID=account.universe, beginDate=yesterday, endDate=yesterday, field=['secID']).tolist() account.universe = [s for s in account.universe if s not in STlist] except: pass # 去除流動性差的股票 tv = account.get_attribute_history('turnoverValue', 20) mtv = {sec: sum(tvs)/20. for sec,tvs in tv.items()} account.universe = [s for s in account.universe if mtv.get(s, 0) >= 10**7] # 去除新上市或復牌的股票 opn = account.get_attribute_history('openPrice', 1) account.universe = [s for s in account.universe if not (np.isnan(opn.get(s, 0)[0]) or opn.get(s, 0)[0] == 0)] # 調倉部分注意倉位控制,盡量滿足80%股票倉位和單只股票不超過10%的條件 #return buylist = [] selllist = [] getData_yesterday = Series() getData_lastyear = Series() #取上一個交易日的數據,用于指標打分 getData_yesterday = DataAPI.MktStockFactorsOneDayGet(tradeDate=yesterday,secID=account.universe,field=['secID','LFLO','ROA','OperCashGrowRate','CurrentRatio','DebtEquityRatio','GrossIncomeRatio','TotalAssetsTRate'],pandas="1") getData_yesterday.drop_duplicates('secID', inplace = True) getData_yesterday = getData_yesterday.sort('LFLO', ascending=True)[0:100] getData_yesterday.set_index('secID',inplace=True) getData_yesterday.dropna(inplace = True) #取一年前的數據,用于指標打分 getData_lastyear = DataAPI.MktStockFactorsOneDayGet(tradeDate=lastyear,secID=account.universe,field=['secID','LFLO','ROA','OperCashGrowRate','CurrentRatio','DebtEquityRatio','GrossIncomeRatio','TotalAssetsTRate'],pandas="1") getData_lastyear.drop_duplicates('secID', inplace = True) getData_lastyear.set_index('secID',inplace=True) getData_lastyear.dropna(inplace = True) totallist = list(set(getData_yesterday.index)&set(getData_lastyear.index)) for s in totallist: ROA1 = getData_yesterday[s]['ROA']>0 ROA2 = getData_yesterday[s]['ROA']>getData_lastyear[s]['ROA'] OperCashGrowRate = getData_yesterday[s]['CurrentRatio']>0 CurrentRatio = getData_yesterday[s]['CurrentRatio']>getData_lastyear[s]['CurrentRatio'] DebtEquityRatio = getData_yesterday[s]['DebtEquityRatio']<getData_lastyear[s]['DebtEquityRatio'] GrossIncomeRatio = getData_yesterday[s]['GrossIncomeRatio']>getData_lastyear[s]['GrossIncomeRatio'] TotalAssetsTRate = getData_yesterday[s]['TotalAssetsTRate']>getData_lastyear[s]['TotalAssetsTRate'] Scores = int(ROA1)+int(ROA2)+int(OperCashGrowRate)+int(CurrentRatio)+int(DebtEquityRatio)+int(GrossIncomeRatio)+int(TotalAssetsTRate) if Scores>=6: buylist.append(s) for s in account.valid_secpos: if s not in buylist: order_to(s, 0) for s in buylist: if len(buylist)>=10: order(s, account.referencePortfolioValue/len(buylist)/account.referencePrice[s]) else: order_pct_to(s, 0.1) for s in account.valid_secpos: if account.referencePrice[s] * account.valid_secpos[s] / account.referencePortfolioValue >0.1: order_pct_to(s, 0.1) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看