mujijin每日检测

来源:互联网 发布:youxi域名 编辑:程序博客网 时间:2024/06/06 17:12


%% 每日监测数据 日期范围是20151231-20150805
%本程序主要是针对于一个母基金进行运算的,首先一个母基金包含了多个子基金,子基金中包含了
%通过0000100001 在产品表中找到隶属于他的产品,然后使用这三个数值来进行运算
%select productCode,productName,parentProductCode,accountType from product WHERE parentProductCode='0000100001' 
%债券杠杆率   暂时不用。      
%% 1
Fcode = '0000100001';%子基金名称
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select productCode,productName,parentProductCode,accountType from product WHERE parentProductCode=0000100001'];
%command ='select productCode,productName,parentProductCode,accountType from product WHERE parentProductCode=Fcode';
cursor = exec(conn,command);
result = fetch(cursor);
Sdata = result.Data; %已经将数据正确的读入到表中
Titles = {'子基金产品代码','子基金产品名称','父亲结点','accountType'};
Database.Titles = Titles;
Database.Data = Sdata;
%save('account04.mat','-struct','Database');%保存数据格式
close(cursor);
close(conn);




%% 2计算股票产品  {'000010000100002'} {'优势1号'} {'0000100001'} {'股票'}
[m1,n1]=size(Sdata);
pcode = Sdata{2,1};
if strcmp(Sdata(2,4),'股票')==1
   fprintf('股票'); 
   stockCode = pcode;
end    
%% 3计算期货产品  {'000010000100001'} {'优势一号'} {'0000100001'} {'期货'}
pcode = Sdata{1,1};
if strcmp(Sdata(2,4),'期货')==1
   fprintf('期货'); 
   futrueCode = pcode;
end   
%% 4先求子基金,然后要子基金合并,首先从account表中拉取需要的数据,然后在positions_history中拉取数据。
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingday,netvalue,equity,avaiableMoney,margin from account WHERE productCode = 0000100001 and tradingday >= 20160805 ORDER BY tradingDay'];
cursor = exec(conn,command);
result = fetch(cursor);
DataAcc = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','净值','总权益','avaiableMoney','期货保证金'};
Database.Titles = Titles;
Database.Data = DataAcc;
%save('account04.mat','-struct','Database');%保存数据格式
close(cursor);
close(conn);
%load('account04.mat')
%当日盈亏是就算是收益率序列,用净值求得
%% 5 stockCode 000010000100002 股票权益','账户现金
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingday,equity,avaiableMoney from account WHERE productCode = 000010000100002 and tradingday >= 20160805 ORDER BY tradingDay'];
cursor = exec(conn,command);
result = fetch(cursor);
stockData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','股票权益','账户现金'};
Database.Titles = Titles;
Database.Data = stockData;
close(cursor);
close(conn);


%% 6 futrueCode 000010000100001 期货权益  期货结算准备金
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingday,equity,avaiableMoney from account WHERE productCode = 000010000100001 and tradingday >= 20160805 ORDER BY tradingDay'];
cursor = exec(conn,command);
result = fetch(cursor);
futrueData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','期货权益','期货结算准备金'};
Database.Titles = Titles;
Database.Data = futrueData;
close(cursor);
close(conn);


%% 7 进入position_history 求得股票市值,股票市值是由某日的全部持有股票累加而得。
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingDay,direction,productCode,productName,instrumentCode,marketValue from positions_history WHERE productCode = 000010000100002 and tradingday >= 20160805 ORDER BY tradingDay'];
cursor = exec(conn,command);
result = fetch(cursor);
marketValueData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','操作','子基金代码','子基金产品名','股票代码','单只股票市值'};
Database.Titles = Titles;
Database.Data = marketValueData;
close(cursor);
close(conn);
%将marketValueData 中每一个同日期下的数据进行相加,并构建新表,日期,子基金代码,子基金产品名,总股票市值累加
[m2,n2]=size(marketValueData);
pp01=cell2mat(marketValueData(:,1));
pp02=unique(pp01);
[m3,n3]=size(pp02);
tt=0;
for j=1:m3
    for i=1:m2
        bb =pp02(j);
        aa =marketValueData{i,1};
        if bb==aa
           tt = tt+marketValueData{i,6};  
        end    
    end     
    marketData{j,1}=pp02(j,1);
    marketData{j,2}=marketValueData{1,3};
    marketData{j,3}=marketValueData{1,4};
    marketData{j,4}=tt;
    tt=0;
end




%% 8 股票仓位 = 股票市值/股票权益 由5 7 两步求得 stockData marketData


%[m10,n10]=size(stockData);
%[m11,n11]=size(marketData);


%kmin = min(m10,m11);
%for i=1:kmin
    %aa=stockData{i,1};
    %ab=marketData{i,1};
    %if aa==ab
        %StockPositions(i,1)=stockData(i,1); 
        %StockPositions(i,2)=marketData(i,4)/stockData(i,2);
    %end
%StockPositions(i,1)


%end
%% 9 期货仓位 = (股指期货+商品)/总权值 4 6 两步已经求得 , 期货保证金(margin)accont下求得
[m12,n12]=size(DataAcc);
[m13,n13]=size(futrueData);


kmin = min(m12,m13);
for i=1:kmin
    aa=DataAcc{i,1};
    ab=futrueData{i,1};
    if strcmp(aa,ab)==1
        %fprintf('有匹配的')
        futurepos(i,1)=futrueData(i,1); 
        futurepos{i,2}=futrueData{i,2}/DataAcc{i,3};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配9');
    end
end
%futurepos 期货仓位




%% 10  股指期货多头市值 多开 买入 必须 IC IH IF 
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingDay,direction,productCode,instrumentCode,marketValue from positions_history WHERE productCode = 000010000100001 and tradingday >= 20160805 ORDER BY tradingDay' ];
cursor = exec(conn,command);
result = fetch(cursor);
futureValueData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','操作','子基金代码','子基金产品名','股票代码','单只股票市值'};
Database.Titles = Titles;
Database.Data = futureValueData;
close(cursor);
close(conn);


%将marketValueData 中每一个同日期下的数据进行相加,并构建新表,日期,子基金代码,子基金产品名,总股票市值累加
[m4,n4]=size(futureValueData);
pp03=cell2mat(futureValueData(:,1));
pp04=unique(pp03);
[m5,n5]=size(pp04);


dd=0; %多开和买入
for j=1:m5
    for i=1:m4
        bb =pp04(j);
        aa =futureValueData{i,1};
        if bb==aa
           dk=futureValueData{i,2};
           if strcmp(dk,'多开')||strcmp(dk,'买入')
               %判断是否是股指
               strarray= futureValueData{i,4};
               str ={'IC','IH','IF'};
               %SSt= strmatch(str(2), strarray);
               yes=0;
               for i=1:3
                   SSt= strmatch(str(i), strarray);
                   if SSt==1
                      yes=1;
                   end
               end       
               if yes==1 %是股指期货
                  dd = dd+futureValueData{i,5};
               end
           end
        end 
    end     
   marketData01{j,1}=pp04(j,1);
   marketData01{j,2}=futureValueData{1,3};
   marketData01{j,3}=futureValueData{1,4};
   marketData01{j,4}=dd;
    dd=0;
end


%% 11 股指期货空头市值 空开 卖出 必须 IC IH IF 
[m6,n6]=size(futureValueData);
pp06=cell2mat(futureValueData(:,1));
pp08=unique(pp06);
[m8,n5]=size(pp08);
kk=0; %多开和买入
for j=1:m8
    for i=1:m6
        bb =pp08(j);
        aa =futureValueData{i,1};
        if bb==aa
           dk=futureValueData{i,2};
           if strcmp(dk,'空开')||strcmp(dk,'卖出')               
               %判断是否是股指
               strarray= futureValueData{i,4};
               str ={'IC','IH','IF'};
               %SSt= strmatch(str(2), strarray);
               for i=1:3
                   SSt= strmatch(str(i), strarray);
                   if SSt==1
                      yes=1
                   end
               end       
               if yes==1 %是股指期货
                  kk = kk+futureValueData{i,5};  
               end
           end
        end 
    end     
    marketData02{j,1}=pp08(j,1);
    marketData02{j,2}=futureValueData{1,3};
    marketData02{j,3}=futureValueData{1,4};
    marketData02{j,4}=kk;
    kk=0;
end




%% 12 股指期货净市值 = 股指期货多头-股指期货空头 可能为负值  对冲市值就是, 空头市值
%marketData01 marketData02


[m14,n14]=size(marketData01);
[m16,n16]=size(marketData02);




kmin = min(m14,m16);
for i=1:kmin
    aa=marketData01{i,1};
    ab=marketData02{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的12')
        futurejing(i,1)=marketData01(i,1); 
        futurejing{i,2}=marketData01{i,4}-marketData02{i,4};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配12');
    end
end


%% 13 商品期货多头市值  排除股指 开头不能是 IC IH IF 
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingDay,direction,productCode,instrumentCode,marketValue from positions_history WHERE productCode = 000010000100001 and tradingday >= 20160805 ORDER BY tradingDay' ];
cursor = exec(conn,command);
result = fetch(cursor);
futureValueData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','操作','子基金代码','子基金产品名','股票代码','单只股票市值'};
Database.Titles = Titles;
Database.Data = futureValueData;
close(cursor);
close(conn);


%将marketValueData 中每一个同日期下的数据进行相加,并构建新表,日期,子基金代码,子基金产品名,总股票市值累加
[m4,n4]=size(futureValueData);
pp03=cell2mat(futureValueData(:,1));
pp04=unique(pp03);
[m5,n5]=size(pp04);


dd=0; %多开和买入
for j=1:m5
    for i=1:m4
        bb =pp04(j);
        aa =futureValueData{i,1};
        if bb==aa
           dk=futureValueData{i,2};
           if strcmp(dk,'多开')||strcmp(dk,'买入')


               %判断是否是股指
               strarray= futureValueData{i,4};
               str ={'IC','IH','IF'};
               %SSt= strmatch(str(2), strarray);
               yes=0;
               for i=1:3
                   SSt= strmatch(str(i), strarray);
                   if SSt==1
                      yes=1
                   end
               end       
               if yes==0 %不是股指期货
                  dd = dd+futureValueData{i,5};
               end


           end
        end 
    end     
   marketData03{j,1}=pp04(j,1);
   marketData03{j,2}=futureValueData{1,3};
   marketData03{j,3}=futureValueData{1,4};
   marketData03{j,4}=dd;
   dd=0;
end




%% 14 商品期货空头市值  排除股指 开头不能是 IC IH IF 
conn=database('report','uxmc','uxmc-123', 'com.mysql.jdbc.Driver','jdbc:mysql://report001.mysql.rds.aliyuncs.com/report');
ping(conn);
command =['select tradingDay,direction,productCode,instrumentCode,marketValue from positions_history WHERE productCode = 000010000100001 and tradingday >= 20160805 ORDER BY tradingDay' ];
cursor = exec(conn,command);
result = fetch(cursor);
futureValueData = result.Data; %已经将数据正确的读入到表中
Titles = {'日期','操作','子基金代码','子基金产品名','股票代码','单只股票市值'};
Database.Titles = Titles;
Database.Data = futureValueData;
close(cursor);
close(conn);


%将marketValueData 中每一个同日期下的数据进行相加,并构建新表,日期,子基金代码,子基金产品名,总股票市值累加
[m4,n4]=size(futureValueData);
pp03=cell2mat(futureValueData(:,1));
pp04=unique(pp03);
[m5,n5]=size(pp04);


dd=0; %多开和买入
for j=1:m5
    for i=1:m4
        bb =pp04(j);
        aa =futureValueData{i,1};
        if bb==aa
           dk=futureValueData{i,2};
           if strcmp(dk,'多开')||strcmp(dk,'买入')
               %判断是否是股指
               strarray= futureValueData{i,4};
               str ={'IC','IH','IF'};
               %SSt= strmatch(str(2), strarray);
               yes=0;
               for i=1:3
                   SSt= strmatch(str(i), strarray);
                   if SSt==1
                      yes=1
                   end
               end       
               if yes==0 %不是股指期货
                  dd = dd+futureValueData{i,5};
               end


           end
        end 
    end     
    marketData04{j,1}=pp04(j,1);
    marketData04{j,2}=futureValueData{1,3};
    marketData04{j,3}=futureValueData{1,4};
    marketData04{j,4}=dd;
    dd=0;
end


%% 15 商品非轧差市值合计 这个是商品多头市值+ 商品空头市值


[m103,n103]=size(marketData03);
[m104,n104]=size(marketData04);




kmin = min(m103,m104);
for i=1:kmin
    aa=marketData03{i,1};
    ab=marketData04{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的15')
        shangpinfei(i,1)=marketData03(i,1); 
        shangpinfei{i,2}=marketData03{i,4}+marketData04{i,4};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配15');
    end
end


%% 16 商品总市值/总权益
[m105,n105]=size(shangpinfei);
[m106,n106]=size(DataAcc);




kmin = min(m105,m106);
for i=1:kmin
    aa=shangpinfei{i,1};
    ab=DataAcc{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的16')
        feibizhi(i,1)=DataAcc(i,1); 
        feibizhi{i,2}=shangpinfei{i,2}/DataAcc{i,3};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配16');
    end
end




%% 17 净仓位市值 = 股票 +股指期货(其中股指期货= 股票多头- 股票空头。。。可能为负值)
%stockData  futurejing




[m117,n117]=size(stockData);
[m127,n127]=size(futurejing);


kmin = min(m117,m127);
for i=1:kmin
    aa=stockData{i,1};
    ab=futurejing{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的16')
        jingpos(i,1)=stockData(i,1); 
        jingpos{i,2}=stockData{i,2}+futurejing{i,2};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配16');
    end
end


%% 18 股票(股指)净头寸市值/股票市值比  净市值仓位的比较,股指多 + 股指空/股票市值 (子基金中,为什么这么算呢,因为要通过这个了解他策略的好坏)
[m117,n117]=size(stockData);
[m127,n127]=size(futurejing);


kmin = min(m117,m127);
for i=1:kmin
    aa=stockData{i,1};
    ab=futurejing{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的16')
        jingpos18(i,1)=stockData(i,1); 
        jingpos18{i,2}=futurejing{i,2}/stockData{i,2};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配16');
    end
end


%% 19 股票净头寸/总权益   股票净头寸= 股票- 股指期货
[m117,n117]=size(stockData);
[m127,n127]=size(futurejing);


kmin = min(m117,m127);
for i=1:kmin
    aa=stockData{i,1};
    ab=futurejing{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的16')
        jingpos19(i,1)=stockData(i,1); 
        jingpos19{i,2}=stockData{i,2}-futurejing{i,2};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配16');
    end
end








%% 20 股票市值/总权益   


[m105,n105]=size(stockData);
[m106,n106]=size(DataAcc);


kmin = min(m105,m106);
for i=1:kmin
    aa=stockData{i,1};
    ab=DataAcc{i,1};
    if strcmp(aa,ab)==1
        fprintf('有匹配的16')
        stockbizhi(i,1)=DataAcc(i,1); 
        stockbizhi{i,2}=stockData{i,2}/DataAcc{i,3};
    elseif strcmp(aa,ab)==0
        fprintf('不匹配16');
    end
end




%% 21 累计收益率 当前 - 初始/当前


%% 当前没有解决的问题,





0 0
原创粉丝点击