9 B) N9 g/ [8 G: l$ q' q1 Y C接下来我们就要考虑如何评估股票的价值和风险呢?* Z8 m' s u0 k9 l( p
: x# V+ ~& g( U, ]' {( [
对于一只好的股票,我们希望股票的增幅越大越好,体现在数学上,就是曲线的斜率越大越好。 $ A0 _/ u2 n7 ]: q4 g6 k7 y' S! q/ q% z- i: ^" l& P+ w
对于风险,则可用最大回撤率来描述更合适,什么是最大回撤率?2 A$ y! o# k0 E; d' _7 I! g. `
. G, G z2 Z6 `# [ b. E 最大回撤率的公式可以这样表达:- ]8 d: y, ^# V) r. Z: q7 @
+ U* Y V+ q* N1 w" V
D为某一天的净值,i为某一天,j为i后的某一天,Di为第i天的产品净值,Dj则是Di后面某一天的净值0 O4 Q9 B7 n- |
+ U# Y4 V* Z" y7 q* Hdrawdown=max(Di-Dj)/Di,drawdown就是最大回撤率。其实就是对每一个净值进行回撤率求值,然后找出最大的。可以使用程序实现。最大回撤率越大,说明该股票的风险越高。所以最大回撤率越小,股票越好。# q$ S+ E8 }9 Y& Z0 y% D9 A \+ v& H/ a
0 {5 Y7 ~3 u' d: }2 j. a$ p
斜率和最大回撤率不妨一个一个来解决。我们先来看如何计算曲线的斜率。对于这个问题,比较简单,由于从数据的可视化结果来看,数据近似成线性,所以不妨用多项式拟合的方法来拟合该改组数据的方程,这样我们就可以得到斜率。 ; M" \! n7 w1 X) x: Y5 |1 y % R; q. T+ T) V2 }; F2 N/ bStep2.3:通过polyfit()多项式拟合的命令,并计算股票的价值,具体代码为:1 m8 |3 z# j- s" F' X/ E+ o, {: ^
6 I! \ ~* g! V0 U3 Q3 u# ?1 u
>> p = polyfit(DateNum,Pclose,1); % 多项式拟合 * g r1 b% Q6 W0 F' g4 l8 `9 Z. s( I
>> value = p(1) % 将斜率赋值给value,作为股票的价值 5 v! U; o: i5 Q4 K! p' S8 ?8 M5 C0 `) w8 r- I
value = 3 T/ s# ?* z: _! p, z( H( P 7 Q& S% R% k; ~2 @. ^, G6 k5 | 0.12128 a/ M X% }& n3 ^& V
0 K& |' t# m1 s# I
代码分析:%后面的内容是注释。polyfit()有三个参数,前两个大家都能明白是什么意思,那第三个参数是什么意思呢?它表示多项式的阶数,也就是最高次数。比如:在本例中,第三个参数为1,说明其为一次项,即一次函数。第三个参数为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。polyfit()返回阶数为 n 的多项式 p(x) 的系数,p 中的系数按降幂排列。在本例中的P(1)指的是最高项的系数,即斜率。; j: l/ j( W6 N( Z5 g( p! d- M- t& U
' x0 a2 R; A. I - G G' ?9 H+ v2 ^- q 图5 $ I1 S' o1 R I/ K( m( K 3 C a+ @* a* E0 I三、总结与感悟。 8 Y1 Y. a: M# E6 f. `- P7 a+ i8 V, w6 C/ O) z5 P
总结:通过这次学习,我了解到Matlab在数学建模竞赛中使用广泛;在评估股票价值与风险的小实例中,我掌握了用Matlab去建模的基本方法和步骤;在回归算法的学习过程中,我掌握了一元线性回归、一元非线性回归、多元线性回归、逐步回归、逻辑回归的算法。& ?- V4 U# _4 U