def plotFrontier( result, label=None, color='black' ):
    # 최적화된 효율적 투자선 출력
        plt.text( result[ 'tan_var' ] ** .5, result[ 'tan_mean' ], 'tangent', verticalalignment='center', color=color )
        plt.scatter( result[ 'tan_var' ] ** .5, result[ 'tan_mean' ], marker='o', color=color )
        plt.plot( result[ 'eff_var' ] ** .5, result[ 'eff_mean' ], label=label, color=color, linewidth=2, marker='D', markersize=9 )
    
    # 첫 번째 최적화 결과를 차트로 출력
    plotAssets( tickers, R, C, color='blue' )
    plotFrontier( opt1, label='Historical returns', color='blue' )
    
    # 두 번째 최적화 결과를 차트로 출력
    plotAssets( tickers, pi+rf, C, color='green' )
    plotFrontier( opt2, label='Implied returns', color='green' )
    
    # 세 번째 최적화 결과를 차트로 출력
    plotAssets( tickers, pi_adj+rf, C, color='red' )
    plotFrontier( opt3, label='Implied returns (adjusted views)', color='red' )
    
    # 차트에 공통된 속성을 지정한다(차트 크기, 제목, 범례, 축 이름 등)
    plt.rcParams[ "figure.figsize" ] = ( 12, 10 )
    plt.grid( alpha=0.3, color='gray', linestyle='--', linewidth=1 )
    plt.title( 'Portfolio optimization' )
    plt.legend( [ 'Historical returns(blue)', 'Implied returns(green)','Implied returns with adjusted views(red)' ] )
    plt.xlabel( 'Variance $\sigma$' )
    plt.ylabel( 'Mean $\mu$' )
    plt.show( )
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.